import type {
  MeetingSummaryRow,
  MeetingSummaryStatus,
} from "@/features/pswg/meeting-summary/meeting-summary-data";

export type MeetingSummaryLanguage = "en" | "kh";

export function normalizeMeetingSummaryLanguage(
  language?: string
): MeetingSummaryLanguage {
  if (language === "kh" || language === "km") return "kh";
  return "en";
}

export const meetingSummaryText = {
  en: {
    pageTitle: "All Meeting Summary",
    pageSubtitle: "All Meeting Summary",

    previous: "Previous",
    next: "Next",
    viewDetail: "View Detail",
    exportAsXlsx: "Export as XLSX",
    exporting: "Exporting...",

    viewPage: {
      back: "Back",
      title: "View Meeting Summary",
      breadcrumbRoot: "All Meeting Summary",
      breadcrumbCurrent: "View Meeting Summary",
      loadError: "Could not load meeting summary.",
      notFound: "Meeting summary not found.",
      reviewed: "Reviewed",
      reviewConfirmTitle: "Mark as Reviewed",
      reviewConfirmDescription:
        "Do you want to mark this meeting summary as reviewed?",
      reviewSuccess: "Meeting summary marked as reviewed successfully.",
      confirm: "Confirm",
      cancel: "Cancel",
    },

    filters: {
      status: "Status",
      year: "Year",
      issues: "Number of issues",
    },

    columns: {
      id: "No.",
      summaryTitle: "Summary Title",
      meetingDate: "Meeting Date",
      issueCount: "# of Issue",
      meetingRequest: "Meeting Request",
      meetingSummary: "Meeting Summary",
      governmentAgency: "Government Agency",
      pswg: "PSWG",
      status: "Status",
      meetingPswg: "Meeting PSWG",
      action: "Action",
    } satisfies Partial<Record<keyof MeetingSummaryRow | "action", string>>,
  },

  kh: {
    pageTitle: "របាយការណ៍សង្ខេបកិច្ចប្រជុំទាំងអស់",
    pageSubtitle: "របាយការណ៍សង្ខេបកិច្ចប្រជុំ",

    previous: "មុន",
    next: "បន្ទាប់",
    viewDetail: "មើលលម្អិត",
    exportAsXlsx: "នាំចេញជា XLSX",
    exporting: "កំពុងនាំចេញ...",

    viewPage: {
      back: "ត្រឡប់",
      title: "មើលសង្ខេបកិច្ចប្រជុំ",
      breadcrumbRoot: "របាយការណ៍សង្ខេបកិច្ចប្រជុំទាំងអស់",
      breadcrumbCurrent: "មើលសង្ខេបកិច្ចប្រជុំ",
      loadError: "មិនអាចផ្ទុកសង្ខេបកិច្ចប្រជុំបានទេ។",
      notFound: "រកមិនឃើញសង្ខេបកិច្ចប្រជុំ។",
      reviewed: "បានពិនិត្យ",
      reviewConfirmTitle: "សម្គាល់ថាបានពិនិត្យ",
      reviewConfirmDescription:
        "តើអ្នកចង់សម្គាល់សង្ខេបកិច្ចប្រជុំនេះថាបានពិនិត្យហើយឬ?",
      reviewSuccess: "បានសម្គាល់សង្ខេបកិច្ចប្រជុំថាបានពិនិត្យដោយជោគជ័យ។",
      confirm: "បញ្ជាក់",
      cancel: "បោះបង់",
    },

    filters: {
      status: "ស្ថានភាព",
      year: "ឆ្នាំ",
      issues: "ចំនួនបញ្ហា",
    },

    columns: {
      id: "ល.រ",
      summaryTitle: "ចំណងជើងសង្ខេប",
      meetingDate: "កាលបរិច្ឆេទកិច្ចប្រជុំ",
      issueCount: "ចំនួនបញ្ហា",
      meetingRequest: "សំណើកិច្ចប្រជុំ",
      meetingSummary: "សង្ខេបកិច្ចប្រជុំ",
      governmentAgency: "ស្ថាប័នរាជរដ្ឋាភិបាល",
      pswg: "ក្រុមការងារ",
      status: "ស្ថានភាព",
      meetingPswg: "កិច្ចប្រជុំក្រុមការងារ",
      action: "សកម្មភាព",
    } satisfies Partial<Record<keyof MeetingSummaryRow | "action", string>>,
  },
} as const;

export const meetingSummaryStatusLabels: Record<
  MeetingSummaryStatus,
  { en: string; kh: string }
> = {
  DRAFT: {
    en: "Draft",
    kh: "សេចក្ដីព្រាង",
  },
  REVIEWED: {
    en: "Reviewed",
    kh: "កំពុងពិនិត្យ",
  },
  SUBMITTED: {
    en: "Submitted",
    kh: "បានដាក់ស្នើ",
  },
  COMPLETED: {
    en: "Completed",
    kh: "បានបញ្ចប់",
  },
};

const khmerValueLabels: Record<string, string> = {
  Status: "ស្ថានភាព",
  Year: "ឆ្នាំ",
  "Number of issues": "ចំនួនបញ្ហា",

  Draft: "សេចក្ដីព្រាង",
  Reviewed: "កំពុងពិនិត្យ",
  Submitted: "បានដាក់ស្នើ",
  Completed: "បានបញ្ចប់",

  "1 issue": "១ បញ្ហា",
  "2 issues": "២ បញ្ហា",
  "3 issues": "៣ បញ្ហា",
  "4 issues": "៤ បញ្ហា",
  "5 issues": "៥ បញ្ហា",

  "Meeting Document": "ឯកសារកិច្ចប្រជុំ",
  "Not Uploaded": "មិនទាន់បានបង្ហោះ",
  "Agriculture and Agro-Industry": "កសិកម្ម និងកសិឧស្សាហកម្ម",
  "View Detail": "មើលលម្អិត",

  January: "មករា",
  February: "កុម្ភៈ",
  March: "មីនា",
  April: "មេសា",
  May: "ឧសភា",
  June: "មិថុនា",
  July: "កក្កដា",
  August: "សីហា",
  September: "កញ្ញា",
  October: "តុលា",
  November: "វិច្ឆិកា",
  December: "ធ្នូ",
};

export function translateMeetingSummaryValue(
  value: string | number | boolean | null | undefined,
  language: MeetingSummaryLanguage
) {
  if (value === null || value === undefined) return "";

  const textValue = String(value);

  if (language === "en") return textValue;

  let translated = khmerValueLabels[textValue] ?? textValue;

  Object.entries(khmerValueLabels).forEach(([english, khmer]) => {
    translated = translated.replaceAll(english, khmer);
  });

  return translated;
}
