HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/api_matriculas/database/seeders/PermissionsSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;

class PermissionsSeeder extends Seeder
{
    public function run()
    {
        $now = Carbon::now();

        $permissions = [

            // ======== PERFILES ========
            ['permission' => 'Listar Perfiles', 'description' => 'Permite visualizar listado de perfiles', 'order' => 1, 'category' => 'PERFILES', 'code' => 'LIST_PROFILES', 'front_code' => 'profiles.list'],
            ['permission' => 'Crear Perfiles', 'description' => 'Permite crear perfiles', 'order' => 2, 'category' => 'PERFILES', 'code' => 'ADD_PROFILES', 'front_code' => 'profiles.create'],
            ['permission' => 'Editar Perfiles', 'description' => 'Permite editar perfiles', 'order' => 3, 'category' => 'PERFILES', 'code' => 'EDIT_PROFILES', 'front_code' => 'profiles.edit'],
            ['permission' => 'Eliminar Perfiles', 'description' => 'Permite eliminar perfiles', 'order' => 4, 'category' => 'PERFILES', 'code' => 'DEL_PROFILES', 'front_code' => 'profiles.delete'],
            ['permission' => 'Asignar permisos a Perfil', 'description' => 'Permite asignar y quitar permisos a los perfiles', 'order' => 5, 'category' => 'PERFILES', 'code' => 'EDIT_PERMISSIONS', 'front_code' => 'profiles.assign'],

            // ======== USUARIOS ========
            ['permission' => 'Listar Usuarios', 'description' => 'Permite visualizar listado de usuarios', 'order' => 1, 'category' => 'USUARIOS', 'code' => 'LIST_USERS', 'front_code' => 'users.list'],
            ['permission' => 'Crear Usuarios', 'description' => 'Permite crear usuarios', 'order' => 2, 'category' => 'USUARIOS', 'code' => 'ADD_USERS', 'front_code' => 'users.create'],
            ['permission' => 'Editar Usuarios', 'description' => 'Permite editar usuarios', 'order' => 3, 'category' => 'USUARIOS', 'code' => 'EDIT_USERS', 'front_code' => 'users.edit'],
            ['permission' => 'Eliminar Usuarios', 'description' => 'Permite eliminar usuarios', 'order' => 4, 'category' => 'USUARIOS', 'code' => 'DEL_USERS', 'front_code' => 'users.delete'],

            // ======== APODERADOS ========
            ['permission' => 'Listar Apoderados', 'description' => 'Permite visualizar listado de Apoderados', 'order' => 1, 'category' => 'APODERADOS', 'code' => 'LIST_PARENTS', 'front_code' => 'parents.list'],
            ['permission' => 'Ingresar Apoderados', 'description' => 'Permite ingresar Apoderados', 'order' => 2, 'category' => 'APODERADOS', 'code' => 'ADD_PARENTS', 'front_code' => 'parents.create'],
            ['permission' => 'Editar Apoderados', 'description' => 'Permite editar Apoderados', 'order' => 3, 'category' => 'APODERADOS', 'code' => 'EDIT_PARENTS', 'front_code' => 'parents.edit'],
            ['permission' => 'Eliminar Apoderados', 'description' => 'Permite eliminar Apoderados', 'order' => 4, 'category' => 'APODERADOS', 'code' => 'DEL_PARENTS', 'front_code' => 'parents.delete'],

            // ======== ESTUDIANTES ========
            ['permission' => 'Listar Estudiantes', 'description' => 'Permite visualizar listado de Estudiantes', 'order' => 1, 'category' => 'ESTUDIANTES', 'code' => 'LIST_STUDENTS', 'front_code' => 'students.list'],
            ['permission' => 'Ingresar Estudiantes', 'description' => 'Permite ingresar Estudiantes', 'order' => 2, 'category' => 'ESTUDIANTES', 'code' => 'ADD_STUDENTS', 'front_code' => 'students.create'],
            ['permission' => 'Editar Estudiantes', 'description' => 'Permite editar Estudiantes', 'order' => 3, 'category' => 'ESTUDIANTES', 'code' => 'EDIT_STUDENTS', 'front_code' => 'students.edit'],
            ['permission' => 'Eliminar Estudiantes', 'description' => 'Permite eliminar Estudiantes', 'order' => 4, 'category' => 'ESTUDIANTES', 'code' => 'DEL_STUDENTS', 'front_code' => 'students.delete'],

            // ======== POSTULACIONES ========
            ['permission' => 'Listar Postulaciones', 'description' => 'Permite visualizar listado de Postulaciones', 'order' => 1, 'category' => 'POSTULACIONES', 'code' => 'LIST_POSTULATIONS', 'front_code' => 'postulations.list'],
            ['permission' => 'Ingresar Postulaciones', 'description' => 'Permite ingresar Postulaciones', 'order' => 2, 'category' => 'POSTULACIONES', 'code' => 'ADD_POSTULATIONS', 'front_code' => 'postulations.create'],
            ['permission' => 'Editar Postulaciones', 'description' => 'Permite editar Postulaciones', 'order' => 3, 'category' => 'POSTULACIONES', 'code' => 'EDIT_POSTULATIONS', 'front_code' => 'postulations.edit'],
            ['permission' => 'Eliminar Postulaciones', 'description' => 'Permite eliminar Postulaciones', 'order' => 4, 'category' => 'POSTULACIONES', 'code' => 'DEL_POSTULATIONS', 'front_code' => 'postulations.delete'],

            // ======== CONTRATOS ========
            ['permission' => 'Listar Contratos', 'description' => 'Permite visualizar listado de Contratos', 'order' => 1, 'category' => 'CONTRATOS', 'code' => 'LIST_CONTRACTS', 'front_code' => 'contracts.list'],
            ['permission' => 'Generar Contratos', 'description' => 'Permite crear/generar Contratos', 'order' => 2, 'category' => 'CONTRATOS', 'code' => 'ADD_CONTRACTS', 'front_code' => 'contracts.create'],
            ['permission' => 'Editar Contratos', 'description' => 'Permite editar Contratos', 'order' => 3, 'category' => 'CONTRATOS', 'code' => 'EDIT_CONTRACTS', 'front_code' => 'contracts.edit'],
            ['permission' => 'Firmar Contratos', 'description' => 'Permite enviar a firma Contratos', 'order' => 4, 'category' => 'CONTRATOS', 'code' => 'SIGN_CONTRACTS', 'front_code' => 'contracts.sign'],
            ['permission' => 'Cambiar Apoderado de Contrato', 'description' => 'Permite cambiar el apoderado financiero de un contrato sin pagos', 'order' => 5, 'category' => 'CONTRATOS', 'code' => 'CHANGE_PARENT_CONTRACT', 'front_code' => 'contracts.change_parent'],

            // ======== PAGOS / CONCEPTOS ========
            ['permission' => 'Listar Pagos', 'description' => 'Permite visualizar pagos', 'order' => 1, 'category' => 'PAGOS', 'code' => 'LIST_PAYMENTS', 'front_code' => 'payments.list'],
            ['permission' => 'Registrar Pagos', 'description' => 'Permite registrar pagos manuales', 'order' => 2, 'category' => 'PAGOS', 'code' => 'ADD_PAYMENTS', 'front_code' => 'payments.create'],
            ['permission' => 'Registrar Pago Manual de Colegiatura', 'description' => 'Permite registrar manualmente el pago de colegiatura (transferencia, débito, crédito u otros fuera del flujo automático)', 'order' => 3, 'category' => 'PAGOS', 'code' => 'REGISTER_MANUAL_PAYMENT', 'front_code' => 'payments.register_manual'],
            ['permission' => 'Conciliar Pagos', 'description' => 'Permite conciliar pagos', 'order' => 4, 'category' => 'PAGOS', 'code' => 'CONC_PAYMENTS', 'front_code' => 'payments.conciliate'],
            ['permission' => 'Listar Conceptos', 'description' => 'Permite listar conceptos de pago', 'order' => 5, 'category' => 'PAGOS', 'code' => 'LIST_CONCEPTS', 'front_code' => 'concepts.list'],
            ['permission' => 'Configurar Conceptos', 'description' => 'Permite configurar conceptos de pago', 'order' => 6, 'category' => 'PAGOS', 'code' => 'CONFIG_CONCEPTS', 'front_code' => 'concepts.config'],

            // ======== REPORTES ========
            ['permission' => 'Acceder Reportes', 'description' => 'Permite acceder a la sección de reportes', 'order' => 1, 'category' => 'REPORTES', 'code' => 'VIEW_REPORTS', 'front_code' => 'reports.view'],

            // ======== INTEGRACIONES ========
            ['permission' => 'Acceder Integraciones', 'description' => 'Permite acceder a la sección de integraciones', 'order' => 1, 'category' => 'INTEGRACIONES', 'code' => 'VIEW_INTEGRATIONS', 'front_code' => 'integrations.view'],

            // ======== CONFIGURACIÓN ========
            ['permission' => 'Acceder Configuración', 'description' => 'Permite acceder a panel de configuración', 'order' => 1, 'category' => 'CONFIGURACION', 'code' => 'VIEW_SETTINGS', 'front_code' => 'settings.view'],
            ['permission' => 'Configurar Toku', 'description' => 'Permite configurar integración con Toku', 'order' => 2, 'category' => 'CONFIGURACION', 'code' => 'CONFIG_TOKU', 'front_code' => 'settings.toku'],
            ['permission' => 'Configurar FirmaKi', 'description' => 'Permite configurar integración con FirmAki', 'order' => 3, 'category' => 'CONFIGURACION', 'code' => 'CONFIG_FIRMAKI', 'front_code' => 'settings.firmaki'],
            ['permission' => 'Configurar Periodos', 'description' => 'Permite crear y modificar periodos académicos', 'order' => 4, 'category' => 'CONFIGURACION', 'code' => 'CONFIG_PERIODS', 'front_code' => 'settings.periods'],

            // ======== PRESENCIAL ========
            ['permission' => 'Crear Contrato Presencial', 'description' => 'Permite crear contratos en flujo presencial', 'order' => 1, 'category' => 'PRESENCIAL', 'code' => 'CREATE_PRESENCIAL', 'front_code' => 'presencial.create'],
            ['permission' => 'Registrar Pago Presencial', 'description' => 'Permite registrar pagos presenciales', 'order' => 2, 'category' => 'PRESENCIAL', 'code' => 'PAY_PRESENCIAL', 'front_code' => 'presencial.payment'],
            ['permission' => 'Conciliación Presencial', 'description' => 'Permite acceder al reporte de conciliación presencial', 'order' => 3, 'category' => 'PRESENCIAL', 'code' => 'CONC_PRESENCIAL', 'front_code' => 'presencial.reconciliation'],

            // ======== LOGS ========
            ['permission' => 'Ver Logs de Integración', 'description' => 'Permite ver logs de API inbound y sincronización', 'order' => 1, 'category' => 'LOGS', 'code' => 'VIEW_INTEGRATION_LOGS', 'front_code' => 'integration_logs.view'],
            ['permission' => 'Ver Logs de Sincronización', 'description' => 'Permite ver logs de sincronización con Odoo', 'order' => 2, 'category' => 'LOGS', 'code' => 'VIEW_SYNC_LOGS', 'front_code' => 'sync_logs.view'],

            // ======== PRECIOS POR PERIODO ========
            ['permission' => 'Gestionar Precios por Periodo', 'description' => 'Permite configurar precios de matrícula por periodo', 'order' => 1, 'category' => 'PRECIOS', 'code' => 'MANAGE_PERIOD_PRICING', 'front_code' => 'period_pricing.manage'],
        ];

        foreach ($permissions as $row) {
            DB::table('permissions')->updateOrInsert(
                ['code' => $row['code']],
                array_merge($row, [
                    'status'     => 1,
                    'created_at' => $now,
                    'updated_at' => $now,
                ])
            );
        }

        $this->command->info('✅ Se han procesado ' . count($permissions) . ' permisos correctamente.');
    }
}