fix: robados
This commit is contained in:
parent
56a599603d
commit
04c5cc2dfa
@ -191,12 +191,13 @@ public function deteccionesDelDia(Request $request, int $id)
|
||||
try {
|
||||
$detecciones = $this->vehicleService->listarDeteccionesDelDiaPorArco($id, $fecha);
|
||||
|
||||
// Filtrar solo VIN, placa y antena
|
||||
// Filtrar solo VIN, placa, antena y si es robado
|
||||
$deteccionesFiltradas = array_map(function($deteccion) {
|
||||
return [
|
||||
'vin' => $deteccion['vin'] ?? null,
|
||||
'placa' => $deteccion['placa'] ?? null,
|
||||
'antena' => $deteccion['antena'] ?? null,
|
||||
'robado' => $deteccion['tiene_reporte_robo'] ?? false,
|
||||
];
|
||||
}, $detecciones);
|
||||
|
||||
|
||||
@ -5,7 +5,6 @@
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Vehicle;
|
||||
use App\Models\Detection;
|
||||
use App\Models\VehicleFake;
|
||||
use App\Services\VehicleService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
||||
@ -24,7 +23,7 @@ public function __construct(
|
||||
* Consultar vehículo por placa/VIN y darlo de alta como robado
|
||||
* POST /api/vehicles/consultar
|
||||
*/
|
||||
public function consultarVehiculo(Request $request): JsonResponse
|
||||
public function vehiculoRobadoAlta(Request $request): JsonResponse
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'placa' => 'required_without:vin|string|nullable',
|
||||
@ -256,9 +255,20 @@ public function listarRecuperados()
|
||||
]);
|
||||
}
|
||||
|
||||
public function listarDetecciones()
|
||||
public function listarDetecciones(Request $request)
|
||||
{
|
||||
$detecciones = Detection::orderBy('fecha_deteccion', 'desc')
|
||||
$query = Detection::query();
|
||||
|
||||
// Filtro por placa
|
||||
if ($request->has('placa') && !empty($request->placa)) {
|
||||
$query->where('placa', 'like', '%' . $request->placa . '%');
|
||||
}
|
||||
|
||||
if ($request->has('vin') && !empty($request->vin)) {
|
||||
$query->where('vin', 'like', '%' . $request->vin . '%');
|
||||
}
|
||||
|
||||
$detecciones = $query->orderBy('fecha_deteccion', 'desc')
|
||||
->paginate(config('app.pagination'));
|
||||
|
||||
return ApiResponse::OK->response([
|
||||
@ -300,6 +310,11 @@ public function listarDeteccionesDelDia(Request $request)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Buscar vehículo por placa o VIN en el servicio externo
|
||||
* GET /api/vehicles/detectar
|
||||
* Consulta datos sin dar de alta como robado
|
||||
*/
|
||||
public function buscarVehiculo(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
@ -307,47 +322,34 @@ public function buscarVehiculo(Request $request)
|
||||
'vin' => 'required_without:placa|string|nullable',
|
||||
]);
|
||||
|
||||
$placa = $validated['placa'] ?? null;
|
||||
$vin = $validated['vin'] ?? null;
|
||||
$criterio = $validated['vin'] ?? $validated['placa'];
|
||||
|
||||
$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();
|
||||
// Consultar en el servicio externo
|
||||
$datosVehiculo = $this->vehicleService->consultarVehiculoPorTag($criterio);
|
||||
|
||||
if (!$vehiculo) {
|
||||
if (!$datosVehiculo) {
|
||||
return ApiResponse::NOT_FOUND->response([
|
||||
'success' => false,
|
||||
'message' => 'No se encontró el vehículo en la base de datos'
|
||||
'message' => 'No se encontró el vehículo en el sistema'
|
||||
]);
|
||||
}
|
||||
|
||||
// Buscar detecciones del vehículo
|
||||
$detecciones = Detection::when($vin, function ($query) use ($vin) {
|
||||
return $query->where('vin', $vin);
|
||||
})
|
||||
->when($placa, function ($query) use ($placa) {
|
||||
return $query->orWhere('placa', $placa);
|
||||
})
|
||||
->orderBy('fecha_deteccion', 'desc')
|
||||
->paginate(config('app.pagination'));
|
||||
|
||||
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
|
||||
'fast_id' => $datosVehiculo['tag_number'] ?? null,
|
||||
'folio_tag' => $datosVehiculo['folio_tag'] ?? null,
|
||||
'vin' => $datosVehiculo['vin'] ?? null,
|
||||
'placa' => $datosVehiculo['placa'] ?? null,
|
||||
'marca' => $datosVehiculo['marca'] ?? null,
|
||||
'modelo' => $datosVehiculo['modelo'] ?? null,
|
||||
'linea' => $datosVehiculo['linea'] ?? null,
|
||||
'sublinea' => $datosVehiculo['sublinea'] ?? null,
|
||||
'color' => $datosVehiculo['color'] ?? null,
|
||||
'clase_veh' => $datosVehiculo['clase_veh'] ?? null,
|
||||
'tipo_servicio' => $datosVehiculo['tipo_servicio'] ?? null,
|
||||
'propietario' => $datosVehiculo['propietario'] ?? null,
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
Route::middleware('auth:api')->group(function() {
|
||||
|
||||
// Rutas de Vehículos
|
||||
Route::post('/vehicles/consultar', [VehicleController::class, 'consultarVehiculo']);
|
||||
Route::post('/vehicles/consultar', [VehicleController::class, 'vehiculoRobadoAlta']);
|
||||
Route::post('/vehicles/recuperar', [VehicleController::class, 'recuperarVehiculo']);
|
||||
Route::get('/vehicles/detectar', [VehicleController::class, 'buscarVehiculo']);
|
||||
Route::get('/vehicles/robados', [VehicleController::class, 'listarRobados']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user