export const EDUCATION_OPTIONS = [
  "زیر دیپلم",
  "دیپلم",
  "فوق دیپلم",
  "لیسانس",
  "فوق لیسانس",
  "دکتری",
];

export const STATUS_LABELS: Record<string, string> = {
  draft: "پیش‌نویس",
  eligibility_checked: "بررسی اولیه",
  documents_pending: "در انتظار مدارک",
  rules_accepted: "قوانین پذیرفته شد",
  payment_pending: "در انتظار پرداخت",
  submitted: "ارسال شده",
  under_review: "در حال بررسی",
  documents_requested: "نیاز به مدارک",
  interview_scheduled: "مصاحبه تعیین شد",
  entrance_exam_scheduled: "آزمون تعیین شد",
  waitlisted: "لیست انتظار",
  approved: "تأیید شده",
  rejected: "رد شده",
  converted: "تبدیل به دانش‌آموز",
  abandoned: "رها شده",
};

export const REVIEW_ACTIONS = [
  { value: "start_review", label: "انتقال به در حال بررسی", target: "under_review" },
  { value: "approve", label: "تأیید", target: "approved" },
  { value: "reject", label: "رد", target: "rejected" },
  { value: "waitlist", label: "لیست انتظار", target: "waitlisted" },
  { value: "request_documents", label: "درخواست مدارک", target: "documents_requested" },
] as const;

/** وضعیت‌هایی که از آن‌ها اکشن review مجاز است (هم‌تراز StateMachine) */
export const REVIEW_TRANSITIONS: Record<string, string[]> = {
  draft: [],
  eligibility_checked: [],
  documents_pending: [],
  rules_accepted: [],
  payment_pending: [],
  abandoned: [],
  submitted: ["under_review"],
  under_review: [
    "documents_requested",
    "interview_scheduled",
    "entrance_exam_scheduled",
    "waitlisted",
    "approved",
    "rejected",
  ],
  documents_requested: ["under_review"],
  interview_scheduled: ["under_review", "approved", "rejected", "waitlisted"],
  entrance_exam_scheduled: ["under_review", "approved", "rejected", "waitlisted"],
  waitlisted: ["under_review", "approved", "rejected"],
  approved: ["converted"],
  rejected: [],
  converted: [],
};

export function reviewActionsForStatus(status: string) {
  const allowedTargets = REVIEW_TRANSITIONS[status] ?? [];
  return REVIEW_ACTIONS.filter((action) => allowedTargets.includes(action.target));
}

export function reviewStatusHint(status: string): string {
  if (["draft", "eligibility_checked", "documents_pending", "rules_accepted", "payment_pending", "abandoned"].includes(status)) {
    return "این درخواست هنوز توسط اولیا تکمیل/ارسال نشده است؛ اقدام مدیر لازم نیست.";
  }
  if (status === "submitted") {
    return "درخواست ارسال شده است. برای ادامه، بررسی را شروع کنید.";
  }
  if (status === "approved") {
    return "درخواست تأیید شده است. از بلوک «تبدیل به دانش‌آموز» زیر، با یا بدون کلاس ثبت کنید.";
  }
  if (status === "rejected") {
    return "این درخواست رد شده است و اقدام بیشتری ندارد.";
  }
  if (status === "converted") {
    return "این درخواست به دانش‌آموز تبدیل شده است. در صورت نیاز از پروفایل یا فهرست منتظر کلاس‌بندی پیگیری کنید.";
  }
  if (status === "documents_requested") {
    return "منتظر مدارک تکمیلی از اولیا هستید. پس از دریافت می‌توانید دوباره بررسی کنید.";
  }
  return "از بین اقدامات مجاز زیر، تصمیم مناسب را ثبت کنید.";
}
