<?php
declare(strict_types=1);

return [
    // ── Departments ──
    ['GET',  '/hr/departments',                              'HR\Controllers\DepartmentController@index',           ['auth'], 'hr.department.view'],
    ['GET',  '/hr/departments/create',                       'HR\Controllers\DepartmentController@create',          ['auth'], 'hr.department.manage'],
    ['POST', '/hr/departments',                              'HR\Controllers\DepartmentController@store',           ['auth', 'csrf'], 'hr.department.manage'],
    ['GET',  '/hr/departments/{id:\d+}',                     'HR\Controllers\DepartmentController@show',            ['auth'], 'hr.department.view'],
    ['GET',  '/hr/departments/{id:\d+}/edit',                'HR\Controllers\DepartmentController@edit',            ['auth'], 'hr.department.manage'],
    ['POST', '/hr/departments/{id:\d+}',                     'HR\Controllers\DepartmentController@update',          ['auth', 'csrf'], 'hr.department.manage'],
    ['POST', '/hr/departments/{id:\d+}/archive',             'HR\Controllers\DepartmentController@archive',         ['auth', 'csrf'], 'hr.department.manage'],

    // ── Job Titles ──
    ['GET',  '/hr/job-titles',                               'HR\Controllers\JobTitleController@index',             ['auth'], 'hr.job_title.view'],
    ['GET',  '/hr/job-titles/create',                        'HR\Controllers\JobTitleController@create',            ['auth'], 'hr.job_title.manage'],
    ['POST', '/hr/job-titles',                               'HR\Controllers\JobTitleController@store',             ['auth', 'csrf'], 'hr.job_title.manage'],
    ['GET',  '/hr/job-titles/{id:\d+}/edit',                 'HR\Controllers\JobTitleController@edit',              ['auth'], 'hr.job_title.manage'],
    ['POST', '/hr/job-titles/{id:\d+}',                      'HR\Controllers\JobTitleController@update',            ['auth', 'csrf'], 'hr.job_title.manage'],
    ['POST', '/hr/job-titles/{id:\d+}/archive',              'HR\Controllers\JobTitleController@archive',           ['auth', 'csrf'], 'hr.job_title.manage'],

    // ── Employee Profiles ──
    ['GET',  '/hr/employees',                                'HR\Controllers\EmployeeProfileController@index',      ['auth'], 'hr.employee.view'],
    ['GET',  '/hr/employees/create',                         'HR\Controllers\EmployeeProfileController@create',     ['auth'], 'hr.employee.manage'],
    ['POST', '/hr/employees',                                'HR\Controllers\EmployeeProfileController@store',      ['auth', 'csrf'], 'hr.employee.manage'],
    ['GET',  '/hr/employees/{id:\d+}',                       'HR\Controllers\EmployeeProfileController@show',       ['auth'], 'hr.employee.view'],
    ['GET',  '/hr/employees/{id:\d+}/edit',                  'HR\Controllers\EmployeeProfileController@edit',       ['auth'], 'hr.employee.manage'],
    ['POST', '/hr/employees/{id:\d+}',                       'HR\Controllers\EmployeeProfileController@update',     ['auth', 'csrf'], 'hr.employee.manage'],
    ['POST', '/hr/employees/{id:\d+}/archive',               'HR\Controllers\EmployeeProfileController@archive',    ['auth', 'csrf'], 'hr.employee.manage'],
    ['GET',  '/hr/employees/{id:\d+}/salary',                'HR\Controllers\EmployeeProfileController@salary',     ['auth'], 'hr.employee.view_salary'],
    ['POST', '/hr/employees/{id:\d+}/salary',                'HR\Controllers\EmployeeProfileController@updateSalary',['auth', 'csrf'], 'hr.employee.manage_salary'],
    ['GET',  '/hr/employees/search-json',                    'HR\Controllers\EmployeeProfileController@searchJson', ['auth'], 'hr.employee.view'],

    // ── Contracts ──
    ['GET',  '/hr/contracts',                                'HR\Controllers\ContractController@index',             ['auth'], 'hr.contract.view'],
    ['GET',  '/hr/contracts/create',                         'HR\Controllers\ContractController@create',            ['auth'], 'hr.contract.manage'],
    ['POST', '/hr/contracts',                                'HR\Controllers\ContractController@store',             ['auth', 'csrf'], 'hr.contract.manage'],
    ['GET',  '/hr/contracts/{id:\d+}',                       'HR\Controllers\ContractController@show',              ['auth'], 'hr.contract.view'],
    ['GET',  '/hr/contracts/{id:\d+}/edit',                  'HR\Controllers\ContractController@edit',              ['auth'], 'hr.contract.manage'],
    ['POST', '/hr/contracts/{id:\d+}',                       'HR\Controllers\ContractController@update',            ['auth', 'csrf'], 'hr.contract.manage'],
    ['POST', '/hr/contracts/{id:\d+}/renew',                 'HR\Controllers\ContractController@renew',             ['auth', 'csrf'], 'hr.contract.manage'],
    ['POST', '/hr/contracts/{id:\d+}/terminate',             'HR\Controllers\ContractController@terminate',         ['auth', 'csrf'], 'hr.contract.manage'],

    // ── Salary Structures ──
    ['GET',  '/hr/salary-structures',                        'HR\Controllers\SalaryStructureController@index',      ['auth'], 'hr.employee.view_salary'],
    ['GET',  '/hr/salary-structures/create',                 'HR\Controllers\SalaryStructureController@create',     ['auth'], 'hr.employee.manage_salary'],
    ['POST', '/hr/salary-structures',                        'HR\Controllers\SalaryStructureController@store',      ['auth', 'csrf'], 'hr.employee.manage_salary'],
    ['GET',  '/hr/salary-structures/{id:\d+}',               'HR\Controllers\SalaryStructureController@show',       ['auth'], 'hr.employee.view_salary'],
    ['GET',  '/hr/salary-structures/{id:\d+}/edit',          'HR\Controllers\SalaryStructureController@edit',       ['auth'], 'hr.employee.manage_salary'],
    ['POST', '/hr/salary-structures/{id:\d+}',               'HR\Controllers\SalaryStructureController@update',     ['auth', 'csrf'], 'hr.employee.manage_salary'],
    ['POST', '/hr/salary-structures/{id:\d+}/components',    'HR\Controllers\SalaryStructureController@updateComponents', ['auth', 'csrf'], 'hr.employee.manage_salary'],

    // ── Attendance ──
    ['GET',  '/hr/attendance',                               'HR\Controllers\AttendanceController@index',           ['auth'], 'hr.attendance.view'],
    ['GET',  '/hr/attendance/daily',                         'HR\Controllers\AttendanceController@daily',           ['auth'], 'hr.attendance.manage'],
    ['POST', '/hr/attendance/daily',                         'HR\Controllers\AttendanceController@storeDailyBulk',  ['auth', 'csrf'], 'hr.attendance.manage'],
    ['GET',  '/hr/attendance/{id:\d+}/edit',                 'HR\Controllers\AttendanceController@edit',            ['auth'], 'hr.attendance.manage'],
    ['POST', '/hr/attendance/{id:\d+}',                      'HR\Controllers\AttendanceController@update',          ['auth', 'csrf'], 'hr.attendance.manage'],
    ['POST', '/hr/attendance/approve',                       'HR\Controllers\AttendanceController@approveBulk',     ['auth', 'csrf'], 'hr.attendance.approve'],
    ['GET',  '/hr/attendance/monthly/{employeeId:\d+}',      'HR\Controllers\AttendanceController@monthly',         ['auth'], 'hr.attendance.view'],

    // ── Leaves ──
    ['GET',  '/hr/leaves',                                   'HR\Controllers\LeaveController@index',                ['auth'], 'hr.leave.view'],
    ['GET',  '/hr/leaves/request',                           'HR\Controllers\LeaveController@requestForm',          ['auth'], 'hr.leave.request'],
    ['POST', '/hr/leaves/request',                           'HR\Controllers\LeaveController@storeRequest',         ['auth', 'csrf'], 'hr.leave.request'],
    ['GET',  '/hr/leaves/{id:\d+}',                          'HR\Controllers\LeaveController@show',                 ['auth'], 'hr.leave.view'],
    ['POST', '/hr/leaves/{id:\d+}/approve',                  'HR\Controllers\LeaveController@approve',              ['auth', 'csrf'], 'hr.leave.approve'],
    ['POST', '/hr/leaves/{id:\d+}/reject',                   'HR\Controllers\LeaveController@reject',               ['auth', 'csrf'], 'hr.leave.approve'],
    ['POST', '/hr/leaves/{id:\d+}/cancel',                   'HR\Controllers\LeaveController@cancel',               ['auth', 'csrf'], 'hr.leave.request'],
    ['GET',  '/hr/leaves/balances',                          'HR\Controllers\LeaveController@balances',             ['auth'], 'hr.leave.manage'],
    ['GET',  '/hr/leaves/balances/{employeeId:\d+}',         'HR\Controllers\LeaveController@employeeBalance',      ['auth'], 'hr.leave.manage'],
    ['POST', '/hr/leaves/balances/adjust',                   'HR\Controllers\LeaveController@adjustBalance',        ['auth', 'csrf'], 'hr.leave.manage'],
    ['GET',  '/hr/leaves/calendar',                          'HR\Controllers\LeaveController@calendar',             ['auth'], 'hr.leave.view'],

    // ── Payroll ──
    ['GET',  '/hr/payroll',                                  'HR\Controllers\PayrollController@index',              ['auth'], 'hr.payroll.view'],
    ['GET',  '/hr/payroll/periods',                          'HR\Controllers\PayrollController@periods',            ['auth'], 'hr.payroll.view'],
    ['POST', '/hr/payroll/periods',                          'HR\Controllers\PayrollController@createPeriod',       ['auth', 'csrf'], 'hr.payroll.process'],
    ['GET',  '/hr/payroll/periods/{id:\d+}',                 'HR\Controllers\PayrollController@showPeriod',         ['auth'], 'hr.payroll.view'],
    ['POST', '/hr/payroll/periods/{id:\d+}/calculate',       'HR\Controllers\PayrollController@calculate',          ['auth', 'csrf'], 'hr.payroll.process'],
    ['POST', '/hr/payroll/periods/{id:\d+}/approve',         'HR\Controllers\PayrollController@approve',            ['auth', 'csrf'], 'hr.payroll.approve'],
    ['POST', '/hr/payroll/periods/{id:\d+}/pay',             'HR\Controllers\PayrollController@markPaid',           ['auth', 'csrf'], 'hr.payroll.approve'],
    ['POST', '/hr/payroll/periods/{id:\d+}/close',           'HR\Controllers\PayrollController@closePeriod',        ['auth', 'csrf'], 'hr.payroll.approve'],
    ['GET',  '/hr/payroll/runs/{id:\d+}',                    'HR\Controllers\PayrollController@showRun',            ['auth'], 'hr.payroll.view'],
    ['GET',  '/hr/payroll/runs/{id:\d+}/slip',               'HR\Controllers\PayrollController@salarySlip',         ['auth'], 'hr.payroll.view'],
    ['GET',  '/hr/payroll/my-slips',                         'HR\Controllers\PayrollController@mySlips',            ['auth'], 'hr.payslip.view_own'],

    // ── Insurance ──
    ['GET',  '/hr/insurance',                                'HR\Controllers\InsuranceController@index',            ['auth'], 'hr.insurance.view'],
    ['GET',  '/hr/insurance/period/{periodId:\d+}',          'HR\Controllers\InsuranceController@periodRecords',    ['auth'], 'hr.insurance.view'],
    ['GET',  '/hr/insurance/employee/{employeeId:\d+}',      'HR\Controllers\InsuranceController@employeeHistory',  ['auth'], 'hr.insurance.view'],
    ['GET',  '/hr/insurance/form1',                          'HR\Controllers\InsuranceController@form1',            ['auth'], 'hr.insurance.manage'],
    ['GET',  '/hr/insurance/form6',                          'HR\Controllers\InsuranceController@form6',            ['auth'], 'hr.insurance.manage'],

    // ── Tax ──
    ['GET',  '/hr/tax',                                      'HR\Controllers\TaxController@index',                  ['auth'], 'hr.tax.view'],
    ['GET',  '/hr/tax/employee/{employeeId:\d+}',            'HR\Controllers\TaxController@employeeHistory',        ['auth'], 'hr.tax.view'],

    // ── Disciplinary ──
    ['GET',  '/hr/disciplinary',                             'HR\Controllers\DisciplinaryController@index',         ['auth'], 'hr.disciplinary.view'],
    ['GET',  '/hr/disciplinary/create',                      'HR\Controllers\DisciplinaryController@create',        ['auth'], 'hr.disciplinary.manage'],
    ['POST', '/hr/disciplinary',                             'HR\Controllers\DisciplinaryController@store',         ['auth', 'csrf'], 'hr.disciplinary.manage'],
    ['GET',  '/hr/disciplinary/{id:\d+}',                    'HR\Controllers\DisciplinaryController@show',          ['auth'], 'hr.disciplinary.view'],
    ['GET',  '/hr/disciplinary/{id:\d+}/edit',               'HR\Controllers\DisciplinaryController@edit',          ['auth'], 'hr.disciplinary.manage'],
    ['POST', '/hr/disciplinary/{id:\d+}',                    'HR\Controllers\DisciplinaryController@update',        ['auth', 'csrf'], 'hr.disciplinary.manage'],
    ['POST', '/hr/disciplinary/{id:\d+}/decide',             'HR\Controllers\DisciplinaryController@decide',        ['auth', 'csrf'], 'hr.disciplinary.manage'],
    ['POST', '/hr/disciplinary/{id:\d+}/appeal',             'HR\Controllers\DisciplinaryController@appeal',        ['auth', 'csrf'], 'hr.disciplinary.view'],

    // ── Loans ──
    ['GET',  '/hr/loans',                                    'HR\Controllers\LoanController@index',                 ['auth'], 'hr.loan.view'],
    ['GET',  '/hr/loans/create',                             'HR\Controllers\LoanController@create',                ['auth'], 'hr.loan.manage'],
    ['POST', '/hr/loans',                                    'HR\Controllers\LoanController@store',                 ['auth', 'csrf'], 'hr.loan.manage'],
    ['GET',  '/hr/loans/{id:\d+}',                           'HR\Controllers\LoanController@show',                  ['auth'], 'hr.loan.view'],
    ['POST', '/hr/loans/{id:\d+}/approve',                   'HR\Controllers\LoanController@approve',               ['auth', 'csrf'], 'hr.loan.approve'],
    ['POST', '/hr/loans/{id:\d+}/reject',                    'HR\Controllers\LoanController@reject',                ['auth', 'csrf'], 'hr.loan.approve'],
    ['POST', '/hr/loans/{id:\d+}/disburse',                  'HR\Controllers\LoanController@disburse',              ['auth', 'csrf'], 'hr.loan.manage'],

    // ── End of Service ──
    ['GET',  '/hr/end-of-service',                           'HR\Controllers\EndOfServiceController@index',         ['auth'], 'hr.eos.view'],
    ['GET',  '/hr/end-of-service/create',                    'HR\Controllers\EndOfServiceController@create',        ['auth'], 'hr.eos.manage'],
    ['POST', '/hr/end-of-service',                           'HR\Controllers\EndOfServiceController@store',         ['auth', 'csrf'], 'hr.eos.manage'],
    ['GET',  '/hr/end-of-service/{id:\d+}',                  'HR\Controllers\EndOfServiceController@show',          ['auth'], 'hr.eos.view'],
    ['POST', '/hr/end-of-service/{id:\d+}/calculate',        'HR\Controllers\EndOfServiceController@calculate',     ['auth', 'csrf'], 'hr.eos.manage'],
    ['POST', '/hr/end-of-service/{id:\d+}/approve',          'HR\Controllers\EndOfServiceController@approve',       ['auth', 'csrf'], 'hr.eos.approve'],
    ['POST', '/hr/end-of-service/{id:\d+}/pay',              'HR\Controllers\EndOfServiceController@markPaid',      ['auth', 'csrf'], 'hr.eos.approve'],

    // ── Performance ──
    ['GET',  '/hr/performance',                              'HR\Controllers\PerformanceController@index',          ['auth'], 'hr.performance.view'],
    ['GET',  '/hr/performance/cycles',                       'HR\Controllers\PerformanceController@cycles',         ['auth'], 'hr.performance.manage'],
    ['POST', '/hr/performance/cycles',                       'HR\Controllers\PerformanceController@createCycle',    ['auth', 'csrf'], 'hr.performance.manage'],
    ['GET',  '/hr/performance/cycles/{id:\d+}',              'HR\Controllers\PerformanceController@showCycle',      ['auth'], 'hr.performance.view'],
    ['GET',  '/hr/performance/reviews/{id:\d+}',             'HR\Controllers\PerformanceController@showReview',     ['auth'], 'hr.performance.view'],
    ['GET',  '/hr/performance/reviews/{id:\d+}/edit',        'HR\Controllers\PerformanceController@editReview',     ['auth'], 'hr.performance.manage'],
    ['POST', '/hr/performance/reviews/{id:\d+}',             'HR\Controllers\PerformanceController@updateReview',   ['auth', 'csrf'], 'hr.performance.manage'],

    // ── Employee Documents ──
    ['GET',  '/hr/documents',                                'HR\Controllers\EmployeeDocumentController@index',     ['auth'], 'hr.document.view'],
    ['GET',  '/hr/documents/employee/{employeeId:\d+}',      'HR\Controllers\EmployeeDocumentController@byEmployee',['auth'], 'hr.document.view'],
    ['POST', '/hr/documents/upload',                         'HR\Controllers\EmployeeDocumentController@upload',    ['auth', 'csrf'], 'hr.document.manage'],
    ['POST', '/hr/documents/{id:\d+}/verify',                'HR\Controllers\EmployeeDocumentController@verify',    ['auth', 'csrf'], 'hr.document.manage'],
    ['POST', '/hr/documents/{id:\d+}/archive',               'HR\Controllers\EmployeeDocumentController@archive',   ['auth', 'csrf'], 'hr.document.manage'],

    // ── Holidays ──
    ['GET',  '/hr/holidays',                                 'HR\Controllers\HolidayController@index',              ['auth'], 'hr.holiday.manage'],
    ['GET',  '/hr/holidays/create',                          'HR\Controllers\HolidayController@create',             ['auth'], 'hr.holiday.manage'],
    ['POST', '/hr/holidays',                                 'HR\Controllers\HolidayController@store',              ['auth', 'csrf'], 'hr.holiday.manage'],
    ['GET',  '/hr/holidays/{id:\d+}/edit',                   'HR\Controllers\HolidayController@edit',               ['auth'], 'hr.holiday.manage'],
    ['POST', '/hr/holidays/{id:\d+}',                        'HR\Controllers\HolidayController@update',             ['auth', 'csrf'], 'hr.holiday.manage'],
    ['POST', '/hr/holidays/{id:\d+}/archive',                'HR\Controllers\HolidayController@archive',            ['auth', 'csrf'], 'hr.holiday.manage'],

    // ── Work Schedules ──
    ['GET',  '/hr/schedules',                                'HR\Controllers\WorkScheduleController@index',         ['auth'], 'hr.schedule.manage'],
    ['GET',  '/hr/schedules/create',                         'HR\Controllers\WorkScheduleController@create',        ['auth'], 'hr.schedule.manage'],
    ['POST', '/hr/schedules',                                'HR\Controllers\WorkScheduleController@store',         ['auth', 'csrf'], 'hr.schedule.manage'],
    ['GET',  '/hr/schedules/{id:\d+}/edit',                  'HR\Controllers\WorkScheduleController@edit',          ['auth'], 'hr.schedule.manage'],
    ['POST', '/hr/schedules/{id:\d+}',                       'HR\Controllers\WorkScheduleController@update',        ['auth', 'csrf'], 'hr.schedule.manage'],

    // ── Overtime ──
    ['GET',  '/hr/overtime',                                 'HR\Controllers\OvertimeController@index',             ['auth'], 'hr.overtime.view'],
    ['GET',  '/hr/overtime/create',                          'HR\Controllers\OvertimeController@create',            ['auth'], 'hr.overtime.create'],
    ['POST', '/hr/overtime',                                 'HR\Controllers\OvertimeController@store',             ['auth', 'csrf'], 'hr.overtime.create'],
    ['POST', '/hr/overtime/{id:\d+}/approve',                'HR\Controllers\OvertimeController@approve',           ['auth', 'csrf'], 'hr.overtime.approve'],
    ['POST', '/hr/overtime/{id:\d+}/reject',                 'HR\Controllers\OvertimeController@reject',            ['auth', 'csrf'], 'hr.overtime.approve'],
    ['GET',  '/hr/overtime/types',                           'HR\Controllers\OvertimeController@types',             ['auth'], 'hr.overtime.manage'],
    ['POST', '/hr/overtime/types',                           'HR\Controllers\OvertimeController@storeType',         ['auth', 'csrf'], 'hr.overtime.manage'],

    // ── Shifts ──
    ['GET',  '/hr/shifts',                                   'HR\Controllers\ShiftController@index',                ['auth'], 'hr.shifts.view'],
    ['GET',  '/hr/shifts/create',                            'HR\Controllers\ShiftController@create',               ['auth'], 'hr.shifts.manage'],
    ['POST', '/hr/shifts',                                   'HR\Controllers\ShiftController@store',                ['auth', 'csrf'], 'hr.shifts.manage'],
    ['GET',  '/hr/shifts/assignments',                       'HR\Controllers\ShiftController@assignments',          ['auth'], 'hr.shifts.manage'],
    ['POST', '/hr/shifts/assignments',                       'HR\Controllers\ShiftController@assignShift',          ['auth', 'csrf'], 'hr.shifts.manage'],
    ['GET',  '/hr/shifts/violations',                        'HR\Controllers\ShiftController@violations',           ['auth'], 'hr.attendance.view'],

    // ── Permission Requests (Hourly Leaves) ──
    ['GET',  '/hr/permissions',                              'HR\Controllers\PermissionRequestController@index',    ['auth'], 'hr.permissions.view'],
    ['GET',  '/hr/permissions/create',                       'HR\Controllers\PermissionRequestController@create',   ['auth'], 'hr.permissions.create'],
    ['POST', '/hr/permissions',                              'HR\Controllers\PermissionRequestController@store',    ['auth', 'csrf'], 'hr.permissions.create'],
    ['POST', '/hr/permissions/{id:\d+}/approve',             'HR\Controllers\PermissionRequestController@approve',  ['auth', 'csrf'], 'hr.permissions.approve'],
    ['POST', '/hr/permissions/{id:\d+}/reject',              'HR\Controllers\PermissionRequestController@reject',   ['auth', 'csrf'], 'hr.permissions.approve'],

    // ── HR Reports ──
    ['GET',  '/hr/reports',                                  'HR\Controllers\HrReportController@index',             ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/headcount',                        'HR\Controllers\HrReportController@headcount',         ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/payroll-summary',                  'HR\Controllers\HrReportController@payrollSummary',    ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/attendance-summary',               'HR\Controllers\HrReportController@attendanceSummary', ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/leave-summary',                    'HR\Controllers\HrReportController@leaveSummary',      ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/insurance-summary',                'HR\Controllers\HrReportController@insuranceSummary',  ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/tax-summary',                      'HR\Controllers\HrReportController@taxSummary',        ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/loan-summary',                     'HR\Controllers\HrReportController@loanSummary',       ['auth'], 'hr.report.view'],
    ['GET',  '/hr/reports/contract-expiry',                  'HR\Controllers\HrReportController@contractExpiry',    ['auth'], 'hr.report.view'],
];
