/**
 * Uwezo Fund HRMS — Prisma Seed Data
 * Run with: npx ts-node lib/dbSeed.ts
 *
 * Prisma Studio: DATABASE_URL set in .env — run: npx prisma studio
 * This file seeds all core tables with realistic sample data.
 */

// ─── Sample Users (16 accounts) ──────────────────────────────────────────────
export const SEED_USERS = [
  { username: 'admin', name: 'System Administrator', email: 'admin@uwezo.go.ke', role: 'admin', dept: null, position: 'System Administrator', is_intern: false },
  { username: 'hr.manager', name: 'Grace Njoroge', email: 'grace.njoroge@uwezo.go.ke', role: 'hr', dept: 'HR', position: 'HR Manager', is_intern: false },
  { username: 'hod.ict', name: 'Gedion Njoroge', email: 'gedion.njoroge@uwezo.go.ke', role: 'hod', dept: 'ICT', position: 'Head of ICT', is_intern: false },
  { username: 'hod.me', name: 'Evans Oyaro', email: 'evans.oyaro@uwezo.go.ke', role: 'hod', dept: 'Monitoring & Evaluation', position: 'Head of M&E', is_intern: false },
  { username: 'hod.transport', name: 'Margaret Murithi', email: 'margaret.murithi@uwezo.go.ke', role: 'hod', dept: 'Transport', position: 'Head of Transport', is_intern: false },
  { username: 'hod.procurement', name: 'Laban Mwangi', email: 'laban.mwangi@uwezo.go.ke', role: 'hod', dept: 'Procurement', position: 'Head of Procurement', is_intern: false },
  { username: 'hod.comms', name: 'Benadette Owade', email: 'benadette.owade@uwezo.go.ke', role: 'hod', dept: 'Corporate Communication', position: 'Head of Corporate Comms', is_intern: false },
  { username: 'hos', name: 'Mr. Peter Lengapiani, MBS', email: 'peter.lengapiani@uwezo.go.ke', role: 'hos', dept: null, position: 'Head of Secretariat', is_intern: false },
  { username: 'finance.officer', name: 'Patrick Odhiambo', email: 'patrick.odhiambo@uwezo.go.ke', role: 'finance', dept: 'Finance', position: 'Finance Officer', is_intern: false },
  { username: 'uf001', name: 'Jane Mwangi', email: 'jane.mwangi@uwezo.go.ke', role: 'employee', dept: 'HR', position: 'HR Officer', is_intern: false },
  { username: 'uf002', name: 'Peter Otieno', email: 'peter.otieno@uwezo.go.ke', role: 'employee', dept: 'ICT', position: 'Systems Administrator', is_intern: false },
  { username: 'uf003', name: 'Mary Wanjiku', email: 'mary.wanjiku@uwezo.go.ke', role: 'employee', dept: 'Monitoring & Evaluation', position: 'M&E Officer', is_intern: false },
  { username: 'uf004', name: 'Samuel Kipchoge', email: 'samuel.kipchoge@uwezo.go.ke', role: 'employee', dept: 'Finance', position: 'Finance Analyst', is_intern: false },
  { username: 'uf005', name: 'Esther Kamau', email: 'esther.kamau@uwezo.go.ke', role: 'employee', dept: 'Procurement', position: 'Procurement Officer', is_intern: false },
  // FIXED: Changed role from 'intern' to 'employee' for intern users
  { username: 'int001', name: 'Kevin Ochieng', email: 'kevin.ochieng@uwezo.go.ke', role: 'employee', dept: 'ICT', position: 'IT Intern', is_intern: true },
  { username: 'int002', name: 'Faith Achieng', email: 'faith.achieng@uwezo.go.ke', role: 'employee', dept: 'Monitoring & Evaluation', position: 'M&E Intern', is_intern: true },
];

// Default password formula: username@2026 (e.g. uf001@2026)
// Hashed with SHA-256

