Se implementó la queue a UpdateController
This commit is contained in:
parent
b25db1a0d4
commit
48eaf28151
@ -12,13 +12,13 @@
|
||||
use App\Models\Record;
|
||||
use App\Models\File;
|
||||
use App\Models\Owner;
|
||||
use App\Models\Error;
|
||||
use App\Models\CatalogNameImg;
|
||||
use App\Models\VehicleTagLog;
|
||||
use App\Services\RepuveService;
|
||||
use App\Services\PadronEstatalService;
|
||||
use Exception;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Jobs\ProcessRepuveResponse;
|
||||
|
||||
class UpdateController extends Controller
|
||||
{
|
||||
@ -375,71 +375,68 @@ public function vehicleUpdate(VehicleUpdateRequest $request)
|
||||
|
||||
// Solo enviar a REPUVE Nacional si hay cambios
|
||||
if ($hasVehicleChanges || $hasOwnerChanges || count($uploadedFiles) > 0) {
|
||||
//Envio de datos
|
||||
$apiResponse = $this->sendToRepuveNacional($niv);
|
||||
$apiResponse["repuve_response"]["folio_ci"] = $record->folio;
|
||||
$apiResponse["repuve_response"]["identificador_ci"] = $tag->tag_number;
|
||||
// Preparar datos completos para REPUVE
|
||||
$datosCompletos = $this->prepararDatosParaInscripcion($niv);
|
||||
|
||||
if (isset($apiResponse['has_error']) && $apiResponse['has_error']) {
|
||||
$error = Error::where('code', $apiResponse['error_code'])->first();
|
||||
|
||||
if (!$error) {
|
||||
// Usar error genérico si no se encuentra el código
|
||||
logger()->warning('Código de error REPUVE no catalogado', [
|
||||
'error_code' => $apiResponse['error_code'],
|
||||
'error_message' => $apiResponse['error_message'],
|
||||
'niv' => $niv,
|
||||
]);
|
||||
|
||||
// Buscar error
|
||||
$error = Error::where('code', '-1')->first();
|
||||
|
||||
if (!$error) {
|
||||
// Si ni siquiera existe el error genérico
|
||||
$error = Error::create([
|
||||
'code' => '-1',
|
||||
'name' => 'Error Interno',
|
||||
'description' => 'Error interno del web service. Problemas con la base de datos o en la red.',
|
||||
'type' => 'Error de Conexión',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$record->update([
|
||||
'error_id' => $error->id,
|
||||
'api_response' => $apiResponse,
|
||||
'error_occurred_at' => now(),
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return ApiResponse::NOT_ACCEPTABLE->response([
|
||||
'message' => 'Datos guardados con error. Corrija y vuelva a enviar.',
|
||||
'has_error' => true,
|
||||
'can_retry' => true,
|
||||
'error' => [
|
||||
'code' => $error->code,
|
||||
'description' => $error->description,
|
||||
'occurred_at' => $record->error_occurred_at->toDateTimeString(),
|
||||
],
|
||||
'record' => [
|
||||
'id' => $record->id,
|
||||
'folio' => $record->folio,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
$record->update([
|
||||
'error_id' => null,
|
||||
'api_response' => $apiResponse,
|
||||
'error_occurred_at' => null,
|
||||
]);
|
||||
// Enviar job
|
||||
ProcessRepuveResponse::dispatch($record->id, $datosCompletos);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
$sentToRepuve = $hasVehicleChanges || $hasOwnerChanges || count($uploadedFiles) > 0;
|
||||
|
||||
$message = 'Vehículo actualizado exitosamente';
|
||||
if (!$hasVehicleChanges && !$hasOwnerChanges && empty($uploadedFiles)) {
|
||||
$message = 'No se detectaron cambios. Los datos ya estaban actualizados.';
|
||||
} elseif (($hasVehicleChanges || $hasOwnerChanges) && !empty($uploadedFiles)) {
|
||||
$message = 'Datos del vehículo/propietario y archivos actualizados exitosamente.';
|
||||
} elseif (($hasVehicleChanges || $hasOwnerChanges) && empty($uploadedFiles)) {
|
||||
$message = 'Datos del vehículo/propietario actualizados exitosamente. No se subieron archivos.';
|
||||
} elseif (!$hasVehicleChanges && !$hasOwnerChanges && !empty($uploadedFiles)) {
|
||||
$message = 'Archivos subidos exitosamente. No hubo cambios en los datos del vehículo/propietario.';
|
||||
}
|
||||
|
||||
return ApiResponse::OK->response([
|
||||
'message' => $message,
|
||||
'has_error' => false,
|
||||
'changes_made' => [
|
||||
'vehicle_updated' => $hasVehicleChanges,
|
||||
'owner_updated' => $hasOwnerChanges,
|
||||
'files_uploaded' => count($uploadedFiles) > 0,
|
||||
],
|
||||
'record' => [
|
||||
'id' => $record->id,
|
||||
'folio' => $record->folio,
|
||||
'updated_at' => $record->updated_at->toDateTimeString(),
|
||||
],
|
||||
'vehicle' => [
|
||||
'id' => $vehicle->id,
|
||||
'placa' => $vehicle->placa,
|
||||
'niv' => $vehicle->niv,
|
||||
'marca' => $vehicle->marca,
|
||||
'modelo' => $vehicle->modelo,
|
||||
'color' => $vehicle->color,
|
||||
],
|
||||
'owner' => [
|
||||
'id' => $owner->id,
|
||||
'full_name' => $owner->full_name,
|
||||
'rfc' => $owner->rfc,
|
||||
],
|
||||
'tag' => [
|
||||
'id' => $tag->id,
|
||||
'tag_number' => $tag->tag_number,
|
||||
'status' => $tag->status->name,
|
||||
],
|
||||
'uploaded_files' => $uploadedFiles,
|
||||
'replaced_count' => count($replacedFiles),
|
||||
'total_files' => File::where('record_id', $record->id)->count(),
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$sentToRepuve = $hasVehicleChanges || $hasOwnerChanges || count($uploadedFiles) > 0;
|
||||
|
||||
$message = 'Vehículo actualizado exitosamente';
|
||||
if (!$hasVehicleChanges && !$hasOwnerChanges && empty($uploadedFiles)) {
|
||||
$message = 'No se detectaron cambios. Los datos ya estaban actualizados.';
|
||||
@ -543,12 +540,6 @@ private function prepararDatosParaInscripcion(string $niv): array
|
||||
];
|
||||
}
|
||||
|
||||
private function sendToRepuveNacional(string $niv): array
|
||||
{
|
||||
$datosCompletos = $this->prepararDatosParaInscripcion($niv);
|
||||
return $this->repuveService->inscribirVehiculo($datosCompletos);
|
||||
}
|
||||
|
||||
private function detectVehicleChanges($vehicle, array $vehicleDataEstatal): bool
|
||||
{
|
||||
$fieldsToCompare = [
|
||||
|
||||
@ -46,11 +46,6 @@ public function handle(RepuveService $repuveService): void
|
||||
'timestamp' => $apiResponse['timestamp'] ?? null,
|
||||
]);
|
||||
|
||||
if(isset($apiResponse['repuve_response']) && is_array($apiResponse['repuve_response'])){
|
||||
$apiResponse['repuve_response']['folio_ci'] = $record->folio;
|
||||
$apiResponse['repuve_response']['identificador_ci'] = $record->vehicle->tag->tag_number;
|
||||
}
|
||||
|
||||
if($apiResponse['has_error']){
|
||||
$error = Error::where('code', $apiResponse['error_code'])->first();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user