/**
 * Central bilingual option lists for hard-coded enum dropdowns.
 * `value` is the raw value stored/sent to the API (unchanged from before);
 * `label` is the display string `英文/中文`. Bind in templates with
 * textField="label" valueField="value" [valuePrimitive]="true".
 */
export interface BilingualOption { readonly value: string; readonly label: string; }

export const PAYMENT_METHOD_OPTIONS: readonly BilingualOption[] = [
  { value: 'Cash',   label: 'Cash/現金' },
  { value: 'Check',  label: 'Check/支票' },
  { value: 'Zelle',  label: 'Zelle' },
  { value: 'PayPal', label: 'PayPal' },
  { value: 'Other',  label: 'Other/其他' },
];

export const EXPENSE_STATUS_OPTIONS: readonly BilingualOption[] = [
  { value: 'Draft',           label: 'Draft/草稿' },
  { value: 'PendingApproval', label: 'PendingApproval/待審核' },
  { value: 'Approved',        label: 'Approved/已核准' },
  { value: 'Paid',            label: 'Paid/已付款' },
  { value: 'Rejected',        label: 'Rejected/已拒絕' },
];

// Expense reject reason templates. For preset reasons the `value` is stored verbatim into
// ReviewNotes; selecting 'Other' switches the dialog to a free-text box.
export const EXPENSE_REJECT_REASON_OPTIONS: readonly BilingualOption[] = [
  { value: 'Receipt unclear, please retake', label: 'Receipt unclear/收據不夠清楚' },
  { value: 'Amount does not match receipt',  label: 'Amount mismatch/金額不符' },
  { value: 'Receipt missing',                label: 'Receipt missing/缺少收據' },
  { value: 'Wrong category or ministry',     label: 'Wrong category/分類錯誤' },
  { value: 'Duplicate submission',           label: 'Duplicate/重複申請' },
  { value: 'Needs more information',          label: 'Needs more info/需補充說明' },
  { value: 'Other',                          label: 'Other/其他' },
];

export const CHECK_STATUS_OPTIONS: readonly BilingualOption[] = [
  { value: 'Issued', label: 'Issued/已開立' },
  { value: 'Voided', label: 'Voided/已作廢' },
];

export const MEMBER_STATUS_OPTIONS: readonly BilingualOption[] = [
  { value: 'Member',   label: 'Member/會友' },
  { value: 'Visitor',  label: 'Visitor/訪客' },
  { value: 'Inactive', label: 'Inactive/未活躍' },
  { value: 'Former',   label: 'Former/已離開' },
];

export const GENDER_OPTIONS: readonly BilingualOption[] = [
  { value: 'M',     label: 'Male/男' },
  { value: 'F',     label: 'Female/女' },
  { value: 'Other', label: 'Other/其他' },
];

export const LANGUAGE_OPTIONS: readonly BilingualOption[] = [
  { value: 'en',    label: 'English/英文' },
  { value: 'zh-TW', label: '中文/Chinese' },
];

// Log severities — value must match the C# LogLevelEnum names exactly.
export const LOG_LEVEL_OPTIONS: readonly BilingualOption[] = [
  { value: 'Trace',       label: 'Trace/追蹤' },
  { value: 'Debug',       label: 'Debug/除錯' },
  { value: 'Information', label: 'Information/資訊' },
  { value: 'Warning',     label: 'Warning/警告' },
  { value: 'Error',       label: 'Error/錯誤' },
  { value: 'Critical',    label: 'Critical/嚴重' },
];

// Audit categories — value must match the C# AuditCategories names exactly.
export const AUDIT_CATEGORY_OPTIONS: readonly BilingualOption[] = [
  { value: 'DataChange', label: 'Data Change/資料異動' },
  { value: 'Security',   label: 'Security/安全性' },
  { value: 'Business',   label: 'Business/業務操作' },
];

export const ROLE_OPTIONS: readonly BilingualOption[] = [
  { value: 'super_admin',     label: 'Super Admin/系統管理員' },
  { value: 'pastor',          label: 'Pastor/牧師' },
  { value: 'board_member',    label: 'Board Member/理事' },
  { value: 'coworker_chair',  label: 'Coworker Chair/同工會主席' },
  { value: 'ministry_leader', label: 'Ministry Leader/事工領袖' },
  { value: 'district_leader', label: 'District Leader/區長' },
  { value: 'cell_leader',     label: 'Cell Leader/小組長' },
  { value: 'coworker',        label: 'Coworker/同工' },
  { value: 'finance',         label: 'Finance/財務同工' },
  { value: 'secretary',       label: 'Secretary/行政秘書' },
  { value: 'worship_leader',  label: 'Worship Leader/敬拜領袖' },
  { value: 'member',          label: 'Member/一般教友' },
  { value: 'visitor',         label: 'Visitor/訪客' },
];
