/**
 * Support Domain - Contract
 *
 * Constants for support case statuses, priorities, and categories.
 * These are the DISPLAY values shown in the portal UI.
 *
 * Note: Salesforce uses Japanese API names internally (e.g., 新規, 対応中, 高, 中, 低)
 * which are mapped to these English display values by the Salesforce mapper.
 */

/**
 * Portal display status values (customer-friendly)
 *
 * Mapped from Salesforce API names:
 * - 新規 → New
 * - 対応中, Awaiting Approval, VPN Pending, Pending → In Progress (internal workflow hidden)
 * - 完了済み (Replied) → Awaiting Customer (support replied, waiting for customer response)
 * - Closed → Closed
 */
export const SUPPORT_CASE_STATUS = {
  NEW: "New",
  IN_PROGRESS: "In Progress",
  AWAITING_CUSTOMER: "Awaiting Customer", // Support has replied, waiting for customer
  CLOSED: "Closed",
} as const;

/** Statuses that indicate a case is closed (for UI logic - disables reply form) */
export const CLOSED_STATUSES = [SUPPORT_CASE_STATUS.CLOSED] as const;

/** Statuses that indicate a case is open (for UI logic) */
export const OPEN_STATUSES = [
  SUPPORT_CASE_STATUS.NEW,
  SUPPORT_CASE_STATUS.IN_PROGRESS,
  SUPPORT_CASE_STATUS.AWAITING_CUSTOMER,
] as const;

/**
 * Portal display priority values
 * Mapped from Salesforce Japanese API names:
 * - 高 → High
 * - 中 → Medium
 * - 低 → Low
 */
export const SUPPORT_CASE_PRIORITY = {
  LOW: "Low",
  MEDIUM: "Medium",
  HIGH: "High",
} as const;

/**
 * Case categories map to Salesforce Case.Type field
 * Note: Type picklist may not be configured in your org
 */
export const SUPPORT_CASE_CATEGORY = {
  TECHNICAL: "Technical",
  BILLING: "Billing",
  GENERAL: "General",
  FEATURE_REQUEST: "Feature Request",
} as const;

/**
 * Portal support origin - used to filter and create customer-visible portal support cases
 */
export const PORTAL_CASE_ORIGIN = "Portal Support" as const;
