From 82b7a179f53c6bfbf51066da5cf1ba17b1d9b0a7 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Fri, 14 Nov 2025 11:44:07 -0600 Subject: [PATCH] FIX: Correcciones device y modulo --- .../Controllers/Repuve/ModuleController.php | 7 ++++-- .../Requests/Repuve/DeviceUpdateRequest.php | 14 +++++------ .../Requests/Repuve/ModuleUpdateRequest.php | 25 +++++++++++-------- routes/api.php | 1 + 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/Repuve/ModuleController.php b/app/Http/Controllers/Repuve/ModuleController.php index fe9fb02..5fbbd84 100644 --- a/app/Http/Controllers/Repuve/ModuleController.php +++ b/app/Http/Controllers/Repuve/ModuleController.php @@ -174,13 +174,16 @@ public function toggleStatus(int $id) DB::beginTransaction(); - // Cambiar el status al valor opuesto + $newStatus = !$module->status; + $module->update([ - 'status' => !$module->status, + 'status' => $newStatus, ]); DB::commit(); + $module->refresh(); + return ApiResponse::OK->response([ 'message' => $module->status ? 'Módulo activado exitosamente' diff --git a/app/Http/Requests/Repuve/DeviceUpdateRequest.php b/app/Http/Requests/Repuve/DeviceUpdateRequest.php index 6149a2f..5142196 100644 --- a/app/Http/Requests/Repuve/DeviceUpdateRequest.php +++ b/app/Http/Requests/Repuve/DeviceUpdateRequest.php @@ -13,16 +13,16 @@ public function authorize(): bool public function rules(): array { - $deviceId = $this->route('id'); + $deviceId = $this->route('device'); return [ - 'brand' => ['sometimes', 'string', 'max:255'], - 'serie' => ['sometimes', 'string', 'unique:devices,serie,' . $deviceId, 'max:255'], - 'mac_address' => ['sometimes', 'string', 'unique:devices,mac_address,' . $deviceId, 'regex:/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/'], - 'module_id' => ['sometimes', 'exists:modules,id'], - 'user_id' => ['sometimes', 'array', 'min:1'], + 'brand' => ['nullable', 'string', 'max:255'], + 'serie' => ['nullable', 'string', 'unique:devices,serie,' . $deviceId, 'max:255'], + 'mac_address' => ['nullable', 'string', 'unique:devices,mac_address,' . $deviceId, 'regex:/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/'], + 'module_id' => ['nullable', 'exists:modules,id'], + 'user_id' => ['nullable', 'array'], 'user_id.*' => ['exists:users,id'], - 'status' => ['sometimes', 'boolean'], + 'status' => ['nullable', 'boolean'], ]; } diff --git a/app/Http/Requests/Repuve/ModuleUpdateRequest.php b/app/Http/Requests/Repuve/ModuleUpdateRequest.php index 12a5916..4db2511 100644 --- a/app/Http/Requests/Repuve/ModuleUpdateRequest.php +++ b/app/Http/Requests/Repuve/ModuleUpdateRequest.php @@ -14,9 +14,10 @@ public function authorize(): bool public function rules(): array { return [ - 'name' => ['nullable', 'string', 'max:255'], - 'municipality' => ['nullable', 'string', 'max:100'], - 'address' => ['nullable', 'string', 'max:255'], + 'name' => ['nullable', 'string', 'max:50'], + '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'], 'longitude' => ['nullable', 'numeric', 'between:-180,180'], @@ -28,15 +29,17 @@ public function rules(): array public function messages(): array { return [ - 'name.string' => 'El nombre debe ser una cadena de texto', - 'name.max' => 'El nombre no debe superar los 255 caracteres', - 'municipality.string' => 'El municipio debe ser una cadena de texto', - 'municipality.max' => 'El municipio no debe superar los 100 caracteres', - 'address.string' => 'La dirección debe ser una cadena de texto', - 'address.max' => 'La dirección no debe superar los 255 caracteres', - 'colony.string' => 'La colonia debe ser una cadena de texto', + 'name.string' => 'El nombre debe ser texto', + 'name.max' => 'El nombre no debe superar los 50 caracteres', + 'municipality_id.integer' => 'El municipio debe ser un número entero', + 'municipality_id.exists' => 'El municipio seleccionado no existe', + 'responsible_id.integer' => 'El responsable debe ser un número entero', + '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 una cadena de texto', + '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', diff --git a/routes/api.php b/routes/api.php index 9cd24f7..6f5419f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -48,6 +48,7 @@ Route::post('cancelacion/cancelar', [CancellationController::class, 'cancelarConstancia']); //Rutas de Modulos + Route::patch('module/{id}/toggle-status', [ModuleController::class, 'toggleStatus']); Route::resource('module', ModuleController::class); //Rutas de Municipios