From 2d060f990948220b4d4365f1ef3912d0eabd8e90 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Thu, 27 Nov 2025 22:33:21 -0600 Subject: [PATCH] =?UTF-8?q?feat:=20Mejorar=20la=20validaci=C3=B3n=20de=20e?= =?UTF-8?q?rrores=20en=20la=20cancelaci=C3=B3n=20de=20constancias=20y=20op?= =?UTF-8?q?timizar=20la=20b=C3=BAsqueda=20de=20tags=20por=20lote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Repuve/CancellationController.php | 9 ++------- .../Controllers/Repuve/InscriptionController.php | 12 +++++++----- app/Http/Controllers/Repuve/TagsController.php | 6 ++++++ 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/Repuve/CancellationController.php b/app/Http/Controllers/Repuve/CancellationController.php index ec4b665..557ea40 100644 --- a/app/Http/Controllers/Repuve/CancellationController.php +++ b/app/Http/Controllers/Repuve/CancellationController.php @@ -45,13 +45,8 @@ public function cancelarConstancia(CancelConstanciaRequest $request) ]); } - // Validar que el registro no tenga errores previos - if ($record->error_id !== null) { - return ApiResponse::BAD_REQUEST->response([ - 'message' => 'No se puede cancelar un registro que tiene errores. El vehículo no fue inscrito.', - 'error_id' => $record->error_id - ]); - } + // Avisar que tiene error + $hadPreviousError = $record->error_id !== null; // Guardar información del tag anterior ANTES de cancelarlo $oldTagNumber = $tag->tag_number; diff --git a/app/Http/Controllers/Repuve/InscriptionController.php b/app/Http/Controllers/Repuve/InscriptionController.php index f8802be..9c27cf7 100644 --- a/app/Http/Controllers/Repuve/InscriptionController.php +++ b/app/Http/Controllers/Repuve/InscriptionController.php @@ -54,11 +54,10 @@ public function vehicleInscription(VehicleStoreRequest $request) ]); } - if ($tag->vehicle_id) { + if (!$tag->isAvailable()) { return ApiResponse::BAD_REQUEST->response([ 'message' => 'El tag ya está asignado a un vehículo. Use actualizar en su lugar.', - 'tag_number' => $tagNumber, - 'vehicle_id' => $tag->vehicle_id, + 'current_status' => $tag->status->name, ]); } @@ -201,8 +200,10 @@ public function vehicleInscription(VehicleStoreRequest $request) // Enviar a API Repuve Nacional $apiResponse = $this->sendToRepuveNacional($niv); - $apiResponse["repuve_response"]["folio_ci"] = $folio; //harcodeado cambiar despues - $apiResponse["repuve_response"]["identificador_ci"] = $tagNumber; //harcodeado cambiar despues + if (isset($apiResponse['repuve_response']) && is_array($apiResponse['repuve_response'])) { + $apiResponse["repuve_response"]["folio_ci"] = $folio; + $apiResponse["repuve_response"]["identificador_ci"] = $tagNumber; + } // Procesar respuesta if (isset($apiResponse['has_error']) && $apiResponse['has_error']) { @@ -428,6 +429,7 @@ public function searchRecord(Request $request) 'folio', 'vehicle_id', 'user_id', + 'error_id', 'created_at' ])->paginate(config('app.pagination')) ]); diff --git a/app/Http/Controllers/Repuve/TagsController.php b/app/Http/Controllers/Repuve/TagsController.php index cf3208d..79f7185 100644 --- a/app/Http/Controllers/Repuve/TagsController.php +++ b/app/Http/Controllers/Repuve/TagsController.php @@ -20,6 +20,12 @@ public function index(Request $request) }); } + if ($request->has('lot')) { + $tags->whereHas('package', function ($q) use ($request) { + $q->where('lot', $request->lot); + }); + } + return ApiResponse::OK->response([ 'tag' => $tags->paginate(config('app.pagination')), ]);