feat: actualiza configuración de Docker, mejora la gestión de permisos y renombra campos en las vistas de constancias
This commit is contained in:
parent
e701d5348a
commit
3e7d381f15
@ -51,6 +51,8 @@ services:
|
||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD}
|
||||
MYSQL_USER: ${DB_USERNAME}
|
||||
ports:
|
||||
- "${DB_FORWARD_PORT}:3306"
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
networks:
|
||||
|
||||
@ -350,8 +350,8 @@ public function cancelarTagNoAsignado(Request $request)
|
||||
'motivo' => ($lastCancellation->cancellationReason && isset($lastCancellation->cancellationReason->name))
|
||||
? $lastCancellation->cancellationReason->name
|
||||
: 'No especificado',
|
||||
'operador' => ($lastCancellation->cancelledBy && isset($lastCancellation->cancelledBy->name))
|
||||
? $lastCancellation->cancelledBy->name
|
||||
'operador' => ($lastCancellation->cancelledBy && isset($lastCancellation->cancelledBy->full_name))
|
||||
? $lastCancellation->cancelledBy->full_name
|
||||
: 'Sistema',
|
||||
'modulo' => ($tag->module && isset($tag->module->name)) ? $tag->module->name : 'No especificado',
|
||||
'ubicacion' => ($tag->module && isset($tag->module->address)) ? $tag->module->address : 'No especificado',
|
||||
|
||||
@ -77,8 +77,6 @@ public function store(ModuleStoreRequest $request)
|
||||
'responsible_id' => $request->input('responsible_id'),
|
||||
'municipality_id' => $request->input('municipality_id'),
|
||||
'address' => $request->input('address'),
|
||||
'colony' => $request->input('colony'),
|
||||
'cp' => $request->input('cp'),
|
||||
'longitude' => $request->input('longitude'),
|
||||
'latitude' => $request->input('latitude'),
|
||||
'status' => $request->input('status', true), // Por defecto activo
|
||||
@ -99,8 +97,6 @@ public function store(ModuleStoreRequest $request)
|
||||
'name' => $module->municipality->name,
|
||||
] : null,
|
||||
'address' => $module->address,
|
||||
'colony' => $module->colony,
|
||||
'cp' => $module->cp,
|
||||
'longitude' => $module->longitude,
|
||||
'latitude' => $module->latitude,
|
||||
'status' => $module->status ? 'Activo' : 'Inactivo',
|
||||
@ -170,8 +166,6 @@ public function update(ModuleUpdateRequest $request, int $id)
|
||||
'name' => $module->municipality->name,
|
||||
] : null,
|
||||
'address' => $module->address,
|
||||
'colony' => $module->colony,
|
||||
'cp' => $module->cp,
|
||||
'longitude' => $module->longitude,
|
||||
'latitude' => $module->latitude,
|
||||
'status' => $module->status ? 'Activo' : 'Inactivo',
|
||||
|
||||
@ -477,7 +477,7 @@ private function cancellationData(Tag $tag)
|
||||
if ($tagCancellationLog) {
|
||||
$data['fecha'] = $tagCancellationLog->cancellation_at->format('d/m/Y');
|
||||
$data['motivo'] = $tagCancellationLog->cancellationReason->name ?? 'No especificado';
|
||||
$data['operador'] = $tagCancellationLog->cancelledBy->name ?? 'Sistema';
|
||||
$data['operador'] = $tagCancellationLog->cancelledBy->full_name ?? 'Sistema';
|
||||
|
||||
// Extraer datos adicionales de las observaciones
|
||||
$this->extractAdditionalDataFromObservations($tagCancellationLog->cancellation_observations, $data);
|
||||
@ -503,7 +503,7 @@ private function cancellationData(Tag $tag)
|
||||
|
||||
if ($vehicleTagLog) {
|
||||
$data['motivo'] = $vehicleTagLog->cancellationReason->name ?? 'No especificado';
|
||||
$data['operador'] = $vehicleTagLog->cancelledBy->name ?? 'Sistema';
|
||||
$data['operador'] = $vehicleTagLog->cancelledBy->full_name ?? 'Sistema';
|
||||
|
||||
// Cargar módulo del cual el usuario es responsable
|
||||
if ($vehicleTagLog->cancelledBy) {
|
||||
|
||||
@ -19,8 +19,7 @@ public function rules(): array
|
||||
'responsible_id' => ['required', 'exists:users,id'],
|
||||
'municipality_id' => 'required|exists:municipalities,id',
|
||||
'address' => ['required', 'string', 'max:255'],
|
||||
'colony' => ['required', 'string', 'max:100'],
|
||||
'cp' => ['nullable', 'string', 'max:10'],
|
||||
|
||||
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
|
||||
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
|
||||
'status' => ['nullable', 'boolean'],
|
||||
@ -38,11 +37,7 @@ public function messages(): array
|
||||
'address.required' => 'La dirección es requerida',
|
||||
'address.string' => 'La dirección debe ser una cadena de texto',
|
||||
'address.max' => 'La dirección no debe superar los 255 caracteres',
|
||||
'colony.required' => 'La colonia es requerida',
|
||||
'colony.string' => 'La colonia debe ser una cadena de texto',
|
||||
'colony.max' => 'La colonia no debe superar los 100 caracteres',
|
||||
'cp.string' => 'El código postal debe ser una cadena de texto',
|
||||
'cp.max' => 'El código postal no debe superar los 10 caracteres',
|
||||
|
||||
'longitude.numeric' => 'La longitud debe ser un número',
|
||||
'longitude.between' => 'La longitud debe estar entre -180 y 180',
|
||||
'latitude.numeric' => 'La latitud debe ser un número',
|
||||
|
||||
@ -18,9 +18,8 @@ public function rules(): array
|
||||
'name' => ['nullable', 'string', 'max:50', Rule::unique('modules', 'name')->ignore($this->route('module'))],
|
||||
'municipality_id' => ['nullable', 'integer', 'exists:municipalities,id'],
|
||||
'responsible_id' => ['nullable', 'integer', 'exists:users,id'],
|
||||
'address' => ['nullable', 'string', 'max:50'],
|
||||
'colony' => ['nullable', 'string', 'max:100'],
|
||||
'cp' => ['nullable', 'string', 'max:10'],
|
||||
'address' => ['nullable', 'string', 'max:250'],
|
||||
|
||||
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
|
||||
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
|
||||
'status' => ['nullable', 'boolean'],
|
||||
@ -39,10 +38,7 @@ public function messages(): array
|
||||
'responsible_id.exists' => 'El responsable seleccionado no existe',
|
||||
'address.string' => 'La dirección debe ser texto',
|
||||
'address.max' => 'La dirección no debe superar los 50 caracteres',
|
||||
'colony.string' => 'La colonia debe ser texto',
|
||||
'colony.max' => 'La colonia no debe superar los 100 caracteres',
|
||||
'cp.string' => 'El código postal debe ser texto',
|
||||
'cp.max' => 'El código postal no debe superar los 10 caracteres',
|
||||
|
||||
'longitude.numeric' => 'La longitud debe ser un número',
|
||||
'longitude.between' => 'La longitud debe estar entre -180 y 180',
|
||||
'latitude.numeric' => 'La latitud debe ser un número',
|
||||
|
||||
@ -14,8 +14,6 @@ class Module extends Model
|
||||
'responsible_id',
|
||||
'municipality_id',
|
||||
'address',
|
||||
'colony',
|
||||
'cp',
|
||||
'longitude',
|
||||
'latitude',
|
||||
'status',
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('modules', function (Blueprint $table) {
|
||||
$table->dropColumn(['colony', 'cp']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('modules', function (Blueprint $table) {
|
||||
$table->string('colony')->nullable();
|
||||
$table->string('cp')->nullable();
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -50,7 +50,7 @@ public function run(): void
|
||||
'FOTO LADO LATERAL DEL VEHÍCULO',
|
||||
'FOTO UBICACIÓN DEL VIN',
|
||||
'FOTO CONSTANCIA DE INSCRIPCIÓN PEGADA (CI MORADA O AZUL)',
|
||||
'FORMATO DE CONSTANCIA DE SUSTITUCIÓN',
|
||||
'FORMATO DE CONSTANCIA SUSTITUIDA',
|
||||
'EVIDENCIA ADICIONAL',
|
||||
];
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ class RoleSeeder extends Seeder
|
||||
public function run(): void
|
||||
{
|
||||
// === USUARIOS ===
|
||||
$users = PermissionType::firstOrCreate(['name' => 'Usuarios']);
|
||||
$users = PermissionType::updateOrCreate(['name' => 'Usuarios']);
|
||||
|
||||
[
|
||||
$userIndex,
|
||||
@ -39,7 +39,7 @@ public function run(): void
|
||||
] = $this->onCRUD('users', $users, 'api');
|
||||
|
||||
// === ROLES ===
|
||||
$roles = PermissionType::firstOrCreate(['name' => 'Roles']);
|
||||
$roles = PermissionType::updateOrCreate(['name' => 'Roles']);
|
||||
|
||||
[
|
||||
$roleIndex,
|
||||
@ -51,7 +51,7 @@ public function run(): void
|
||||
$rolePermissions = $this->onPermission('roles.permissions', 'Permisos de roles', $roles, 'api');
|
||||
|
||||
// === MÓDULOS ===
|
||||
$modules = PermissionType::firstOrCreate(['name' => 'Módulos']);
|
||||
$modules = PermissionType::updateOrCreate(['name' => 'Módulos']);
|
||||
|
||||
[
|
||||
$moduleIndex,
|
||||
@ -64,7 +64,7 @@ public function run(): void
|
||||
$moduleToggleStatus = $this->onPermission('module.toggle_status', 'Cambiar estado del módulo', $modules, 'api');
|
||||
|
||||
// === DISPOSITIVOS MÓVILES ===
|
||||
$devices = PermissionType::firstOrCreate(['name' => 'Dispositivos Móviles']);
|
||||
$devices = PermissionType::updateOrCreate(['name' => 'Dispositivos Móviles']);
|
||||
|
||||
[
|
||||
$deviceIndex,
|
||||
@ -76,31 +76,31 @@ public function run(): void
|
||||
$deviceToggleStatus = $this->onPermission('devices.toggle_status', 'Cambiar estado del dispositivo', $devices, 'api');
|
||||
|
||||
// === INSCRIPCIONES ===
|
||||
$inscriptions = PermissionType::firstOrCreate(['name' => 'Proceso de Sustitución por primera vez']);
|
||||
$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::firstOrCreate(['name' => 'Cancelaciones']);
|
||||
$cancellations = PermissionType::updateOrCreate(['name' => 'Cancelaciones']);
|
||||
|
||||
$cancellationTagNoAsignado = $this->onPermission('cancellations.cancel_tag_no_asignado', 'Cancelar constancia no asignada', $cancellations, 'api');
|
||||
|
||||
// === SISTEMA ===
|
||||
$system = PermissionType::firstOrCreate(['name' => 'Sistema']);
|
||||
$system = PermissionType::updateOrCreate(['name' => 'Sistema']);
|
||||
|
||||
$systemSettings = $this->onPermission('system.settings', 'Configurar credenciales REPUVE', $system, 'api');
|
||||
|
||||
// === ACTUALIZAR REGISTRO ===
|
||||
$updates = PermissionType::firstOrCreate(['name' => '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::firstOrCreate(['name' => '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');
|
||||
@ -108,7 +108,7 @@ public function run(): void
|
||||
$recordGeneratePdfConstancia = $this->onPermission('records.generate_pdf_constancia', 'Generar Impresión en la constancia', $formats, 'api');
|
||||
|
||||
// === REPORTES ===
|
||||
$reports = PermissionType::firstOrCreate(['name' => 'Reportes - Excel']);
|
||||
$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');
|
||||
@ -117,12 +117,12 @@ public function run(): void
|
||||
$reportSearchRecords = $this->onPermission('reports.search_records.index', 'Reporte de consulta nacional', $reports, 'api');
|
||||
|
||||
// === ACTIVIDAD ===
|
||||
$activities = PermissionType::firstOrCreate(['name' => 'Actividad']);
|
||||
$activities = PermissionType::updateOrCreate(['name' => 'Actividad']);
|
||||
|
||||
$activityIndex = $this->onPermission('activities.index', 'Ver actividad de usuarios', $activities, 'api');
|
||||
|
||||
// === CAJAS ===
|
||||
$packages = PermissionType::firstOrCreate(['name' => 'Cajas']);
|
||||
$packages = PermissionType::updateOrCreate(['name' => 'Cajas']);
|
||||
|
||||
[
|
||||
$packageIndex,
|
||||
@ -134,7 +134,7 @@ public function run(): void
|
||||
$packageBoxTags = $this->onPermission('packages.box_tags', 'Ver constancias de caja', $packages, 'api');
|
||||
|
||||
// === CONSTANCIAS DE INSCRIPCIÓN ===
|
||||
$tags = PermissionType::firstOrCreate(['name' => 'Constancias de Inscripción']);
|
||||
$tags = PermissionType::updateOrCreate(['name' => 'Constancias de Inscripción']);
|
||||
|
||||
[
|
||||
$tagIndex,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Constancia Cancelada - REPUVE Tabasco</title>
|
||||
<title>Constancia Dañada - REPUVE Tabasco</title>
|
||||
<style>
|
||||
@page {
|
||||
margin: 2cm 1.5cm;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Constancia Cancelada - REPUVE Tabasco</title>
|
||||
<title>Constancia Dañada - REPUVE Tabasco</title>
|
||||
<style>
|
||||
@page {
|
||||
margin: 2cm 1.5cm;
|
||||
@ -100,7 +100,7 @@
|
||||
|
||||
<!-- Subheader -->
|
||||
<div class="subheader">
|
||||
CONSTANCIA CANCELADA
|
||||
CONSTANCIA DAÑADA
|
||||
</div>
|
||||
|
||||
<!-- Espacio para pegar constancia -->
|
||||
@ -125,9 +125,13 @@
|
||||
<td class="data-value">{{ $cancellation['tag_number'] ?? 'N/A' }}</td>
|
||||
</tr>
|
||||
<tr class="data-row">
|
||||
<td class="data-label">PLACA:</td>
|
||||
<td class="data-label">PLACAS</td>
|
||||
<td class="data-value">{{ $cancellation['placa'] ?? 'N/A' }}</td>
|
||||
</tr>
|
||||
<tr class="data-row">
|
||||
<td class="data-label">NIV</td>
|
||||
<td class="data-value">{{ $cancellation['niv'] ?? 'N/A' }}</td>
|
||||
</tr>
|
||||
<tr class="data-row">
|
||||
<td class="data-label">MOTIVO:</td>
|
||||
<td class="data-value">{{ mb_strtoupper($cancellation['motivo'] ?? '') }}</td>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user