import type { CdcIssueMatrixRow } from "./cdc-issue-matrix-data";

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

export type CdcIssueMatrixTranslation = {
  title: string;
  breadcrumb: string;
  search: string;
  export: string;
  newIssue: string;
  deleteCdcIssue: string;
  deleteCdcIssueQuestion: string;
  cancel: string;
  issueCreated: string;
  issueUpdated: string;
  issueDeleted: string;
  issueDeleteFailed: string;
  list: string;
  grid: string;
  noData: string;
  viewDetail: string;
  gridCard: {
    no: string;
    ministry: string;
    status: string;
    categoryOfIssue: string;
    issue: string;
    escalation: string;
    issueDescription: string;
    recommendation: string;
    rgcDecision: string;
    remark: string;
    plenary: string;
    notPlenary: string;
  };
  totalIssues: string;
  solved: string;
  inProgress: string;
  notAddressed: string;
  totalPrimaryAgencies: string;
  filters: {
    categories: string;
    status: string;
    pswgs: string;
    year: string;
    plenaryEscalation: string;
    escalated: string;
    notEscalated: string;
  };
  plenaryEscalationDialog: {
    escalateTitle: string;
    escalateDescription: string;
    escalateConfirm: string;
    removeTitle: string;
    removeDescription: string;
    removeConfirm: string;
    cancel: string;
  };
  plenaryEscalationToast: {
    escalated: string;
    removed: string;
    close: string;
  };
  plenaryEscalationError: string;
  statusChangeDialog: {
    title: string;
    description: (status: string) => string;
    confirm: string;
    cancel: string;
  };
  ministryChangeDialog: {
    title: string;
    description: (ministry: string) => string;
    confirm: string;
    cancel: string;
  };
  rowUpdateToast: {
    ministryUpdated: string;
    statusUpdated: string;
  };
  rowUpdateError: string;
  columns: Partial<Record<keyof CdcIssueMatrixRow, string>>;
  detail: {
    back: string;
    pageTitle: string;
    breadcrumb: string;
    submitDetailLabels: {
      submitDetail: string;
      ministryName: string;
      submittedBy: string;
      submissionDate: string;
      status: string;
      categoryOfIssues: string;
      issueDocument: string;
      ministry: string;
      plenaryEscalation: string;
    };
    sections: {
      issueDescription: string;
      recommendation: string;
      rgcDecision: string;
      indicators: string;
      progressSolution: string;
      implementationChallenges: string;
      request: string;
      nextStep: string;
      sourceOfVerification: string;
      linkToVerificationSource: string;
    };
  };
};

export function normalizeCdcIssueMatrixLanguage(
  language?: string,
): IssueMatrixLanguage {
  if (language === "kh" || language === "km") return "kh";
  return "en";
}

export const cdcIssueMatrixText: Record<
  IssueMatrixLanguage,
  CdcIssueMatrixTranslation