// ─── Sample Employees (20 records) ───────────────────────────────────────────
export const SEED_EMPLOYEES = [
  { employee_number: 'UF001', first_name: 'Jane', last_name: 'Mwangi', full_name: 'Jane Mwangi', email: 'jane.mwangi@uwezo.go.ke', phone: '+254712000001', gender: 'Female', employment_type: 'Permanent', dept: 'HR', position: 'HR Officer', join_date: '2020-03-01', salary: 145000, is_intern: false },
  { employee_number: 'UF002', first_name: 'Peter', last_name: 'Otieno', full_name: 'Peter Otieno', email: 'peter.otieno@uwezo.go.ke', phone: '+254712000002', gender: 'Male', employment_type: 'Permanent', dept: 'ICT', position: 'Systems Administrator', join_date: '2019-06-15', salary: 158000, is_intern: false },
  { employee_number: 'UF003', first_name: 'Mary', last_name: 'Wanjiku', full_name: 'Mary Wanjiku', email: 'mary.wanjiku@uwezo.go.ke', phone: '+254712000003', gender: 'Female', employment_type: 'Permanent', dept: 'Monitoring & Evaluation', position: 'M&E Officer', join_date: '2021-01-10', salary: 137000, is_intern: false },
  { employee_number: 'UF004', first_name: 'Samuel', last_name: 'Kipchoge', full_name: 'Samuel Kipchoge', email: 'samuel.kipchoge@uwezo.go.ke', phone: '+254712000004', gender: 'Male', employment_type: 'Permanent', dept: 'Finance', position: 'Finance Analyst', join_date: '2020-09-01', salary: 142000, is_intern: false },
  { employee_number: 'UF005', first_name: 'Esther', last_name: 'Kamau', full_name: 'Esther Kamau', email: 'esther.kamau@uwezo.go.ke', phone: '+254712000005', gender: 'Female', employment_type: 'Permanent', dept: 'Procurement', position: 'Procurement Officer', join_date: '2021-04-01', salary: 130000, is_intern: false },
  { employee_number: 'UF006', first_name: 'John', last_name: 'Kariuki', full_name: 'John Kariuki', email: 'john.kariuki@uwezo.go.ke', phone: '+254712000006', gender: 'Male', employment_type: 'Permanent', dept: 'Transport', position: 'Transport Officer', join_date: '2018-11-01', salary: 128000, is_intern: false },
  { employee_number: 'UF007', first_name: 'Alice', last_name: 'Odhiambo', full_name: 'Alice Odhiambo', email: 'alice.odhiambo@uwezo.go.ke', phone: '+254712000007', gender: 'Female', employment_type: 'Permanent', dept: 'Corporate Communication', position: 'Communications Officer', join_date: '2022-02-14', salary: 135000, is_intern: false },
  { employee_number: 'UF008', first_name: 'James', last_name: 'Mutua', full_name: 'James Mutua', email: 'james.mutua@uwezo.go.ke', phone: '+254712000008', gender: 'Male', employment_type: 'Contract', dept: 'Monitoring & Evaluation', position: 'Data Analyst', join_date: '2023-01-01', salary: 115000, is_intern: false },
  { employee_number: 'UF009', first_name: 'Grace', last_name: 'Njoroge', full_name: 'Grace Njoroge', email: 'grace.njoroge@uwezo.go.ke', phone: '+254712000009', gender: 'Female', employment_type: 'Permanent', dept: 'HR', position: 'HR Manager', join_date: '2017-07-01', salary: 215000, is_intern: false },
  { employee_number: 'UF010', first_name: 'Patrick', last_name: 'Odhiambo', full_name: 'Patrick Odhiambo', email: 'patrick.odhiambo@uwezo.go.ke', phone: '+254712000010', gender: 'Male', employment_type: 'Permanent', dept: 'Finance', position: 'Finance Officer', join_date: '2016-03-01', salary: 228000, is_intern: false },
  { employee_number: 'UF011', first_name: 'Evans', last_name: 'Oyaro', full_name: 'Evans Oyaro', email: 'evans.oyaro@uwezo.go.ke', phone: '+254712000011', gender: 'Male', employment_type: 'Permanent', dept: 'Monitoring & Evaluation', position: 'Head of M&E', join_date: '2015-01-01', salary: 260000, is_intern: false },
  { employee_number: 'UF012', first_name: 'Margaret', last_name: 'Murithi', full_name: 'Margaret Murithi', email: 'margaret.murithi@uwezo.go.ke', phone: '+254712000012', gender: 'Female', employment_type: 'Permanent', dept: 'Transport', position: 'Head of Transport', join_date: '2015-06-01', salary: 255000, is_intern: false },
  { employee_number: 'UF013', first_name: 'Laban', last_name: 'Mwangi', full_name: 'Laban Mwangi', email: 'laban.mwangi@uwezo.go.ke', phone: '+254712000013', gender: 'Male', employment_type: 'Permanent', dept: 'Procurement', position: 'Head of Procurement', join_date: '2015-09-01', salary: 257000, is_intern: false },
  { employee_number: 'UF014', first_name: 'Benadette', last_name: 'Owade', full_name: 'Benadette Owade', email: 'benadette.owade@uwezo.go.ke', phone: '+254712000014', gender: 'Female', employment_type: 'Permanent', dept: 'Corporate Communication', position: 'Head of Corporate Comms', join_date: '2016-01-01', salary: 252000, is_intern: false },
  { employee_number: 'UF015', first_name: 'Gedion', last_name: 'Njoroge', full_name: 'Gedion Njoroge', email: 'gedion.njoroge@uwezo.go.ke', phone: '+254712000015', gender: 'Male', employment_type: 'Permanent', dept: 'ICT', position: 'Head of ICT', join_date: '2014-07-01', salary: 265000, is_intern: false },
  { employee_number: 'UF016', first_name: 'Diana', last_name: 'Korir', full_name: 'Diana Korir', email: 'diana.korir@uwezo.go.ke', phone: '+254712000016', gender: 'Female', employment_type: 'Contract', dept: 'Operations', position: 'Operations Officer', join_date: '2023-03-15', salary: 112000, is_intern: false },
  { employee_number: 'UF017', first_name: 'Charles', last_name: 'Ndegwa', full_name: 'Charles Ndegwa', email: 'charles.ndegwa@uwezo.go.ke', phone: '+254712000017', gender: 'Male', employment_type: 'Permanent', dept: 'Finance', position: 'Senior Finance Officer', join_date: '2018-05-01', salary: 178000, is_intern: false },
  { employee_number: 'UF018', first_name: 'Ann', last_name: 'Wambua', full_name: 'Ann Wambua', email: 'ann.wambua@uwezo.go.ke', phone: '+254712000018', gender: 'Female', employment_type: 'Permanent', dept: 'HR', position: 'HR Assistant', join_date: '2022-07-01', salary: 98000, is_intern: false },
  { employee_number: 'INT001', first_name: 'Kevin', last_name: 'Ochieng', full_name: 'Kevin Ochieng', email: 'kevin.ochieng@uwezo.go.ke', phone: '+254712000019', gender: 'Male', employment_type: 'Intern', dept: 'ICT', position: 'IT Intern', join_date: '2026-01-15', salary: 25000, is_intern: true },
  { employee_number: 'INT002', first_name: 'Faith', last_name: 'Achieng', full_name: 'Faith Achieng', email: 'faith.achieng@uwezo.go.ke', phone: '+254712000020', gender: 'Female', employment_type: 'Intern', dept: 'Monitoring & Evaluation', position: 'M&E Intern', join_date: '2026-01-15', salary: 25000, is_intern: true },
];

