import { DateTime } from 'luxon';
import { MULTIPLIER_BY_YEAR } from '../../constants/schemeYearMultiplier';

export type SchemeYearlySeedRow = {
  yearNumber: number;
  startDate: string;
  endDate: string;
  percentageOfExecutedCost: number;
};

/** Percent value for DB (e.g. 2.000) from multiplier decimal (e.g. 0.02). */
export function percentFromMultiplier(mult: number): number {
  return Math.round(mult * 100 * 1000) / 1000;
}

/**
 * Build 10 O&M year windows from O&M start date (same calendar rules as computeOmTenYearRows).
 */
export function buildSchemeYearlySeedRows(omStartDateIso: string, timeZone: string): SchemeYearlySeedRow[] {
  const omStart = DateTime.fromISO(String(omStartDateIso).trim().slice(0, 10), { zone: timeZone }).startOf('day');
  if (!omStart.isValid) return [];

  const out: SchemeYearlySeedRow[] = [];
  for (let y = 1; y <= 10; y++) {
    const mult = MULTIPLIER_BY_YEAR[y];
    if (mult === undefined) break;
    const yearStart = omStart.plus({ years: y - 1 });
    const yearEnd = yearStart.plus({ years: 1 }).minus({ days: 1 });
    if (!yearStart.isValid || !yearEnd.isValid) continue;
    out.push({
      yearNumber: y,
      startDate: yearStart.toISODate()!,
      endDate: yearEnd.toISODate()!,
      percentageOfExecutedCost: percentFromMultiplier(mult),
    });
  }
  return out;
}
