import moment from "moment";

const years = async (joiningYear :any = Number(moment().format("YYYY")) -5, noOfYears: any) => {
  try {
    const max = Number(moment().format("YYYY"));
    let min = max - noOfYears;
    let yearData = [];
    for (var i = min; i <= max; i++) {
      if(i>=joiningYear) {
        yearData.push(i);
      }
    }
    return yearData;
  } catch (error: any) {
    return [];
  }
};

export const getLast12Months = () => {
  const months = [];
  for (let i = 0; i < 12; i++) {
    const date = moment().subtract(i, "months");
    months.push({
      month: date.format("MM"),
      year: date.format("YYYY"),
    });
  }
  //return months.reverse(); // Reverse to get in chronological order
  return months;
};

export const getCurrentMonthDates = () => {
  const dates = [];
  const currentMonth = moment().month(); // Get current month (0-based index)
  const currentYear = moment().year(); // Get current year

  // Get the number of days in the current month
  const daysInMonth = moment().daysInMonth();

  // Loop through each day of the current month and add to the array
  for (let day = 1; day <= daysInMonth; day++) {
    const date = moment().year(currentYear).month(currentMonth).date(day);
    dates.push({ date: date.format("YYYY-MM-DD") }); // Format date as 'YYYY-MM-DD'
  }

  return dates;
};

export const getLast31Days = () => {
  const dates = [];

  for (let i = 0; i < 31; i++) {
    const date = moment().subtract(i, "days").format("YYYY-MM-DD"); // Subtract i days and format as 'YYYY-MM-DD'
    dates.push({ date: date });
  }

  return dates;
};

export const getMonthDays = (m: any, y: any) => {
  const dates = [];
  let startDate = moment(`${y}-${m}-01`); // Start of the month
  let endDate = moment(startDate).endOf("month"); // End of the month
  while (startDate <= endDate) {
    dates.push({ date: startDate.format("YYYY-MM-DD") });
    startDate.add(1, "days"); // Add 1 day to the start date
  }

  return dates;
};

export const getFinancialYearDates = () => {
  const today = moment();
  const year = today.year();
  const month = today.month() + 1; // Months are 0-based in Moment.js

  let startYear, endYear;

  if (month >= 4) {
    // April to December
    startYear = year;
    endYear = year + 1;
  } else {
    // January to March
    startYear = year - 1;
    endYear = year;
  }

  return {
    startDate: moment(`${startYear}-04-01`, "YYYY-MM-DD").format("YYYY-MM-DD"),
    endDate: moment(`${endYear}-03-31`, "YYYY-MM-DD").format("YYYY-MM-DD"),
  };
};

export default years;
