export type User = {
  id: string
  email: string
  fullName: string
  isActive: boolean
  isLocked: boolean
  createdAt: string
  roles: string[]
  departmentId: string | null
  departmentName: string | null
  position: string | null
  canBypassReview: boolean
}

export type CreateUserInput = {
  email: string
  fullName: string
  password: string
  roles: string[]
  departmentId: string | null
  position: string | null
}

// 12 role seed trong BE (AppRoles.cs). Mã + Tên đầy đủ tiếng Việt khớp
// với BE SeedRolesAsync (Role.ShortName + Role.Description).
export const AVAILABLE_ROLES = [
  'Admin',
  'Drafter',
  'DeptManager',
  'ProjectManager',
  'Procurement',
  'CostControl',
  'Finance',
  'Accounting',
  'Equipment',
  'Director',
  'AuthorizedSigner',
  'HrAdmin',
] as const

// Mã viết tắt (Vietnamese abbreviation) — dùng khi không gian hẹp (badge, chip)
export const RoleShortName: Record<string, string> = {
  Admin: 'QTV',
  Drafter: 'NV.PB',
  DeptManager: 'TPB',
  ProjectManager: 'PM',
  Procurement: 'PRO',
  CostControl: 'CCM',
  Finance: 'FIN',
  Accounting: 'ACT',
  Equipment: 'EQU',
  Director: 'BOD',
  AuthorizedSigner: 'NĐUQ',
  HrAdmin: 'HRA',
}

// Tên đầy đủ tiếng Việt — dùng khi rộng rãi (form, list)
export const RoleLabel: Record<string, string> = {
  Admin: 'Quản trị viên hệ thống',
  Drafter: 'Nhân viên phòng ban (soạn HĐ)',
  DeptManager: 'Trưởng phòng ban',
  ProjectManager: 'Giám đốc dự án',
  Procurement: 'Phòng Cung ứng',
  CostControl: 'Phòng Kiểm soát chi phí',
  Finance: 'Phòng Tài chính',
  Accounting: 'Phòng Kế toán',
  Equipment: 'Phòng Thiết bị',
  Director: 'Ban Giám đốc',
  AuthorizedSigner: 'Người được Ủy quyền ký HĐ',
  HrAdmin: 'Phòng Nhân sự - Hành chính',
}

// Combined display: "BOD — Ban Giám đốc"
export function roleDisplayName(roleName: string): string {
  const short = RoleShortName[roleName]
  const full = RoleLabel[roleName]
  if (short && full) return `${short} — ${full}`
  return full ?? roleName
}
