export type TerminationReason =
  | 'Resignation'
  | 'Retirement'
  | 'End of Contract'
  | 'Dismissal - Performance'
  | 'Dismissal - Misconduct'
  | 'Redundancy'
  | 'Medical Incapacity'
  | 'Death'
  | 'Absconded'
  | 'Other';

export type TerminationCategory = 'Voluntary' | 'Involuntary' | 'Other';

export interface TerminationRecord {
  id: string;
  caseNo: string;
  employeeId: string;
  employeeName: string;
  department: string;
  position: string;
  terminationDate: string;
  category: TerminationCategory;
  reason: TerminationReason;
  supportingLetter?: string;
  initiatedDate: string;
  initiatedBy: string;
  source: 'hr' | 'employee';
}

export type EmployeeTerminationStatus =
  | 'Pending HOD Review'
  | 'Pending Manager Review'
  | 'Pending HR Review'
  | 'Approved'
  | 'Rejected'
  | 'Withdrawn';

export interface EmployeeTerminationRequest {
  id: string;
  applicationId: string;
  employeeId: string;
  employeeName: string;
  department: string;
  managerId: string;
  managerName: string;
  submittedDate: string;
  proposedLastDay: string;
  reason: string;
  reasonOther?: string;
  additionalComments?: string;
  documentName?: string;
  status: EmployeeTerminationStatus;
  managerApprovedDate?: string;
  managerRejectedDate?: string;
  managerComments?: string;
  hrApprovedDate?: string;
  hrRejectedDate?: string;
  hrComments?: string;
  finalCategory?: TerminationCategory;
  finalReason?: TerminationReason;
  finalTerminationDate?: string;
  timeline: { step: string; date: string; actor: string; note?: string }[];
}

export const terminationRecords: TerminationRecord[] = [
  {
    id: 'TRM-001', caseNo: 'TRM-2025-001', employeeId: 'EMP-042', employeeName: 'Sarah Kamau',
    department: 'Finance', position: 'Finance Officer',
    terminationDate: '2025-03-31', category: 'Voluntary', reason: 'Resignation',
    supportingLetter: 'resignation_sarah_kamau.pdf',
    initiatedDate: '2025-03-05', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-002', caseNo: 'TRM-2025-002', employeeId: 'EMP-017', employeeName: 'James Otieno',
    department: 'IT', position: 'Systems Administrator',
    terminationDate: '2025-04-30', category: 'Voluntary', reason: 'End of Contract',
    initiatedDate: '2025-03-20', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-003', caseNo: 'TRM-2025-003', employeeId: 'EMP-033', employeeName: 'Peter Mwangi',
    department: 'Operations', position: 'Field Officer',
    terminationDate: '2025-02-28', category: 'Involuntary', reason: 'Dismissal - Misconduct',
    initiatedDate: '2025-02-10', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-004', caseNo: 'TRM-2025-004', employeeId: 'EMP-058', employeeName: 'Lydia Achieng',
    department: 'HR', position: 'HR Assistant',
    terminationDate: '2025-04-15', category: 'Voluntary', reason: 'Resignation',
    supportingLetter: 'resignation_lydia_achieng.pdf',
    initiatedDate: '2025-03-28', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-005', caseNo: 'TRM-2025-005', employeeId: 'EMP-009', employeeName: 'Francis Njiru',
    department: 'Programs', position: 'Program Coordinator',
    terminationDate: '2025-01-31', category: 'Involuntary', reason: 'Redundancy',
    initiatedDate: '2025-01-05', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-006', caseNo: 'TRM-2025-006', employeeId: 'EMP-071', employeeName: 'Christine Owino',
    department: 'Finance', position: 'Accounts Payable Clerk',
    terminationDate: '2025-05-01', category: 'Voluntary', reason: 'Retirement',
    initiatedDate: '2025-02-01', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-007', caseNo: 'TRM-2025-007', employeeId: 'EMP-024', employeeName: 'Kevin Mutua',
    department: 'IT', position: 'Network Technician',
    terminationDate: '2025-03-15', category: 'Involuntary', reason: 'Dismissal - Performance',
    initiatedDate: '2025-03-01', initiatedBy: 'HR Admin', source: 'hr',
  },
  {
    id: 'TRM-008', caseNo: 'TRM-2024-041', employeeId: 'EMP-003', employeeName: 'Mary Auma',
    department: 'Admin', position: 'Office Manager',
    terminationDate: '2024-12-31', category: 'Other', reason: 'Medical Incapacity',
    initiatedDate: '2024-11-15', initiatedBy: 'HR Admin', source: 'hr',
  },
];

