Ultimos cambios - endpoint stolen

This commit is contained in:
Juan Felipe Zapata Moreno 2025-11-03 11:19:12 -06:00
parent 7ad6f87b17
commit fae8979532
3 changed files with 61 additions and 3 deletions

View File

@ -136,7 +136,7 @@ public function vehicleInscription(VehicleStoreRequest $request)
$catalogName = CatalogNameImg::firstOrCreate(['name' => $customName]);
$extension = $file->getClientOriginalExtension();
$fileName = $customName . '_' . date('dmY_His') . '.' . $extension;
$path = $file->storeAs('records', $fileName, 'public');
$path = $file->storeAs("records/{$record->folio}", $fileName, 'public');
$md5 = md5_file($file->getRealPath());
$fileRecord = File::create([
@ -265,6 +265,63 @@ private function checkIfStolen(string $folio): bool
return (bool) rand(0, 1);
}
public function stolen(Request $request)
{
$request->validate([
'folio' => ['sometimes', 'string', 'max:50'],
'tag_number' => ['sometimes', 'string', 'exists:tags,tag_number'],
'vin' => ['sometimes', 'string', 'max:30'],
]);
$folio = $request->input('folio');
$tagNumber = $request->input('tag_number');
$vin = $request->input('vin');
// Validar que se proporcione al menos un criterio de búsqueda
if (!$folio && !$tagNumber && !$vin) {
return ApiResponse::BAD_REQUEST->response([
'message' => 'Debe proporcionar al menos un criterio de búsqueda: folio y tag_number, o vin',
]);
}
$query = Record::with(['vehicle.owner', 'vehicle.tag']);
// Búsqueda por folio ó tag_number
if ($folio && !$tagNumber) {
$query->where('folio', $folio);
}elseif (!$folio && $tagNumber) {
$query->whereHas('vehicle.tag', function ($q) use ($tagNumber) {
$q->where('tag_number', $tagNumber);
});
}// Búsqueda solo por VIN
elseif ($vin) {
$query->whereHas('vehicle', function ($q) use ($vin) {
$q->where('niv', $vin);
});
}
$record = $query->first();
if (!$record) {
return ApiResponse::NOT_FOUND->response([
'stolen' => false,
'message' => 'No se encontró ningún registro con los criterios proporcionados',
]);
}
return ApiResponse::OK->response([
'stolen' => true,
'vehicle' => [
'folio' => $record->folio,
'placa' => $record->vehicle->placa,
'tag_number' => $record->vehicle->tag?->tag_number,
'vin' => $record->vehicle->niv,
'marca' => $record->vehicle->marca,
'modelo' => $record->vehicle->linea,
'año' => $record->vehicle->modelo,
],
]);
}
private function sendToRepuveNacional(string $vin): array
{
// Enviar datos a API Repuve Nacional

View File

@ -15,7 +15,7 @@ public function rules(): array
return [
'folio' => ['required', 'string', 'max:50'],
'tag_number' => ['required', 'string', 'exists:tags,tag_number'],
'vin' => ['required', 'string', 'max:30'],
'vin' => ['sometimes', 'string', 'max:30'],
'files' => ['nullable', 'array', 'min:1'],
'files.*' => ['file', 'mimes:jpeg,png,jpg', 'max:10240'],
'names' => ['nullable', 'array'],

View File

@ -29,13 +29,14 @@
// Rutas de inscripción de vehículos
Route::post('inscripcion', [InscriptionController::class, 'vehicleInscription']);
Route::get('consultaV', [InscriptionController::class, 'searchRecord']);
Route::get('RecordErrors', [RecordController::class, 'errors']);
Route::post('stolen', [InscriptionController::class, 'stolen']);
// Rutas de expedientes y documentos
Route::get('expediente/{id}/pdf', [RecordController::class, 'generatePdf']);
Route::get('expediente/{id}/pdfVerificacion', [RecordController::class, 'generatePdfVerification']);
Route::get('expediente/{id}/pdfConstancia', [RecordController::class, 'generatePdfConstancia']);
Route::get('expediente/{id}/pdfImagenes', [RecordController::class, 'generatePdfImages']);
Route::get('RecordErrors', [RecordController::class, 'errors']);
//Rutas de Actualización
Route::get('consulta', [UpdateController::class, 'vehicleData']);