// 카드 상태
export type CardStatus = 'active' | 'suspended';

// 카드 상태 레이블
export const CARD_STATUS_LABELS: Record<CardStatus, string> = {
  active: '사용',
  suspended: '정지',
};

// 카드 상태 색상
export const CARD_STATUS_COLORS: Record<CardStatus, string> = {
  active: 'bg-green-100 text-green-800',
  suspended: 'bg-red-100 text-red-800',
};

// 카드사 목록
export const CARD_COMPANIES = [
  { value: 'shinhan', label: '신한카드' },
  { value: 'kb', label: 'KB국민카드' },
  { value: 'samsung', label: '삼성카드' },
  { value: 'hyundai', label: '현대카드' },
  { value: 'lotte', label: '롯데카드' },
  { value: 'bc', label: 'BC카드' },
  { value: 'woori', label: '우리카드' },
  { value: 'hana', label: '하나카드' },
  { value: 'nh', label: 'NH농협카드' },
  { value: 'ibk', label: 'IBK기업은행' },
] as const;

export type CardCompany = typeof CARD_COMPANIES[number]['value'];

// 카드 사용자 정보
export interface CardUser {
  id: string;
  departmentId: string;
  departmentName: string;
  employeeId: string;
  employeeName: string;
  positionId: string;
  positionName: string;
}

// 카드 정보
export interface Card {
  id: string;
  cardCompany: CardCompany;
  cardNumber: string;          // 1234-1234-1234-1234
  cardName: string;            // 카드명
  expiryDate: string;          // MMYY
  pinPrefix: string;           // 비밀번호 앞 2자리
  status: CardStatus;
  user?: CardUser;
  createdAt: string;
  updatedAt: string;
}

// 카드 폼 데이터
export interface CardFormData {
  cardCompany: CardCompany | '';
  cardNumber: string;
  cardName: string;
  expiryDate: string;
  pinPrefix: string;
  status: CardStatus;
  userId?: string;
}

// 카드사 레이블 가져오기
export const getCardCompanyLabel = (value: CardCompany): string => {
  const company = CARD_COMPANIES.find(c => c.value === value);
  return company?.label || value;
};