<?php

namespace Database\Seeders;

use App\Models\Permission;
use Illuminate\Database\Seeder;

class RolePermissionSeeder extends Seeder
{
    public function run(): void
    {
        $permissions = [
            'dashboard_view',
            'users_view', 'users_create', 'users_edit', 'users_delete',
            'attendances_view', 'attendances_create', 'attendances_edit', 'attendances_delete', 'attendances_approve_regularization',
            'biometric_devices_view', 'biometric_devices_manage',
            'leaves_view', 'leaves_create', 'leaves_edit', 'leaves_delete', 'leaves_approve_reject', 'leave_types_create',
            'payrolls_view', 'payrolls_create', 'payrolls_edit', 'payrolls_delete',
            'departments_view', 'departments_create', 'departments_edit', 'departments_delete',
            'roles_view', 'roles_create', 'roles_edit', 'roles_delete',
            'view_reports', 'manage_settings',
            'assets_view', 'assets_create', 'assets_edit', 'assets_delete',
            'finance_view', 'finance_treasury_view', 'finance_operational', 'finance_team_view', 'finance_self_view',
            'finance_create', 'finance_edit', 'finance_delete',
            'expenses_create_own', 'expenses_approve',
            'documents_view', 'documents_create', 'documents_edit', 'documents_delete',
            'hr_operations_view', 'hr_operations_create', 'hr_operations_edit', 'hr_operations_delete',
            'complaints_view_own', 'complaints_create_own',
            'warnings_view_own',
            'promotions_view_own', 'appreciations_view_own', 'terminations_view_own',
            'announcements_view', 'announcements_create', 'announcements_edit', 'announcements_delete',
            'recruitment_view', 'recruitment_refer', 'recruitment_referrals_view', 'recruitment_create', 'recruitment_edit', 'recruitment_delete',
            'performance_view', 'performance_create', 'performance_edit', 'performance_delete',
        ];

        foreach ($permissions as $name) {
            Permission::firstOrCreate(
                ['name' => $name],
                ['name' => $name, 'display_name' => ucfirst(str_replace('_', ' ', $name))]
            );
        }
    }
}