// ─── Sample Departments (8 departments) ──────────────────────────────────────
export const SEED_DEPARTMENTS = [
  { name: 'Monitoring & Evaluation', code: 'ME', description: 'Tracks and evaluates program performance and impact' },
  { name: 'Transport', code: 'TRN', description: 'Manages fleet, logistics and transportation services' },
  { name: 'Procurement', code: 'PRO', description: 'Handles purchasing, vendor management and supply chain' },
  { name: 'Corporate Communication', code: 'COM', description: 'Manages public relations, branding and stakeholder communication' },
  { name: 'ICT', code: 'ICT', description: 'Information and communications technology infrastructure and support' },
  { name: 'Finance', code: 'FIN', description: 'Financial management, budgeting and reporting' },
  { name: 'HR', code: 'HR', description: 'Human resources management and staff welfare' },
  { name: 'Operations', code: 'OPS', description: 'General operations and administrative services' },
];

// ─── Sample Leave Policies (6 types) ─────────────────────────────────────────
export const SEED_LEAVE_POLICIES = [
  { type: 'Annual', label: 'Annual Leave', entitlement: 24, intern_entitlement: 12, accrual_rate: 2.0, max_carryover: 10, requires_document: false, color: '#3b82f6', icon: 'ri-sun-line' },
  { type: 'Sick', label: 'Sick Leave', entitlement: 14, intern_entitlement: 7, accrual_rate: 1.17, max_carryover: 0, requires_document: true, color: '#f59e0b', icon: 'ri-heart-pulse-line' },
  { type: 'Maternity', label: 'Maternity Leave', entitlement: 90, intern_entitlement: 45, accrual_rate: 0, max_carryover: 0, requires_document: true, color: '#ec4899', icon: 'ri-parent-line' },
  { type: 'Paternity', label: 'Paternity Leave', entitlement: 14, intern_entitlement: 7, accrual_rate: 0, max_carryover: 0, requires_document: false, color: '#8b5cf6', icon: 'ri-men-line' },
  { type: 'Bereavement', label: 'Bereavement Leave', entitlement: 5, intern_entitlement: 3, accrual_rate: 0, max_carryover: 0, requires_document: false, color: '#6b7280', icon: 'ri-heart-line' },
  { type: 'Unpaid', label: 'Unpaid Leave', entitlement: 30, intern_entitlement: 10, accrual_rate: 0, max_carryover: 0, unpaid_allowed: true, requires_document: false, color: '#ef4444', icon: 'ri-time-line' },
];

