import { Agent, Ministry, PayrollRun, FiscalYear, PaymentBatch, Bank, AuditLog, User } from '@/types';

export const currentUser: User = {
  id: '1',
  name: 'João Silva',
  email: 'joao.silva@gov.ao',
  role: 'Administrador',
  ministry: 'Ministério das Finanças',
  avatar: undefined,
};

export const mockAgents: Agent[] = [
  {
    id: '1',
    employeeNumber: 'AG-2024-001',
    fullName: 'Maria Santos',
    email: 'maria.santos@gov.gw',
    phone: '+245 923 456 789',
    ministry: 'Ministério da Educação',
    unit: 'Direcção de Recursos Humanos',
    position: 'Técnico Superior',
    category: 'A',
    status: 'active',
    hireDate: '2020-03-15',
    salary: 450000,
  },
  {
    id: '2',
    employeeNumber: 'AG-2024-002',
    fullName: 'Pedro Fernandes',
    email: 'pedro.fernandes@gov.ao',
    phone: '+244 912 345 678',
    ministry: 'Ministério das Finanças',
    unit: 'Direcção de Orçamento',
    position: 'Director',
    category: 'S',
    status: 'active',
    hireDate: '2018-01-10',
    salary: 750000,
  },
  {
    id: '3',
    employeeNumber: 'AG-2024-003',
    fullName: 'Ana Costa',
    email: 'ana.costa@gov.ao',
    phone: '+244 934 567 890',
    ministry: 'Ministério da Saúde',
    unit: 'Gabinete do Ministro',
    position: 'Assessor',
    category: 'B',
    status: 'active',
    hireDate: '2021-06-01',
    salary: 380000,
  },
  {
    id: '4',
    employeeNumber: 'AG-2024-004',
    fullName: 'Carlos Mendes',
    email: 'carlos.mendes@gov.ao',
    phone: '+244 945 678 901',
    ministry: 'Ministério da Educação',
    unit: 'Direcção Pedagógica',
    position: 'Técnico Médio',
    category: 'C',
    status: 'suspended',
    hireDate: '2019-09-20',
    salary: 280000,
  },
  {
    id: '5',
    employeeNumber: 'AG-2024-005',
    fullName: 'Luísa Pereira',
    email: 'luisa.pereira@gov.ao',
    phone: '+244 956 789 012',
    ministry: 'Ministério das Finanças',
    unit: 'Direcção de Contabilidade',
    position: 'Chefe de Secção',
    category: 'B',
    status: 'active',
    hireDate: '2017-11-05',
    salary: 420000,
  },
  {
    id: '6',
    employeeNumber: 'AG-2024-006',
    fullName: 'António Lopes',
    email: 'antonio.lopes@gov.ao',
    phone: '+244 967 890 123',
    ministry: 'Ministério da Saúde',
    unit: 'Direcção de Recursos Humanos',
    position: 'Auxiliar Administrativo',
    category: 'D',
    status: 'inactive',
    hireDate: '2022-02-28',
    salary: 180000,
  },
  {
    id: '7',
    employeeNumber: 'AG-2024-007',
    fullName: 'Teresa Gonçalves',
    email: 'teresa.goncalves@gov.ao',
    phone: '+244 978 901 234',
    ministry: 'Ministério da Educação',
    unit: 'Direcção Financeira',
    position: 'Técnico Superior',
    category: 'A',
    status: 'active',
    hireDate: '2016-08-12',
    salary: 520000,
  },
  {
    id: '8',
    employeeNumber: 'AG-2024-008',
    fullName: 'Manuel Rodrigues',
    email: 'manuel.rodrigues@gov.ao',
    phone: '+244 989 012 345',
    ministry: 'Ministério das Finanças',
    unit: 'Direcção de Tesouraria',
    position: 'Subdirector',
    category: 'S',
    status: 'retired',
    hireDate: '2005-04-18',
    salary: 680000,
  },
];

export const mockMinistries: Ministry[] = [
  {
    id: '1',
    name: 'Ministério das Finanças',
    abbreviation: 'MINFIN',
    minister: 'Dr. José Martins',
    units: 12,
    employees: 2450,
    status: 'active',
  },
  {
    id: '2',
    name: 'Ministério da Educação',
    abbreviation: 'MED',
    minister: 'Dra. Helena Sousa',
    units: 18,
    employees: 45000,
    status: 'active',
  },
  {
    id: '3',
    name: 'Ministério da Saúde',
    abbreviation: 'MINSA',
    minister: 'Dr. Paulo Neto',
    units: 15,
    employees: 32000,
    status: 'active',
  },
];

