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.');
}
}