export type RgcDecisionStatus =
  | "Solved"
  | "In Progress"
  | "Not Addressed";

export type RgcDecisionStatusCode =
  | "SOLVED"
  | "IN_PROGRESS"
  | "NOT_ADDRESSED";

export type MinistryOption = {
  id: number;
  name: string;
  logo?: string | null;
};

export type CategoryOption = {
  id: number;
  name: string;
};

// 🔥 បន្ថែម Type សម្រាប់ Decision Issue Item
export type DecisionIssueItem = {
  id: number;
  title?: string;
  name?: string;
  description?: string | null;
};

export type RgcDecisionRow = {
  id: number;

  plenaryId: number | null;

  stakeholderId: number;
  ministry: string;
  ministryLogo?: string | null;

  categoryId: number;
  category: string;

  decision: string;
  meetingDate: string;
  status: RgcDecisionStatus;
  statusCode: RgcDecisionStatusCode;

  indicator: string;
  focalPerson: string;
  sourceOfVerification: string;
  verificationLink: string;

  issues?: DecisionIssueItem[]; // 🔥 បន្ថែម Field នេះដើម្បីកុំឱ្យ Error លើ Table និង Detail Dialog

  createdAt?: string;
  updatedAt?: string;
};

export const STATUS_OPTIONS: RgcDecisionStatus[] = [
  "Solved",
  "In Progress",
  "Not Addressed",
];

export function toBackendStatus(
  status: RgcDecisionStatus,
): RgcDecisionStatusCode {
  if (status === "Solved") {
    return "SOLVED";
  }

  if (status === "In Progress") {
    return "IN_PROGRESS";
  }

  return "NOT_ADDRESSED";
}

export function toFrontendStatus(
  value?: string | null,
): RgcDecisionStatus {
  const normalized = String(value ?? "")
    .trim()
    .toLowerCase()
    .replace(/_/g, " ")
    .replace(/-/g, " ");

  if (normalized === "solved") {
    return "Solved";
  }

  if (normalized === "in progress") {
    return "In Progress";
  }

  return "Not Addressed";
}