export const mockPayrollRuns: PayrollRun[] = [
  {
    id: '1',
    periodId: '2024-01',
    periodName: 'Janeiro 2024',
    status: 'paid',
    totalEmployees: 45230,
    totalGross: 18500000000,
    totalDeductions: 3700000000,
    totalNet: 14800000000,
    createdAt: '2024-01-25',
    processedAt: '2024-01-28',
    approvedAt: '2024-01-30',
  },
  {
    id: '2',
    periodId: '2024-02',
    periodName: 'Fevereiro 2024',
    status: 'approved',
    totalEmployees: 45312,
    totalGross: 18620000000,
    totalDeductions: 3724000000,
    totalNet: 14896000000,
    createdAt: '2024-02-25',
    processedAt: '2024-02-27',
    approvedAt: '2024-02-28',
  },
  {
    id: '3',
    periodId: '2024-03',
    periodName: 'Março 2024',
    status: 'processing',
    totalEmployees: 45400,
    totalGross: 18750000000,
    totalDeductions: 3750000000,
    totalNet: 15000000000,
    createdAt: '2024-03-25',
  },
];

export const mockFiscalYears: FiscalYear[] = [
  {
    id: '1',
    name: 'Exercício 2024',
    startDate: '2024-01-01',
    endDate: '2024-12-31',
    status: 'active',
    totalBudget: 15000000000000,
    executedBudget: 4200000000000,
  },
  {
    id: '2',
    name: 'Exercício 2023',
    startDate: '2023-01-01',
    endDate: '2023-12-31',
    status: 'closed',
    totalBudget: 13500000000000,
    executedBudget: 13100000000000,
  },
];

export const mockPaymentBatches: PaymentBatch[] = [
  {
    id: '1',
    reference: 'LOT-2024-001',
    description: 'Folha de Pagamento - Janeiro 2024',
    status: 'completed',
    totalOrders: 45230,
    totalAmount: 14800000000,
    createdAt: '2024-01-30',
    sentAt: '2024-01-30',
    paidAt: '2024-01-31',
  },
  {
    id: '2',
    reference: 'LOT-2024-002',
    description: 'Folha de Pagamento - Fevereiro 2024',
    status: 'processing',
    totalOrders: 45312,
    totalAmount: 14896000000,
    createdAt: '2024-02-28',
    sentAt: '2024-02-28',
  },
  {
    id: '3',
    reference: 'LOT-2024-003',
    description: 'Folha de Pagamento - Março 2024',
    status: 'pending',
    totalOrders: 45400,
    totalAmount: 15000000000,
    createdAt: '2024-03-28',
  },
];

export const mockBanks: Bank[] = [
  { id: '1', name: 'Banco Central da Guiné-Bissau', code: 'BCGB', swift: 'BCGBGWGB', status: 'active' },
  { id: '2', name: 'Banco da África Ocidental', code: 'BAO', swift: 'BAOGWGB', status: 'active' },
  { id: '3', name: 'Ecobank Guiné-Bissau', code: 'ECOBANK', swift: 'ECOAGWGB', status: 'active' },
  { id: '4', name: 'Banco Atlântico Guiné-Bissau', code: 'BAGB', swift: 'BAGBGWGB', status: 'active' },
  { id: '5', name: 'Banco Internacional da Guiné-Bissau', code: 'BIGB', swift: 'BIGBGWGB', status: 'active' },
];

export const mockAuditLogs: AuditLog[] = [
  {
    id: '1',
    userId: '1',
    userName: 'João Silva',
    action: 'CREATE',
    entity: 'Agent',
    entityId: 'AG-2024-008',
    details: 'Criou novo agente: Manuel Rodrigues',
    ipAddress: '192.168.1.100',
    timestamp: '2024-03-15T10:30:00Z',
  },
  {
    id: '2',
    userId: '2',
    userName: 'Maria Santos',
    action: 'UPDATE',
    entity: 'PayrollRun',
    entityId: '2024-03',
    details: 'Aprovou folha de pagamento de Março 2024',
    ipAddress: '192.168.1.105',
    timestamp: '2024-03-15T09:45:00Z',
  },
  {
    id: '3',
    userId: '1',
    userName: 'João Silva',
    action: 'DELETE',
    entity: 'BankAccount',
    entityId: 'BA-001',
    details: 'Removeu conta bancária do agente AG-2024-003',
    ipAddress: '192.168.1.100',
    timestamp: '2024-03-14T16:20:00Z',
  },
];

// Statistics for dashboard
export const dashboardStats = {
  totalAgents: 79450,
  activeAgents: 76230,
  totalMinistries: 28,
  totalUnits: 456,
  monthlyPayroll: 14800000000,
  pendingPayments: 3,
  budgetExecution: 28,
};
