/**
 * 就业信息类型定义
 */

// 工作状态枚举
export enum WorkStatus {
  NOT_WORKING = 'not_working',      // 未工作
  PRE_WORKING = 'pre_working',      // 待入职
  WORKING = 'working',              // 在职
  RESIGNED = 'resigned'             // 已离职
}

// 当前就业状态
export interface CurrentEmploymentStatus {
  companyName: string          // 企业名称
  orderId: number              // 订单ID
  orderName: string | null     // 订单名称(岗位名称)
  positionName: string | null  // 岗位名称
  joinDate: string             // 入职日期 YYYY-MM-DD
  workStatus: WorkStatus       // 工作状态
  salaryLevel: number          // 薪资水平
  actualStartDate: string | null  // 实际入职日期
}

// 薪资记录
export interface SalaryRecord {
  orderId: number              // 订单ID
  orderName: string | null     // 订单名称
  companyName: string | null   // 企业名称
  salaryAmount: number         // 薪资金额
  joinDate: string             // 入职日期
  month: string                // 月份 YYYY-MM
}

// 就业历史项
export interface EmploymentHistoryItem {
  orderId: number              // 订单ID
  orderName: string | null     // 订单名称
  companyName: string | null   // 企业名称
  positionName: string | null  // 岗位名称
  joinDate: string             // 入职日期
  leaveDate: string | null     // 离职日期
  workStatus: WorkStatus       // 工作状态
  salaryLevel: number          // 薪资水平
}

// 分页响应
export interface PaginatedResponse<T> {
  data: T[]
  total: number
}

// 工作状态显示文本映射
export const WorkStatusLabels: Record<WorkStatus, string> = {
  [WorkStatus.NOT_WORKING]: '未工作',
  [WorkStatus.PRE_WORKING]: '待入职',
  [WorkStatus.WORKING]: '在职',
  [WorkStatus.RESIGNED]: '离职'
}

// 格式化薪资金额
export function formatSalary(amount: number): string {
  return `¥${amount.toLocaleString('zh-CN', { minimumFractionDigits: 0, maximumFractionDigits: 2 })}`
}

// 格式化月份显示
export function formatMonth(monthStr: string): string {
  const [year, month] = monthStr.split('-')
  return `${year}年${parseInt(month)}月`
}

// 格式化日期范围
export function formatDateRange(startDate: string, endDate: string | null): string {
  const formatDate = (date: string) => {
    const [year, month, day] = date.split('-')
    return `${year}-${month}-${day}`
  }

  if (!endDate) {
    return `${formatDate(startDate)} 至今`
  }
  return `${formatDate(startDate)} 至 ${formatDate(endDate)}`
}

// 判断是否为当前工作
export function isCurrentWork(status: WorkStatus): boolean {
  return status === WorkStatus.WORKING
}
