import type { AcademicYear } from "./types";

const YEAR_ID_KEY = "admin_academic_year_id";
const YEARS_KEY = "admin_academic_years";
const MODE_KEY = "admin_academic_mode";

export interface AcademicContextState {
  active_academic_year_id: number | null;
  academic_years: AcademicYear[];
  mode: string;
}

export function getAcademicYearId(): number | null {
  if (typeof window === "undefined") return null;
  const raw = localStorage.getItem(YEAR_ID_KEY);
  return raw ? Number(raw) : null;
}

export function setAcademicYearId(id: number) {
  localStorage.setItem(YEAR_ID_KEY, String(id));
}

export function getAcademicYears(): AcademicYear[] {
  if (typeof window === "undefined") return [];
  try {
    return JSON.parse(localStorage.getItem(YEARS_KEY) ?? "[]") as AcademicYear[];
  } catch {
    return [];
  }
}

export function getAcademicMode(): string {
  if (typeof window === "undefined") return "read_write";
  return localStorage.getItem(MODE_KEY) ?? "read_write";
}

export function setAcademicContext(ctx: AcademicContextState) {
  if (ctx.active_academic_year_id) {
    setAcademicYearId(ctx.active_academic_year_id);
  }
  localStorage.setItem(YEARS_KEY, JSON.stringify(ctx.academic_years));
  localStorage.setItem(MODE_KEY, ctx.mode);
}

export function clearAcademicContext() {
  localStorage.removeItem(YEAR_ID_KEY);
  localStorage.removeItem(YEARS_KEY);
  localStorage.removeItem(MODE_KEY);
}

export function isReadOnlyYear(): boolean {
  return getAcademicMode() === "read_only" || getAcademicMode() === "none";
}
