"use client";

import { usePathname } from "next/navigation";
import { rgcDecisionText as cdcText } from "@/features/cdc/rgc-decision/data/rgc-decision-i18n";
import { rgcDecisionText, type RgcDecisionLanguage } from "../data/rgc-decision-i18n";
import { useRgcDecisionTranslations } from "./use-rgc-decision-translations";

const keys = {
  back: "detail.back", detailTitle: "detail.title", detailDescription: "detail.description",
  ministry: "detail.ministry", meetingDate: "detail.meeting_date", category: "detail.category",
  status: "detail.status", focalPerson: "detail.focal_person",
  issueDescription: "detail.issue_description", recommendations: "detail.recommendations",
  rgcDecision: "detail.rgc_decision", indicators: "detail.indicators",
  progressSolution: "detail.progress_solution", implementationChallenges: "detail.implementation_challenges",
  request: "detail.request", nextStep: "detail.next_step",
  sourceOfVerification: "detail.source_of_verification", verificationLink: "detail.verification_link",
  notFound: "detail.not_found", reload: "action.reload", title: "title",
} as const;

export function useRgcDecisionDetailText(language: RgcDecisionLanguage) {
  const pathname = usePathname();
  const defaults = rgcDecisionText[language] ?? rgcDecisionText.en;
  const { t } = useRgcDecisionTranslations(language);
  const result = { ...defaults } as Record<keyof typeof defaults, string>;
  for (const [field, key] of Object.entries(keys)) {
    const name = field as keyof typeof defaults;
    result[name] = t(key, defaults[name]);
  }
  if (pathname.startsWith("/cdc/rgc-decision")) {
    result.breadcrumb = t("breadcrumb", cdcText[language].breadcrumb);
  } else {
    result.breadcrumb = t("breadcrumb", defaults.breadcrumb);
  }
  return { text: result, t };
}

export function rgcStatusLabel(
  status: string,
  language: RgcDecisionLanguage,
  t: (key: string, fallback: string) => string,
) {
  const labels: Record<string, [string, string, string]> = {
    Solved: ["status.solved", "Solved", "បានដោះស្រាយ"],
    "In Progress": ["status.in_progress", "In Progress", "កំពុងដោះស្រាយ"],
    "Not Addressed": ["status.not_addressed", "Not Addressed", "មិនទាន់ដោះស្រាយ"],
  };
  const entry = labels[status];
  return entry ? t(entry[0], language === "kh" ? entry[2] : entry[1]) : status;
}