export const employeeTerminationRequests: EmployeeTerminationRequest[] = [
  {
    id: 'ETR-001', applicationId: 'APP-2025-0041',
    employeeId: 'UF002', employeeName: 'Peter Otieno',
    department: 'ICT', managerId: 'MGR-02', managerName: 'Anne Wanjiku',
    submittedDate: '2025-04-10', proposedLastDay: '2025-05-10',
    reason: 'Better career opportunity',
    additionalComments: 'I have received an offer from a private firm.',
    documentName: 'resignation_peter_otieno.pdf',
    status: 'Pending HR Review',
    managerApprovedDate: '2025-04-12',
    managerComments: 'Peter has been a great team member. Approved.',
    timeline: [
      { step: 'Application Submitted', date: '2025-04-10 09:15', actor: 'Peter Otieno' },
      { step: 'Manager Notified', date: '2025-04-10 09:16', actor: 'System' },
      { step: 'Manager Approved', date: '2025-04-12 14:30', actor: 'Anne Wanjiku', note: 'Peter has been a great team member. Approved.' },
      { step: 'Pending HR Final Review', date: '2025-04-12 14:31', actor: 'System' },
    ],
  },
  {
    id: 'ETR-002', applicationId: 'APP-2025-0038',
    employeeId: 'UF005', employeeName: 'Grace Wanjiku',
    department: 'Procurement', managerId: 'MGR-05', managerName: 'Miriam Wanjiru',
    submittedDate: '2025-04-05', proposedLastDay: '2025-04-30',
    reason: 'Relocation',
    additionalComments: 'Relocating to Mombasa due to family reasons.',
    documentName: 'resignation_grace_wanjiku.pdf',
    status: 'Pending Manager Review',
    timeline: [
      { step: 'Application Submitted', date: '2025-04-05 11:00', actor: 'Grace Wanjiku' },
      { step: 'Manager Notified', date: '2025-04-05 11:01', actor: 'System' },
    ],
  },
  {
    id: 'ETR-003', applicationId: 'APP-2025-0029',
    employeeId: 'UF007', employeeName: 'Fatuma Hassan',
    department: 'Monitoring & Evaluation', managerId: 'MGR-01', managerName: 'David Odhiambo',
    submittedDate: '2025-03-20', proposedLastDay: '2025-04-20',
    reason: 'Study/Education',
    additionalComments: 'Admitted to a Masters program.',
    documentName: 'admission_letter_fatuma.pdf',
    status: 'Approved',
    managerApprovedDate: '2025-03-22',
    managerComments: 'Approved. Congratulations on the admission.',
    hrApprovedDate: '2025-03-25',
    hrComments: 'Approved. Final termination date confirmed.',
    finalCategory: 'Voluntary',
    finalReason: 'Resignation',
    finalTerminationDate: '2025-04-20',
    timeline: [
      { step: 'Application Submitted', date: '2025-03-20 08:45', actor: 'Fatuma Hassan' },
      { step: 'Manager Notified', date: '2025-03-20 08:46', actor: 'System' },
      { step: 'Manager Approved', date: '2025-03-22 10:00', actor: 'David Odhiambo', note: 'Approved. Congratulations on the admission.' },
      { step: 'HR Notified', date: '2025-03-22 10:01', actor: 'System' },
      { step: 'HR Approved & Terminated', date: '2025-03-25 15:00', actor: 'HR Admin', note: 'Approved. Final termination date confirmed.' },
    ],
  },
];

export const TERMINATION_REASONS: { reason: TerminationReason; category: TerminationCategory }[] = [
  { reason: 'Resignation', category: 'Voluntary' },
  { reason: 'Retirement', category: 'Voluntary' },
  { reason: 'End of Contract', category: 'Voluntary' },
  { reason: 'Dismissal - Performance', category: 'Involuntary' },
  { reason: 'Dismissal - Misconduct', category: 'Involuntary' },
  { reason: 'Redundancy', category: 'Involuntary' },
  { reason: 'Medical Incapacity', category: 'Involuntary' },
  { reason: 'Death', category: 'Other' },
  { reason: 'Absconded', category: 'Other' },
  { reason: 'Other', category: 'Other' },
];