// ─── HOD Accounts ─────────────────────────────────────────────────────────────
export const SEED_HOD_ACCOUNTS = [
  { username: 'hod.ict', dept: 'ICT', must_change_password: false },
  { username: 'hod.me', dept: 'Monitoring & Evaluation', must_change_password: false },
  { username: 'hod.transport', dept: 'Transport', must_change_password: false },
  { username: 'hod.procurement', dept: 'Procurement', must_change_password: false },
  { username: 'hod.comms', dept: 'Corporate Communication', must_change_password: false },
];

// ─── Public Holidays (Kenya 2026) ─────────────────────────────────────────────
export const SEED_PUBLIC_HOLIDAYS = [
  { date: '2026-01-01', name: "New Year's Day" },
  { date: '2026-04-03', name: 'Good Friday' },
  { date: '2026-04-06', name: 'Easter Monday' },
  { date: '2026-05-01', name: 'Labour Day' },
  { date: '2026-06-01', name: 'Madaraka Day' },
  { date: '2026-10-10', name: 'Huduma Day' },
  { date: '2026-10-20', name: 'Mashujaa Day' },
  { date: '2026-12-12', name: 'Jamhuri Day' },
  { date: '2026-12-25', name: 'Christmas Day' },
  { date: '2026-12-26', name: 'Boxing Day' },
];

// ─── Company Goals (FY 2025/2026) ─────────────────────────────────────────────
export const SEED_COMPANY_GOALS = [
  { kra: 'Financial Sustainability', title: 'Increase loan recovery rate to 90%', description: 'Improve collections to ensure financial sustainability', target: '90% recovery rate', fiscal_year: '2025/2026', progress: 72 },
  { kra: 'Operational Excellence', title: 'Reduce operational costs by 15%', description: 'Streamline processes to achieve cost efficiency', target: '15% cost reduction', fiscal_year: '2025/2026', progress: 48 },
  { kra: 'Human Capital Development', title: 'Train 100% of staff on digital tools', description: 'Ensure all staff are proficient with HRMS and digital tools', target: '100% trained', fiscal_year: '2025/2026', progress: 65 },
  { kra: 'Stakeholder Engagement', title: 'Achieve 85% stakeholder satisfaction', description: 'Improve communication and reporting to stakeholders', target: '85% satisfaction score', fiscal_year: '2025/2026', progress: 60 },
  { kra: 'Governance & Compliance', title: 'Zero audit findings on HR compliance', description: 'Maintain full compliance with HR policies and labor laws', target: '0 adverse audit findings', fiscal_year: '2025/2026', progress: 80 },
];

// ─── Sample Training Programs (6) ─────────────────────────────────────────────
export const SEED_TRAINING_PROGRAMS = [
  { title: 'Leadership & Management Skills', dept: 'All Departments', trainer: 'Kenya School of Government', mode: 'Physical', cost: 85000, capacity: 25, enrolled: 18, status: 'Upcoming', venue: 'KSG Nairobi Campus', start_date: '2026-06-10', end_date: '2026-06-12' },
  { title: 'Data Analysis & Visualization', dept: 'Monitoring & Evaluation', trainer: 'Strathmore University', mode: 'Virtual', cost: 45000, capacity: 15, enrolled: 12, status: 'Upcoming', start_date: '2026-06-20', end_date: '2026-06-21' },
  { title: 'Public Procurement Law & Practice', dept: 'Procurement', trainer: 'KISM', mode: 'Physical', cost: 65000, capacity: 10, enrolled: 8, status: 'Ongoing', venue: 'KISM Training Center', start_date: '2026-05-05', end_date: '2026-05-07' },
  { title: 'Cybersecurity Essentials', dept: 'ICT', trainer: 'Serianu Limited', mode: 'Virtual', cost: 55000, capacity: 20, enrolled: 16, status: 'Completed', start_date: '2026-03-10', end_date: '2026-03-12' },
  { title: 'Financial Management for Non-Finance Managers', dept: 'All Departments', trainer: 'ICPAK', mode: 'Hybrid', cost: 72000, capacity: 30, enrolled: 25, status: 'Upcoming', venue: 'ICPAK Centre', start_date: '2026-07-14', end_date: '2026-07-16' },
  { title: 'Report Writing & Communication Skills', dept: 'Corporate Communication', trainer: 'InHouse Facilitator', mode: 'Physical', cost: 35000, capacity: 15, enrolled: 11, status: 'Completed', venue: 'Uwezo Fund Boardroom', start_date: '2026-04-01', end_date: '2026-04-02' },
];

