fix: robados
This commit is contained in:
parent
56a599603d
commit
04c5cc2dfa
@ -191,12 +191,13 @@ public function deteccionesDelDia(Request $request, int $id)
|
|||||||
try {
|
try {
|
||||||
$detecciones = $this->vehicleService->listarDeteccionesDelDiaPorArco($id, $fecha);
|
$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) {
|
$deteccionesFiltradas = array_map(function($deteccion) {
|
||||||
return [
|
return [
|
||||||
'vin' => $deteccion['vin'] ?? null,
|
'vin' => $deteccion['vin'] ?? null,
|
||||||
'placa' => $deteccion['placa'] ?? null,
|
'placa' => $deteccion['placa'] ?? null,
|
||||||
'antena' => $deteccion['antena'] ?? null,
|
'antena' => $deteccion['antena'] ?? null,
|
||||||
|
'robado' => $deteccion['tiene_reporte_robo'] ?? false,
|
||||||
];
|
];
|
||||||
}, $detecciones);
|
}, $detecciones);
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,6 @@
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Vehicle;
|
use App\Models\Vehicle;
|
||||||
use App\Models\Detection;
|
use App\Models\Detection;
|
||||||
use App\Models\VehicleFake;
|
|
||||||
use App\Services\VehicleService;
|
use App\Services\VehicleService;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
||||||
@ -24,7 +23,7 @@ public function __construct(
|
|||||||
* Consultar vehículo por placa/VIN y darlo de alta como robado
|
* Consultar vehículo por placa/VIN y darlo de alta como robado
|
||||||
* POST /api/vehicles/consultar
|
* POST /api/vehicles/consultar
|
||||||
*/
|
*/
|
||||||
public function consultarVehiculo(Request $request): JsonResponse
|
public function vehiculoRobadoAlta(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
'placa' => 'required_without:vin|string|nullable',
|
'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'));
|
->paginate(config('app.pagination'));
|
||||||
|
|
||||||
return ApiResponse::OK->response([
|
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)
|
public function buscarVehiculo(Request $request)
|
||||||
{
|
{
|
||||||
$validated = $request->validate([
|
$validated = $request->validate([
|
||||||
@ -307,47 +322,34 @@ public function buscarVehiculo(Request $request)
|
|||||||
'vin' => 'required_without:placa|string|nullable',
|
'vin' => 'required_without:placa|string|nullable',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$placa = $validated['placa'] ?? null;
|
$criterio = $validated['vin'] ?? $validated['placa'];
|
||||||
$vin = $validated['vin'] ?? null;
|
|
||||||
|
|
||||||
$vehiculo = VehicleFake::when($vin, function ($query) use ($vin) {
|
// Consultar en el servicio externo
|
||||||
return $query->where('vin', $vin);
|
$datosVehiculo = $this->vehicleService->consultarVehiculoPorTag($criterio);
|
||||||
})
|
|
||||||
->when($placa, function ($query) use ($placa) {
|
|
||||||
return $query->orWhere('placa', $placa);
|
|
||||||
})
|
|
||||||
->first();
|
|
||||||
|
|
||||||
if (!$vehiculo) {
|
if (!$datosVehiculo) {
|
||||||
return ApiResponse::NOT_FOUND->response([
|
return ApiResponse::NOT_FOUND->response([
|
||||||
'success' => false,
|
'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([
|
return ApiResponse::OK->response([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'vehiculo' => [
|
'vehiculo' => [
|
||||||
'folio_tag' => $vehiculo->folio_tag,
|
'fast_id' => $datosVehiculo['tag_number'] ?? null,
|
||||||
'tag_number' => $vehiculo->tag_number,
|
'folio_tag' => $datosVehiculo['folio_tag'] ?? null,
|
||||||
'placa' => $vehiculo->placa,
|
'vin' => $datosVehiculo['vin'] ?? null,
|
||||||
'vin' => $vehiculo->vin,
|
'placa' => $datosVehiculo['placa'] ?? null,
|
||||||
'marca' => $vehiculo->marca,
|
'marca' => $datosVehiculo['marca'] ?? null,
|
||||||
'modelo' => $vehiculo->modelo,
|
'modelo' => $datosVehiculo['modelo'] ?? null,
|
||||||
'color' => $vehiculo->color,
|
'linea' => $datosVehiculo['linea'] ?? null,
|
||||||
],
|
'sublinea' => $datosVehiculo['sublinea'] ?? null,
|
||||||
'total_detecciones' => $detecciones->total(),
|
'color' => $datosVehiculo['color'] ?? null,
|
||||||
'detecciones' => $detecciones
|
'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() {
|
Route::middleware('auth:api')->group(function() {
|
||||||
|
|
||||||
// Rutas de Vehículos
|
// 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::post('/vehicles/recuperar', [VehicleController::class, 'recuperarVehiculo']);
|
||||||
Route::get('/vehicles/detectar', [VehicleController::class, 'buscarVehiculo']);
|
Route::get('/vehicles/detectar', [VehicleController::class, 'buscarVehiculo']);
|
||||||
Route::get('/vehicles/robados', [VehicleController::class, 'listarRobados']);
|
Route::get('/vehicles/robados', [VehicleController::class, 'listarRobados']);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user