import { User, UserTableColumn } from "@/types/user";

/**
 * 사용자 관리 관련 상수 정의
 */

// 사용자 상태 코드 정의
export const USER_STATUS = {
  ACTIVE: "active",
  INACTIVE: "inactive",
} as const;

// 사용자 상태 라벨 매핑
export const USER_STATUS_LABELS = {
  [USER_STATUS.ACTIVE]: "활성",
  [USER_STATUS.INACTIVE]: "비활성",
} as const;

// 사용자 목록 테이블 컬럼 정의 (camelCase)
// 검색 가능한 컬럼 정의 (등록일, 상태, 작업 제외)
export const SEARCH_OPTIONS = [
  { value: "all", label: "전체" },
  { value: "sabun", label: "사번" },
  { value: "company_name", label: "회사" },
  { value: "dept_name", label: "부서명" },
  { value: "position_name", label: "직책" },
  { value: "user_id", label: "사용자 ID" },
  { value: "user_name", label: "사용자명" },
  { value: "tel", label: "전화번호" },
  { value: "email", label: "이메일" },
] as const;

export const USER_TABLE_COLUMNS: UserTableColumn[] = [
  { key: "no", label: "No", sortable: false, width: "60px" },
  { key: "sabun", label: "사번", sortable: true, width: "80px" },
  { key: "company_name", label: "회사", sortable: true, width: "120px" },
  { key: "dept_name", label: "부서명", sortable: true, width: "120px" },
  { key: "position_name", label: "직책", sortable: true, width: "100px" },
  { key: "user_id", label: "사용자 ID", sortable: true, width: "120px" },
  { key: "user_name", label: "사용자명", sortable: true, width: "100px" },
  { key: "tel", label: "전화번호", sortable: false, width: "120px" },
  { key: "email", label: "이메일", sortable: true, width: "200px" },
  { key: "regdate", label: "등록일", sortable: true, width: "100px" },
  { key: "status", label: "상태", sortable: true, width: "120px" },
];

// MOCK_USERS 제거 - 이제 실제 백엔드 데이터 사용

// 새 사용자 등록 시 기본값 (camelCase)
export const DEFAULT_USER_FORM_DATA = {
  user_id: "",
  user_name: "",
  dept_code: "",
  dept_name: "",
  position_name: "",
  email: "",
  tel: "",
  cell_phone: "",
  user_type_name: "",
  status: USER_STATUS.ACTIVE,
};

// 페이징 관련 상수
export const USER_PAGINATION = {
  DEFAULT_PAGE_SIZE: 20,
  PAGE_SIZE_OPTIONS: [10, 20, 50, 100],
} as const;