// ─── Sample Disciplinary Cases (10) ───────────────────────────────────────────
export const SEED_DISCIPLINARY_CASES = [
  { case_number: 'DISC/2026/001', employee_name: 'Jane Mwangi', dept: 'HR', offence_type: 'Absenteeism', severity: 'Minor', status: 'Resolved', description: 'Repeated unauthorized absence from duty station', created_by: 'HR Manager' },
  { case_number: 'DISC/2026/002', employee_name: 'Peter Otieno', dept: 'ICT', offence_type: 'Insubordination', severity: 'Moderate', status: 'Open', description: 'Failure to follow direct instructions from supervisor', created_by: 'HR Manager' },
  { case_number: 'DISC/2026/003', employee_name: 'Mary Wanjiku', dept: 'Monitoring & Evaluation', offence_type: 'Misconduct', severity: 'Minor', status: 'Closed', description: 'Unprofessional conduct during stakeholder meeting', created_by: 'HOD' },
  { case_number: 'DISC/2026/004', employee_name: 'Samuel Kipchoge', dept: 'Finance', offence_type: 'Data Breach', severity: 'Critical', status: 'UnderInvestigation', description: 'Alleged sharing of confidential financial data', created_by: 'HR Manager' },
  { case_number: 'DISC/2026/005', employee_name: 'Esther Kamau', dept: 'Procurement', offence_type: 'Conflict of Interest', severity: 'Major', status: 'UnderInvestigation', description: 'Alleged conflict of interest in procurement decision', created_by: 'HR Manager' },
];

// ─── Sample Payroll Employees ──────────────────────────────────────────────────
export const SEED_PAYROLL_EMPLOYEES = [
  { employee_number: 'UF001', full_name: 'Jane Mwangi', dept: 'HR', position: 'HR Officer', basic_salary: 145000, house_allowance: 20000, transport_allowance: 8000, paye: 35000, nhif: 1700, nssf: 2160, bank_name: 'KCB Bank', bank_account: '1234567890', pay_group: 'Monthly Staff' },
  { employee_number: 'UF002', full_name: 'Peter Otieno', dept: 'ICT', position: 'Systems Administrator', basic_salary: 158000, house_allowance: 22000, transport_allowance: 8000, paye: 42000, nhif: 1700, nssf: 2160, bank_name: 'Equity Bank', bank_account: '0987654321', pay_group: 'Monthly Staff' },
  { employee_number: 'UF009', full_name: 'Grace Njoroge', dept: 'HR', position: 'HR Manager', basic_salary: 215000, house_allowance: 35000, transport_allowance: 15000, paye: 75000, nhif: 1700, nssf: 2160, bank_name: 'Cooperative Bank', bank_account: '1122334455', pay_group: 'Management' },
  { employee_number: 'UF010', full_name: 'Patrick Odhiambo', dept: 'Finance', position: 'Finance Officer', basic_salary: 228000, house_allowance: 40000, transport_allowance: 15000, paye: 82000, nhif: 1700, nssf: 2160, bank_name: 'Stanbic Bank', bank_account: '5544332211', pay_group: 'Management' },
  { employee_number: 'INT001', full_name: 'Kevin Ochieng', dept: 'ICT', position: 'IT Intern', basic_salary: 25000, house_allowance: 0, transport_allowance: 3000, paye: 0, nhif: 500, nssf: 200, bank_name: 'Equity Bank', bank_account: '9988776655', pay_group: 'Intern' },
];

export default {
  SEED_USERS,
  SEED_EMPLOYEES,
  SEED_DEPARTMENTS,
  SEED_LEAVE_POLICIES,
  SEED_HOD_ACCOUNTS,
  SEED_PUBLIC_HOLIDAYS,
  SEED_COMPANY_GOALS,
  SEED_TRAINING_PROGRAMS,
  SEED_DISCIPLINARY_CASES,
  SEED_PAYROLL_EMPLOYEES,
};