> = {
  en: {
    title: "All Issues",
    breadcrumb: "All Issues",
    search: "Search",
    export: "Export",
    newIssue: "New",
    deleteCdcIssue: "Delete Issue",
    deleteCdcIssueQuestion: "Are you sure you want to delete CDC Issue?",
    cancel: "Cancel",
    issueCreated: "Issue created successfully.",
    issueUpdated: "Issue updated successfully.",
    issueDeleted: "Issue deleted successfully.",
    issueDeleteFailed: "Unable to delete issue.",
    list: "List",
    grid: "Grid",
    noData: "No data found",
    viewDetail: "View Detail",
    gridCard: {
      no: "No.",
      ministry: "Ministry",
      status: "Status",
      categoryOfIssue: "Category of Issue",
      issue: "Issue",
      escalation: "Escalation",
      issueDescription: "Issue Description",
      recommendation: "Recommendation",
      rgcDecision: "RGC Decision",
      remark: "Remark",
      plenary: "Plenary",
      notPlenary: "-",
    },

    totalIssues: "Total Issues",
    solved: "Solved",
    inProgress: "In Progress",
    notAddressed: "Not Addressed",
    totalPrimaryAgencies: "Total Primary Agencies",

    filters: {
      categories: "Categories",
      status: "Status",
      pswgs: "PSWGs",
      year: "Year",
      plenaryEscalation: "Plenary Escalation",
      escalated: "Escalated",
      notEscalated: "Not escalated",
    },

    plenaryEscalationDialog: {
      escalateTitle: "Escalate this issue to Plenary?",
      escalateDescription:
        "The issue will be flagged for the plenary so it can be prepared and tracked there.",
      escalateConfirm: "Escalate",
      removeTitle: "Remove this issue from Plenary?",
      removeDescription:
        "The issue will no longer be flagged for the plenary.",
      removeConfirm: "Remove",
      cancel: "Cancel",
    },

    plenaryEscalationToast: {
      escalated: "Issue escalated to Plenary.",
      removed: "Issue removed from Plenary.",
      close: "Close notification",
    },

    plenaryEscalationError: "Unable to update the plenary escalation.",

    statusChangeDialog: {
      title: "Change issue status?",
      description: (status) => `Are you sure you want to change the status to "${status}"?`,
      confirm: "Change status",
      cancel: "Cancel",
    },

    ministryChangeDialog: {
      title: "Change primary ministry?",
      description: (ministry) =>
        `Are you sure you want to change the primary ministry to "${ministry}"?`,
      confirm: "Change ministry",
      cancel: "Cancel",
    },

    rowUpdateToast: {
      ministryUpdated: "Ministry updated.",
      statusUpdated: "Status updated.",
    },

    rowUpdateError: "Unable to update the issue.",

    columns: {
      id: "No.",
      workingGroup: "Working Group Name",
      issue: "Issue",
      category: "Category of Issue",
      issueDescription: "Issue Description",
      recommendation: "Recommendation",
      governmentDecision: "RGC Decision",
      primaryAgency: "Ministry",
      plenaryEscalation: "Plenary Escalation",
      status: "Status",
      nextStep: "Next Step",
      remark: "Remark",
      action: "Action",
    },

    detail: {
      back: "Back",
      pageTitle: "Issue Details",
      breadcrumb: "Issue Detail",
      submitDetailLabels: {
        submitDetail: "Submit Detail",
        ministryName: "Ministry Name",
        submittedBy: "Submitted By",
        submissionDate: "Submission Date",
        status: "Status",
        categoryOfIssues: "Category of Issues",
        issueDocument: "Issue Document",
        ministry: "Private Sector WG",
        plenaryEscalation: "Plenary Escalation",
      },
      sections: {
        issueDescription: "Issues Description",
        recommendation: "Recommendations",
        rgcDecision: "RGC Decision",
        indicators: "Indicators",
        progressSolution: "Progress Solution",
        implementationChallenges: "Implementation Challenges",
        request: "Request",
        nextStep: "Next Step",
        sourceOfVerification: "Source of Verification",
        linkToVerificationSource: "Link to Verification Source",
      },
    },
  },

  kh: {
    title: "បញ្ហាទាំងអស់",
    breadcrumb: "បញ្ហាទាំងអស់",
    search: "ស្វែងរក",
    export: "នាំចេញ",
    newIssue: "ថ្មី",
    deleteCdcIssue: "លុបបញ្ហា",
    deleteCdcIssueQuestion: "តើអ្នកប្រាកដថាចង់លុបបញ្ហា CDC មែនទេ?",
    cancel: "បោះបង់",
    issueCreated: "បានបង្កើតបញ្ហាដោយជោគជ័យ។",
    issueUpdated: "បានកែប្រែបញ្ហាដោយជោគជ័យ។",
    issueDeleted: "បានលុបបញ្ហាដោយជោគជ័យ។",
    issueDeleteFailed: "មិនអាចលុបបញ្ហាបានទេ។",
    list: "បញ្ជី",
    grid: "ក្រឡា",
    noData: "មិនមានទិន្នន័យ",
    viewDetail: "មើលលម្អិត",
    gridCard: {
      no: "ល.រ",
      ministry: "ក្រសួង",
      status: "ស្ថានភាព",
      categoryOfIssue: "ប្រភេទបញ្ហា",
      issue: "បញ្ហា",
      escalation: "ការលើកឡើង",
      issueDescription: "ការពិពណ៌នាបញ្ហា",
      recommendation: "អនុសាសន៍",
      rgcDecision: "សេចក្តីសម្រេចរបស់រាជរដ្ឋាភិបាល",
      remark: "កំណត់សម្គាល់",
      plenary: "អង្គប្រជុំពេញអង្គ",
      notPlenary: "-",
    },

    totalIssues: "បញ្ហាសរុប",
    solved: "បានដោះស្រាយ",
    inProgress: "កំពុងដំណើរការ",
    notAddressed: "មិនទាន់ដោះស្រាយ",
    totalPrimaryAgencies: "ស្ថាប័នទទួលបន្ទុកសរុប",

    filters: {
      categories: "ប្រភេទ",
      status: "ស្ថានភាព",
      pswgs: "ក្រុមការងារ PSWG",
      year: "ឆ្នាំ",
      plenaryEscalation: "ការលើកឡើងក្នុងអង្គប្រជុំពេញអង្គ",
      escalated: "បានលើកឡើង",
      notEscalated: "មិនបានលើកឡើង",
    },

    plenaryEscalationDialog: {
      escalateTitle: "លើកឡើងបញ្ហានេះទៅអង្គប្រជុំពេញអង្គ?",
      escalateDescription:
        "បញ្ហានេះនឹងត្រូវបានសម្គាល់សម្រាប់អង្គប្រជុំពេញអង្គ ដើម្បីរៀបចំ និងតាមដាន។",
      escalateConfirm: "លើកឡើង",
      removeTitle: "ដកបញ្ហានេះចេញពីអង្គប្រជុំពេញអង្គ?",
      removeDescription:
        "បញ្ហានេះនឹងលែងត្រូវបានសម្គាល់សម្រាប់អង្គប្រជុំពេញអង្គទៀតហើយ។",
      removeConfirm: "ដកចេញ",
      cancel: "បោះបង់",
    },

    plenaryEscalationToast: {
      escalated: "បានលើកឡើងបញ្ហាទៅអង្គប្រជុំពេញអង្គ។",
      removed: "បានដកបញ្ហាចេញពីអង្គប្រជុំពេញអង្គ។",
      close: "បិទការជូនដំណឹង",
    },

    plenaryEscalationError: "មិនអាចធ្វើបច្ចុប្បន្នភាពការលើកឡើងបានទេ។",

    statusChangeDialog: {
      title: "ផ្លាស់ប្តូរស្ថានភាពបញ្ហា?",
      description: (status) => `តើអ្នកប្រាកដថាចង់ផ្លាស់ប្តូរស្ថានភាពទៅជា "${status}" មែនទេ?`,
      confirm: "ផ្លាស់ប្តូរស្ថានភាព",
      cancel: "បោះបង់",
    },

    ministryChangeDialog: {
      title: "ផ្លាស់ប្តូរក្រសួងចម្បង?",
      description: (ministry) =>
        `តើអ្នកប្រាកដថាចង់ផ្លាស់ប្តូរក្រសួងចម្បងទៅជា "${ministry}" មែនទេ?`,
      confirm: "ផ្លាស់ប្តូរក្រសួង",
      cancel: "បោះបង់",
    },

    rowUpdateToast: {
      ministryUpdated: "បានធ្វើបច្ចុប្បន្នភាពក្រសួង។",
      statusUpdated: "បានធ្វើបច្ចុប្បន្នភាពស្ថានភាព។",
    },

    rowUpdateError: "មិនអាចធ្វើបច្ចុប្បន្នភាពបញ្ហាបានទេ។",

    columns: {
      id: "ល.រ",
      workingGroup: "ឈ្មោះក្រុមការងារ",
      issue: "បញ្ហា",
      category: "ប្រភេទបញ្ហា",
      issueDescription: "ការពិពណ៌នាបញ្ហា",
      recommendation: "អនុសាសន៍",
      governmentDecision: "សេចក្តីសម្រេចរបស់រាជរដ្ឋាភិបាល",
      primaryAgency: "ក្រសួង",
      plenaryEscalation: "ការលើកឡើងក្នុងអង្គប្រជុំពេញអង្គ",
      status: "ស្ថានភាព",
      nextStep: "ជំហានបន្ទាប់",
      remark: "កំណត់សម្គាល់",
      action: "សកម្មភាព",
    },

    detail: {
      back: "ត្រឡប់ក្រោយ",
      pageTitle: "ព័ត៌មានលម្អិតបញ្ហា",
      breadcrumb: "ព័ត៌មានលម្អិតបញ្ហា",
      submitDetailLabels: {
        submitDetail: "ព័ត៌មានដាក់ស្នើ",
        ministryName: "ឈ្មោះក្រសួង",
        submittedBy: "ដាក់ស្នើដោយ",
        submissionDate: "កាលបរិច្ឆេទដាក់ស្នើ",
        status: "ស្ថានភាព",
        categoryOfIssues: "ប្រភេទបញ្ហា",
        issueDocument: "ឯកសារបញ្ហា",
        ministry: "ក្រុមការងារវិស័យឯកជន",
        plenaryEscalation: "ការលើកឡើងក្នុងអង្គប្រជុំពេញអង្គ",
      },
      sections: {
        issueDescription: "ការពិពណ៌នាបញ្ហា",
        recommendation: "អនុសាសន៍",
        rgcDecision: "សេចក្តីសម្រេចរបស់រាជរដ្ឋាភិបាល",
        indicators: "សូចនាករ",
        progressSolution: "ដំណើរការដោះស្រាយ",
        implementationChallenges: "បញ្ហាក្នុងការអនុវត្ត",
        request: "សំណើ",
        nextStep: "ជំហានបន្ទាប់",
        sourceOfVerification: "ប្រភពផ្ទៀងផ្ទាត់",
        linkToVerificationSource: "តំណភ្ជាប់ទៅប្រភពផ្ទៀងផ្ទាត់",
      },
    },
  },
};
