FIX: Correción modulos y asignación de permisos

This commit is contained in:
Juan Felipe Zapata Moreno 2025-11-15 10:07:59 -06:00
parent 82b7a179f5
commit 27cbc965b5
3 changed files with 278 additions and 9 deletions

View File

@ -164,6 +164,38 @@ public function update(ModuleUpdateRequest $request, int $id)
}
}
public function destroy(int $id)
{
try {
$module = Module::findOrFail($id);
DB::beginTransaction();
$module->delete();
DB::commit();
return ApiResponse::OK->response([
'message' => 'Módulo eliminado exitosamente',
]);
} catch (ModelNotFoundException $e) {
return ApiResponse::NOT_FOUND->response([
'message' => 'Módulo no encontrado',
]);
} catch (\Exception $e) {
DB::rollBack();
Log::error('Error al eliminar módulo: ' . $e->getMessage(), [
'module_id' => $id,
'trace' => $e->getTraceAsString()
]);
return ApiResponse::INTERNAL_ERROR->response([
'message' => 'Error al eliminar el módulo',
'error' => $e->getMessage(),
]);
}
}
/**
* Cambiar solo el status de un módulo
*/

View File

@ -14,9 +14,10 @@ public function authorize(): bool
public function rules(): array
{
return [
'box_number' => ['required', 'string', 'max:100'],
'starting_page' => ['required', 'max:255'],
'ending_page' => ['required', 'max:255'],
'lot' => ['required', 'string'],
'box_number' => ['required', 'string'],
'starting_page' => ['required'],
'ending_page' => ['required'],
'module_id' => ['required', 'exists:modules,id'],
];
}

View File

