228 lines
9.3 KiB
PHP
228 lines
9.3 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
/**
|
|
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
|
|
*/
|
|
|
|
use App\Models\PermissionType;
|
|
use App\Models\Role;
|
|
use Illuminate\Database\Seeder;
|
|
use Notsoweb\LaravelCore\Traits\MySql\RolePermission;
|
|
use Spatie\Permission\Models\Permission;
|
|
|
|
/**
|
|
* Roles y permisos
|
|
*
|
|
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
|
|
*
|
|
* @version 1.0.0
|
|
*/
|
|
class RoleSeeder extends Seeder
|
|
{
|
|
use RolePermission;
|
|
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
// === USUARIOS ===
|
|
$users = PermissionType::updateOrCreate(['name' => 'Usuarios']);
|
|
|
|
[
|
|
$userIndex,
|
|
$userCreate,
|
|
$userEdit,
|
|
$userDestroy
|
|
] = $this->onCRUD('users', $users, 'api');
|
|
|
|
// === ROLES ===
|
|
$roles = PermissionType::updateOrCreate(['name' => 'Roles']);
|
|
|
|
[
|
|
$roleIndex,
|
|
$roleCreate,
|
|
$roleEdit,
|
|
$roleDestroy
|
|
] = $this->onCRUD('roles', $roles, 'api');
|
|
|
|
$rolePermissions = $this->onPermission('roles.permissions', 'Permisos de roles', $roles, 'api');
|
|
|
|
// === MÓDULOS ===
|
|
$modules = PermissionType::updateOrCreate(['name' => 'Módulos']);
|
|
|
|
[
|
|
$moduleIndex,
|
|
$moduleCreate,
|
|
$moduleEdit,
|
|
$moduleDestroy
|
|
] = $this->onCRUD('module', $modules, 'api');
|
|
|
|
$moduleShow = $this->onPermission('module.show', 'Ver módulo', $modules, 'api');
|
|
$moduleToggleStatus = $this->onPermission('module.toggle_status', 'Cambiar estado del módulo', $modules, 'api');
|
|
|
|
// === DISPOSITIVOS MÓVILES ===
|
|
$devices = PermissionType::updateOrCreate(['name' => 'Dispositivos Móviles']);
|
|
|
|
[
|
|
$deviceIndex,
|
|
$deviceCreate,
|
|
$deviceEdit,
|
|
$deviceDestroy
|
|
] = $this->onCRUD('devices', $devices, 'api');
|
|
|
|
$deviceToggleStatus = $this->onPermission('devices.toggle_status', 'Cambiar estado del dispositivo', $devices, 'api');
|
|
|
|
// === INSCRIPCIONES ===
|
|
$inscriptions = PermissionType::updateOrCreate(['name' => 'Proceso de Sustitución por primera vez']);
|
|
|
|
$inscriptionVehicle = $this->onPermission('inscription.vehicle', 'Inscribir vehículo', $inscriptions, 'api');
|
|
$inscriptionSearchNational = $this->onPermission('inscription.search.national', 'Buscar en consulta nacional', $inscriptions, 'api');
|
|
$inscriptionSearch = $this->onPermission('inscription.search', 'Buscar en consulta', $inscriptions, 'api');
|
|
|
|
// === CANCELACIONES ===
|
|
$cancellations = PermissionType::updateOrCreate(['name' => 'Cancelaciones']);
|
|
|
|
$cancellationTagNoAsignado = $this->onPermission('cancellations.cancel_tag_no_asignado', 'Cancelar constancia no asignada', $cancellations, 'api');
|
|
|
|
// === SISTEMA ===
|
|
$system = PermissionType::updateOrCreate(['name' => 'Sistema']);
|
|
|
|
$systemSettings = $this->onPermission('system.settings', 'Configurar credenciales REPUVE', $system, 'api');
|
|
|
|
// === ACTUALIZAR REGISTRO ===
|
|
$updates = PermissionType::updateOrCreate(['name' => 'Actualizar Registro']);
|
|
|
|
$updateVehicleData = $this->onPermission('updates.vehicle-data', 'Actualizar datos de vehículo por formulario', $updates, 'api');
|
|
$updateVehicleUpdate = $this->onPermission('updates.vehicle-update', 'Actualizar datos de vehículo', $updates, 'api');
|
|
$updateResendToRepuve = $this->onPermission('updates.resend-to-repuve', 'Reenviar a REPUVE', $updates, 'api');
|
|
|
|
// === GENERAR FORMATOS ===
|
|
$formats = PermissionType::updateOrCreate(['name' => 'Generar Formatos']);
|
|
|
|
$recordGeneratePdf = $this->onPermission('records.generate_pdf', 'Generar Hoja de recepción', $formats, 'api');
|
|
$recordGeneratePdfForm = $this->onPermission('records.generate_pdf_form', 'Generar solicitud de sustitución', $formats, 'api');
|
|
$recordGeneratePdfVerification = $this->onPermission('records.generate_pdf_verification', 'Generar Hoja de verificación', $formats, 'api');
|
|
$recordGeneratePdfConstancia = $this->onPermission('records.generate_pdf_constancia', 'Generar Impresión en la constancia', $formats, 'api');
|
|
|
|
// === REPORTES ===
|
|
$reports = PermissionType::updateOrCreate(['name' => 'Reportes - Excel']);
|
|
|
|
$reportVehicleUpdates = $this->onPermission('reports.vehicle_updates.index', 'Reporte de actualizaciones', $reports, 'api');
|
|
$reportSubstitutions = $this->onPermission('reports.substitutions.index', 'Reporte de sustituciones', $reports, 'api');
|
|
$reportCancellations = $this->onPermission('reports.cancellations.index', 'Reporte de cancelaciones', $reports, 'api');
|
|
$reportGeneral = $this->onPermission('reports.general.index', 'Reporte general', $reports, 'api');
|
|
$reportSearchRecords = $this->onPermission('reports.search_records.index', 'Reporte de consulta nacional', $reports, 'api');
|
|
|
|
// === ACTIVIDAD ===
|
|
$activities = PermissionType::updateOrCreate(['name' => 'Actividad']);
|
|
|
|
$activityIndex = $this->onPermission('activities.index', 'Ver actividad de usuarios', $activities, 'api');
|
|
|
|
// === CAJAS ===
|
|
$packages = PermissionType::updateOrCreate(['name' => 'Cajas']);
|
|
|
|
[
|
|
$packageIndex,
|
|
$packageCreate,
|
|
$packageEdit,
|
|
$packageDestroy
|
|
] = $this->onCRUD('packages', $packages, 'api');
|
|
|
|
$packageBoxTags = $this->onPermission('packages.box_tags', 'Ver constancias de caja', $packages, 'api');
|
|
|
|
// === CONSTANCIAS DE INSCRIPCIÓN ===
|
|
$tags = PermissionType::updateOrCreate(['name' => 'Constancias de Inscripción']);
|
|
|
|
[
|
|
$tagIndex,
|
|
$tagCreate,
|
|
$tagEdit,
|
|
$tagDestroy,
|
|
] = $this->onCRUD('tags', $tags, 'api');
|
|
|
|
$tagAssignToModule = $this->onPermission('tags.assign_to_module', 'Asignar etiquetas a módulo', $tags, 'api');
|
|
|
|
// =========================================================
|
|
// ROLES
|
|
// =========================================================
|
|
|
|
// Desarrollador
|
|
Role::updateOrCreate([
|
|
'name' => 'developer',
|
|
'guard_name' => 'api'
|
|
], ['description' => 'Desarrollador'])->syncPermissions(Permission::all());
|
|
|
|
// Administrador
|
|
Role::updateOrCreate([
|
|
'name' => 'admin',
|
|
'guard_name' => 'api'
|
|
], ['description' => 'Administrador'])->syncPermissions(
|
|
// Usuarios
|
|
$userIndex, $userCreate, $userEdit, $userDestroy,
|
|
// Roles
|
|
$roleIndex, $roleCreate, $roleEdit, $roleDestroy, $rolePermissions,
|
|
// Módulos
|
|
$moduleIndex, $moduleCreate, $moduleEdit, $moduleDestroy, $moduleShow, $moduleToggleStatus,
|
|
// Dispositivos
|
|
$deviceIndex, $deviceCreate, $deviceEdit, $deviceDestroy, $deviceToggleStatus,
|
|
// Sistema
|
|
$systemSettings,
|
|
// Inscripciones
|
|
$inscriptionVehicle, $inscriptionSearch, $inscriptionSearchNational,
|
|
// Cancelaciones
|
|
$cancellationTagNoAsignado,
|
|
// Actualizaciones
|
|
$updateVehicleData, $updateVehicleUpdate, $updateResendToRepuve,
|
|
// Generar formatos
|
|
$recordGeneratePdf, $recordGeneratePdfVerification, $recordGeneratePdfConstancia, $recordGeneratePdfForm,
|
|
// Reportes
|
|
$reportVehicleUpdates, $reportSubstitutions, $reportCancellations,
|
|
$reportGeneral, $reportSearchRecords,
|
|
// Cajas
|
|
$packageIndex, $packageCreate, $packageEdit, $packageDestroy, $packageBoxTags,
|
|
// Constancias
|
|
$tagIndex, $tagCreate, $tagEdit, $tagDestroy,
|
|
);
|
|
|
|
// Encargado
|
|
Role::updateOrCreate([
|
|
'name' => 'encargado',
|
|
'guard_name' => 'api'
|
|
], ['description' => 'Encargado'])->syncPermissions(
|
|
// Dispositivos
|
|
$deviceIndex, $deviceCreate, $deviceEdit, $deviceDestroy, $deviceToggleStatus,
|
|
// Inscripciones
|
|
$inscriptionVehicle, $inscriptionSearch, $inscriptionSearchNational,
|
|
// Cancelaciones
|
|
$cancellationTagNoAsignado,
|
|
// Actualizaciones
|
|
$updateVehicleData, $updateVehicleUpdate,
|
|
// Generar formatos
|
|
$recordGeneratePdf, $recordGeneratePdfVerification, $recordGeneratePdfConstancia, $recordGeneratePdfForm,
|
|
// Reportes
|
|
$reportVehicleUpdates, $reportSubstitutions, $reportCancellations,
|
|
$reportGeneral, $reportSearchRecords,
|
|
// Cajas
|
|
$packageIndex, $packageCreate, $packageEdit, $packageDestroy, $packageBoxTags,
|
|
// Constancias
|
|
$tagIndex, $tagCreate, $tagEdit, $tagDestroy, $tagAssignToModule,
|
|
);
|
|
|
|
// Perito
|
|
Role::updateOrCreate([
|
|
'name' => 'perito',
|
|
'guard_name' => 'api'
|
|
], ['description' => 'Perito'])->syncPermissions(
|
|
// Generar formatos
|
|
$recordGeneratePdf, $recordGeneratePdfVerification, $recordGeneratePdfConstancia, $recordGeneratePdfForm,
|
|
// Cajas
|
|
$packageIndex, $packageBoxTags,
|
|
// Constancias
|
|
$tagIndex,
|
|
);
|
|
}
|
|
}
|