From ccc4449d78fe3093bb4d70090459d513b27bbb80 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Mon, 22 Dec 2025 12:52:00 -0600 Subject: [PATCH] ADD: arreglo detectar solo un vehiculo --- .../Controllers/Api/VehicleController.php | 68 ++++++++----------- app/Models/Detection.php | 2 +- routes/api.php | 2 +- 3 files changed, 32 insertions(+), 40 deletions(-) diff --git a/app/Http/Controllers/Api/VehicleController.php b/app/Http/Controllers/Api/VehicleController.php index 942981d..ffc1211 100644 --- a/app/Http/Controllers/Api/VehicleController.php +++ b/app/Http/Controllers/Api/VehicleController.php @@ -323,27 +323,32 @@ public function listarDetecciones() ]); } - public function vehicleDetections(Request $request) + public function buscarVehiculo(Request $request) { - $detector = Validator::make($request->all(), [ + $validated = $request->validate([ 'placa' => 'required_without:vin|string|nullable', 'vin' => 'required_without:placa|string|nullable', - ], [ - 'placa.required_without' => 'Debe proporcionar al menos placa o VIN', - 'vin.required_without' => 'Debe proporcionar al menos placa o VIN', ]); - if ($detector->fails()) { - return ApiResponse::BAD_REQUEST->response([ + $placa = $validated['placa'] ?? null; + $vin = $validated['vin'] ?? null; + + $vehiculo = VehicleFake::when($vin, function ($query) use ($vin) { + return $query->where('vin', $vin); + }) + ->when($placa, function ($query) use ($placa) { + return $query->orWhere('placa', $placa); + }) + ->first(); + + if (!$vehiculo) { + return ApiResponse::NOT_FOUND->response([ 'success' => false, - 'message' => 'Datos inválidos', - 'errors' => $detector->errors() + 'message' => 'No se encontró el vehículo en la base de datos' ]); } - $placa = $request->placa; - $vin = $request->vin; - + // Buscar detecciones del vehículo $detecciones = Detection::when($vin, function ($query) use ($vin) { return $query->where('vin', $vin); }) @@ -353,44 +358,31 @@ public function vehicleDetections(Request $request) ->orderBy('fecha_deteccion', 'desc') ->paginate(config('app.pagination')); - if ($detecciones->isEmpty()) { - return ApiResponse::NOT_FOUND->response([ - 'success' => false, - 'message' => 'No se encontraron detecciones para el vehículo proporcionado' - ]); - } else { - return ApiResponse::OK->response([ - 'success' => true, - 'detecciones' => $detecciones - ]); - } - return ApiResponse::OK->response([ 'success' => true, + 'vehiculo' => [ + 'folio_tag' => $vehiculo->folio_tag, + 'tag_number' => $vehiculo->tag_number, + 'placa' => $vehiculo->placa, + 'vin' => $vehiculo->vin, + 'marca' => $vehiculo->marca, + 'modelo' => $vehiculo->modelo, + 'color' => $vehiculo->color, + ], + 'total_detecciones' => $detecciones->total(), 'detecciones' => $detecciones ]); } public function buscarVehiculoRobado(Request $request) { - $validator = Validator::make($request->all(), [ + $validated = $request->validate([ 'placa' => 'required_without:vin|string|nullable', 'vin' => 'required_without:placa|string|nullable', - ], [ - 'placa.required_without' => 'Debe proporcionar al menos placa o VIN', - 'vin.required_without' => 'Debe proporcionar al menos placa o VIN', ]); - if ($validator->fails()) { - return ApiResponse::BAD_REQUEST->response([ - 'success' => false, - 'message' => 'Datos inválidos', - 'errors' => $validator->errors() - ]); - } - - $placa = $request->placa; - $vin = $request->vin; + $placa = $validated['placa'] ?? null; + $vin = $validated['vin'] ?? null; // Buscar en Redis $vehiculoEncontrado = $this->buscarEnRedis($vin, $placa); diff --git a/app/Models/Detection.php b/app/Models/Detection.php index 9e855ba..9a62d51 100644 --- a/app/Models/Detection.php +++ b/app/Models/Detection.php @@ -27,6 +27,6 @@ class Detection extends Model ]; protected $casts = [ - 'fecha_deteccion' => 'datetime' + 'fecha_deteccion' => 'datetime:Y-m-d H:i:s' ]; } diff --git a/routes/api.php b/routes/api.php index 9449d71..d0bf5ce 100644 --- a/routes/api.php +++ b/routes/api.php @@ -22,7 +22,7 @@ Route::post('/vehicles/consultar', [VehicleController::class, 'consultarVehiculo']); Route::post('/vehicles/recuperar', [VehicleController::class, 'recuperarVehiculo']); - Route::get('/vehicles/detectar', [VehicleController::class, 'vehicleDetections']); + Route::get('/vehicles/detectar', [VehicleController::class, 'buscarVehiculo']); Route::get('/vehicles/robados', [VehicleController::class, 'listarRobados']); Route::get('/vehicles', [VehicleController::class, 'listarRecuperados']); Route::get('/vehicles/detecciones', [VehicleController::class, 'listarDetecciones']);