@ -1,4 +1,7 @@
<?php namespace Database\Seeders;
<?php
namespace Database\Seeders;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
@ -11,9 +14,9 @@
/**
* Roles y permisos
*
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
*
* @version 1.0.0
*/
class RoleSeeder extends Seeder
@ -61,11 +64,151 @@ public function run(): void
]);
$activityIndex = $this->onIndex(
code: 'activities',
type: $pulse,
code: 'activities',
type: $pulse,
guardName: 'api'
);
$modules = PermissionType::create([ // Modulos
'name' => 'Módulos'
]);
[
$moduleIndex,
$moduleCreate,
$moduleEdit,
$moduleDestroy
] = $this->onCRUD('module', $modules, 'api');
$moduleToggleStatus = $this->onPermission(
'module.toggle-status',
'Cambiar estado del módulo',
$modules,
'api'
);
$devices = PermissionType::create([ //Dispositivos
'name' => 'Dispositivos'
]);
[
$deviceIndex,
$deviceCreate,
$deviceEdit,
$deviceDestroy
] = $this->onCRUD('devices', $devices, 'api');
$inscriptions = PermissionType::create([ // Inscripciones de vehículos
'name' => 'Inscripciones'
]);
$inscriptionVehicle = $this->onPermission(
'inscription.vehicle',
'Inscribir vehículo',
$inscriptions,
'api'
);
$inscriptionSearch = $this->onPermission(
'inscription.search',
'Buscar registros',
$inscriptions,
'api'
);
$inscriptionStolen = $this->onPermission(
'inscription.stolen',
'Marcar como robado',
$inscriptions,
'api'
);
$cancellations = PermissionType::create([
'name' => 'Cancelaciones'
]);
$cancellationCancel = $this->onPermission(
'cancellations.cancel',
'Cancelar constancia',
$cancellations,
'api'
);
$updates = PermissionType::create([
'name' => 'Actualizaciones'
]);
$updateVehicleData = $this->onPermission(
'updates.vehicle-data',
'Consultar datos de vehículo',
$updates,
'api'
);
$updateVehicleUpdate = $this->onPermission(
'updates.vehicle-update',
'Actualizar datos de vehículo',
$updates,
'api'
);
$records = PermissionType::create([
'name' => 'Expedientes'
]);
$recordGeneratePdf = $this->onPermission(
'records.generate-pdf',
'Generar PDF de expediente',
$records,
'api'
);
$recordGeneratePdfVerification = $this->onPermission(
'records.generate-pdf-verification',
'Generar PDF de verificación',
$records,
'api'
);
$recordGeneratePdfConstancia = $this->onPermission(
'records.generate-pdf-constancia',
'Generar PDF de constancia',
$records,
'api'
);
$recordGeneratePdfImages = $this->onPermission(
'records.generate-pdf-images',
'Generar PDF de imágenes',
$records,
'api'
);
$packages = PermissionType::create([
'name' => 'Paquetes'
]);
[
$packageIndex,
$packageCreate,
$packageEdit,
$packageDestroy
] = $this->onCRUD('packages', $packages, 'api');
$tags = PermissionType::create([
'name' => 'Etiquetas'
]);
[
$tagIndex,
$tagCreate,
$tagEdit,
$tagDestroy
] = $this->onCRUD('tags', $tags, 'api');
// Desarrollador
Role::create([
'name' => 'developer',
@ -90,7 +233,100 @@ public function run(): void
$roleEdit,
$roleDestroy,
$systemPulse,
$activityIndex
$activityIndex,
$moduleIndex, //Módulos
$moduleCreate,
$moduleEdit,
$moduleDestroy,
$moduleToggleStatus,
$deviceIndex, //Dispositivos
$deviceCreate,
$deviceEdit,
$deviceDestroy,
$inscriptionVehicle, //Inscripcion de vehículos
$inscriptionSearch,
$inscriptionStolen,
$cancellationCancel, //Cancelacion de constancia
$updateVehicleData, //Actualizaciones de vehículo
$updateVehicleUpdate,
$recordGeneratePdf, //Expedientes
$recordGeneratePdfVerification,
$recordGeneratePdfConstancia,
$recordGeneratePdfImages,
$packageIndex, //Paquetes
$packageCreate,
$packageEdit,
$packageDestroy,
$tagIndex, //Etiquetas
$tagCreate,
$tagEdit,
$tagDestroy
);
// Encargado
Role::create([
'name' => 'encargado',
'description' => 'Encargado',
'guard_name' => 'api'
])->givePermissionTo(
$userIndex,
$userOnline,
$roleIndex,
$systemPulse,
$activityIndex,
$deviceIndex, //Dispositivos
$deviceCreate,
$deviceEdit,
$deviceDestroy,
$inscriptionVehicle, //Inscripcion de vehículos
$inscriptionSearch,
$inscriptionStolen,
$cancellationCancel, //Cancelacion de constancia
$updateVehicleData, //Actualizaciones de vehículo
$updateVehicleUpdate,
$recordGeneratePdf, //Expedientes
$recordGeneratePdfVerification,
$recordGeneratePdfConstancia,
$recordGeneratePdfImages,
$packageIndex, //Paquetes
$packageCreate,
$packageEdit,
$packageDestroy,
$tagIndex, //Etiquetas
$tagCreate,
$tagEdit,
$tagDestroy
);
// Capturista
Role::create([
'name' => 'capturista',
'description' => 'Capturista',
'guard_name' => 'api'
])->givePermissionTo(
$userIndex,
$inscriptionVehicle, //Inscripcion de vehículos
$inscriptionSearch,
$inscriptionStolen,
$updateVehicleData, //Actualizaciones de vehículo
$updateVehicleUpdate,
);
// Perito
Role::create([
'name' => 'perito',
'description' => 'Perito',
'guard_name' => 'api'
])->givePermissionTo(
$userIndex,
$inscriptionVehicle, //Inscripcion de vehículos
$inscriptionSearch,
$inscriptionStolen,
$updateVehicleData, //Actualizaciones de vehículo
$updateVehicleUpdate,
);
}
}