fix: pdf tag sustituido ahora con id del record
This commit is contained in:
parent
c4643c60d4
commit
0ec75bc0ba
@ -95,7 +95,7 @@ public function vehicleInscription(VehicleStoreRequest $request)
|
||||
$ownerData = $this->padronEstatalService->extraerDatosPropietario($datosCompletosRaw);
|
||||
|
||||
// Obtener NIV de los datos del vehículo para verificar robo
|
||||
/* $niv = $vehicleData['niv'];
|
||||
$niv = $vehicleData['niv'];
|
||||
|
||||
// Verificar robo (API Repuve Nacional)
|
||||
$resultadoRobo = $this->checkIfStolen($niv, $placa);
|
||||
@ -107,12 +107,12 @@ public function vehicleInscription(VehicleStoreRequest $request)
|
||||
'folio' => $folio,
|
||||
'tag_number' => $tagNumber,
|
||||
'placa' => $placa,
|
||||
'niv'=> $niv,
|
||||
'niv' => $niv,
|
||||
'stolen' => true,
|
||||
'detalle_robo' => $resultadoRobo,
|
||||
'message' => 'El vehículo reporta robo. No se puede continuar con la inscripción.',
|
||||
]);
|
||||
} */
|
||||
}
|
||||
|
||||
// Crear propietario
|
||||
$owner = Owner::updateOrCreate(
|
||||
@ -329,7 +329,10 @@ public function searchRecord(Request $request)
|
||||
|
||||
// Log de acciones
|
||||
'vehicle.vehicleTagLogs' => function ($q) {
|
||||
$q->orderBy('created_at', 'DESC');
|
||||
$q->with([
|
||||
'tag:id,folio,tag_number,status_id',
|
||||
'tag.status:id,code,name'
|
||||
])->orderBy('created_at', 'DESC');
|
||||
},
|
||||
])->orderBy('id', 'ASC');
|
||||
|
||||
@ -419,24 +422,6 @@ public function searchRecord(Request $request)
|
||||
// Vehículo
|
||||
'vehicle' => $record->vehicle,
|
||||
|
||||
// Propietario
|
||||
'owner' => $record->vehicle->owner,
|
||||
|
||||
// Tag y Paquete
|
||||
'tag' => $record->vehicle->tag ? [
|
||||
'id' => $record->vehicle->tag->id,
|
||||
'folio' => $record->vehicle->tag->folio,
|
||||
'tag_number' => $record->vehicle->tag->tag_number,
|
||||
'status' => $record->vehicle->tag->status?->name,
|
||||
|
||||
// Paquete
|
||||
'package' => $record->vehicle->tag->package ? [
|
||||
'id' => $record->vehicle->tag->package->id,
|
||||
'lot' => $record->vehicle->tag->package->lot,
|
||||
'box_number' => $record->vehicle->tag->package->box_number,
|
||||
] : null,
|
||||
] : null,
|
||||
|
||||
// Archivos
|
||||
'files' => $record->files->map(function ($file) {
|
||||
return [
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
use App\Models\CatalogTagStatus;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Database\QueryException;
|
||||
use App\Models\Package;
|
||||
@ -21,10 +20,6 @@ class PackageController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
try {
|
||||
Log::info('PackageController@index - Iniciando consulta de paquetes', [
|
||||
'filters' => $request->all()
|
||||
]);
|
||||
|
||||
// Si NO hay filtro de caja, no cargar las relaciones de tags para optimizar
|
||||
$shouldLoadTags = $request->filled('caja') || $request->filled('box_number');
|
||||
|
||||
@ -54,14 +49,8 @@ public function index(Request $request)
|
||||
$packages->where('box_number', 'LIKE', '%' . trim($cajaValue) . '%');
|
||||
}
|
||||
|
||||
Log::info('PackageController@index - Ejecutando paginación');
|
||||
$paginatedPackages = $packages->paginate(config('app.pagination'));
|
||||
|
||||
Log::info('PackageController@index - Paginación completada', [
|
||||
'total' => $paginatedPackages->total(),
|
||||
'count' => $paginatedPackages->count()
|
||||
]);
|
||||
|
||||
// Validación si no hay resultados
|
||||
if ($paginatedPackages->isEmpty()) {
|
||||
return ApiResponse::NOT_FOUND->response([
|
||||
@ -123,20 +112,10 @@ public function index(Request $request)
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
Log::info('PackageController@index - Retornando respuesta exitosa');
|
||||
|
||||
return ApiResponse::OK->response([
|
||||
'Paquetes' => $paginatedPackages,
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
Log::error('PackageController@index - Error capturado', [
|
||||
'message' => $e->getMessage(),
|
||||
'file' => $e->getFile(),
|
||||
'line' => $e->getLine(),
|
||||
'trace' => $e->getTraceAsString()
|
||||
]);
|
||||
|
||||
return ApiResponse::INTERNAL_ERROR->response([
|
||||
'message' => 'Error al obtener los paquetes',
|
||||
'error' => $e->getMessage(),
|
||||
|
||||
@ -280,26 +280,52 @@ public function pdfCancelledTag(Tag $tag)
|
||||
}
|
||||
}
|
||||
|
||||
public function pdfSubstitutedTag(Tag $tag)
|
||||
public function pdfSubstitutedTag($recordId)
|
||||
{
|
||||
try {
|
||||
// Validar que el tag tenga una sustitución registrada
|
||||
$hasSubstitution = $tag->vehicleTagLogs()
|
||||
->where('action_type', 'sustitucion')
|
||||
->whereNotNull('cancellation_at')
|
||||
->exists();
|
||||
$record = Record::with([
|
||||
'vehicle.vehicleTagLogs' => function ($query){
|
||||
$query->where('action_type', 'sustitucion')
|
||||
->whereNotNull('cancellation_at')
|
||||
->latest();
|
||||
}
|
||||
])->findOrFail($recordId);
|
||||
|
||||
if (!$hasSubstitution) {
|
||||
$oldTagLog = $record->vehicle->vehicleTagLogs->first();
|
||||
|
||||
if (!$oldTagLog) {
|
||||
return ApiResponse::BAD_REQUEST->response([
|
||||
'message' => 'Solo se puede generar PDF para tags sustituidos.',
|
||||
'tag_folio' => $tag->folio,
|
||||
'message' => 'No se encontró una sustitución registrada para este expediente.',
|
||||
'record' => $recordId,
|
||||
]);
|
||||
}
|
||||
|
||||
// Obtener datos de sustitución
|
||||
$substitutionData = $this->substitutionData($tag);
|
||||
$oldTag = Tag::with([
|
||||
'vehicleTagLogs' => function($query){
|
||||
$query->where('action_type', 'sustitucion')
|
||||
->whereNotNull('cancellation_at')
|
||||
->with(['cancellationReason', 'cancelledBy', 'vehicle'])
|
||||
->latest();
|
||||
}
|
||||
])->findOrFail($oldTagLog->tag_id);
|
||||
|
||||
$pdf = Pdf::loadView('pdfs.tag_substituted', [
|
||||
$hasSubstitution = $oldTag->vehicleTagLogs()
|
||||
->where('action_type', 'sustitucion')
|
||||
->whereNotNull('cancellation_at')
|
||||
->exists();
|
||||
|
||||
if(!$hasSubstitution){
|
||||
return ApiResponse::BAD_REQUEST->response([
|
||||
'message' => 'El tag no tiene sustitución registrada.',
|
||||
'tag' => $oldTag->folio,
|
||||
]);
|
||||
}
|
||||
|
||||
$substitutionData = $this->substitutionData($oldTag);
|
||||
|
||||
$pdf = Pdf::loadView('pdfs.tag_sustitution', [
|
||||
'substitution' => $substitutionData,
|
||||
])
|
||||
->setPaper('a4', 'portrait')
|
||||
@ -309,10 +335,10 @@ public function pdfSubstitutedTag(Tag $tag)
|
||||
'isRemoteEnabled' => true,
|
||||
]);
|
||||
|
||||
return $pdf->stream('constancia_sustituida_' . $tag->folio . '.pdf');
|
||||
return $pdf->stream('constancia_sustituida_' . $oldTag->folio . '.pdf');
|
||||
} catch (\Exception $e) {
|
||||
return ApiResponse::INTERNAL_ERROR->response([
|
||||
'message' => 'Error al generar el PDF.',
|
||||
'message' => 'Error al generar el PDF del tag sustituido.',
|
||||
'error' => $e->getMessage(),
|
||||
]);
|
||||
}
|
||||
|
||||
@ -232,7 +232,7 @@ public function store(Request $request)
|
||||
}
|
||||
|
||||
return ApiResponse::CREATED->response($response);
|
||||
} catch (\Illuminate\Validation\ValidationException $e) {
|
||||
} catch (ValidationException $e) {
|
||||
return ApiResponse::BAD_REQUEST->response([
|
||||
'message' => 'No se pudo crear el tag: Datos de validación incorrectos.',
|
||||
'error' => 'validation_error',
|
||||
|
||||
@ -129,14 +129,14 @@ public function tagSubstitution(Request $request)
|
||||
}
|
||||
|
||||
// Verificar robo del vehículo
|
||||
/* $isStolen = $this->checkIfStolen($vehicle->niv);
|
||||
$isStolen = $this->checkIfStolen($vehicle->niv);
|
||||
|
||||
if ($isStolen) {
|
||||
return ApiResponse::FORBIDDEN->response([
|
||||
'message' => 'El vehículo reporta robo. No se puede continuar con la sustitución.',
|
||||
'niv' => $vehicle->niv,
|
||||
]);
|
||||
} */
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
@ -376,7 +376,7 @@ public function vehicleUpdate(Request $request)
|
||||
]);
|
||||
|
||||
// REPUVE Nacional
|
||||
/* ProcessRepuveResponse::dispatch($record->id, $datosCompletosRaw); */
|
||||
ProcessRepuveResponse::dispatch($record->id, $datosCompletosRaw);
|
||||
|
||||
DB::commit();
|
||||
|
||||
@ -473,7 +473,7 @@ public function vehicleUpdate(Request $request)
|
||||
]);
|
||||
}
|
||||
|
||||
/* $isStolen = $this->checkIfStolen($vehicle->niv, $placa);
|
||||
$isStolen = $this->checkIfStolen($vehicle->niv, $placa);
|
||||
|
||||
if ($isStolen) {
|
||||
return ApiResponse::FORBIDDEN->response([
|
||||
@ -482,7 +482,7 @@ public function vehicleUpdate(Request $request)
|
||||
'niv' => $vehicle->niv,
|
||||
'stolen' => true,
|
||||
]);
|
||||
} */
|
||||
}
|
||||
|
||||
$vehicleChangedFields = $this->detectVehicleChanges($vehicle, $vehicleDataEstatal);
|
||||
$ownerChangedFields = $this->detectOwnerChanges($vehicle->owner, $ownerDataEstatal);
|
||||
|
||||
@ -40,7 +40,7 @@ public function handle(RepuveService $repuveService): void
|
||||
|
||||
$apiResponse = $repuveService->inscribirVehiculo($this->responseData);
|
||||
|
||||
Log::info('📥 ProcessRepuveResponse: Respuesta recibida de REPUVE', [
|
||||
Log::info('ProcessRepuveResponse: Respuesta recibida de REPUVE', [
|
||||
'has_error' => $apiResponse['has_error'],
|
||||
'error_code' => $apiResponse['error_code'] ?? null,
|
||||
'timestamp' => $apiResponse['timestamp'] ?? null,
|
||||
@ -61,7 +61,7 @@ public function handle(RepuveService $repuveService): void
|
||||
'error_occurred_at' => now(),
|
||||
]);
|
||||
|
||||
Log::warning('💾 ProcessRepuveResponse: Record actualizado con error', [
|
||||
Log::warning('ProcessRepuveResponse: Record actualizado con error', [
|
||||
'record_id' => $record->id,
|
||||
'error_id' => $error?->id,
|
||||
]);
|
||||
@ -87,7 +87,7 @@ public function failed(\Throwable $exception): void
|
||||
|
||||
$record = Record::find($this->recordId);
|
||||
if($record){
|
||||
Log::info('🔍 ProcessRepuveResponse: Buscando error genérico código -1');
|
||||
Log::info('ProcessRepuveResponse: Buscando error genérico código -1');
|
||||
|
||||
$error = Error::where('code', '-1')->first();
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
Route::get('expediente/{id}/pdfConstancia', [RecordController::class, 'generatePdfConstancia']);
|
||||
Route::get('expediente/{id}/pdfImagenes', [RecordController::class, 'generatePdfImages']);
|
||||
Route::get('tags/{tag}/pdfTag-cancelado', [RecordController::class, 'pdfCancelledTag']);
|
||||
Route::get('tags/{tag}/pdfTag-sustituido', [RecordController::class, 'pdfSubstitutedTag']);
|
||||
Route::get('tags/{id}/pdfTag-sustituido', [RecordController::class, 'pdfSubstitutedTag']);
|
||||
Route::get('expediente/{id}/pdfFormulario', [RecordController::class, 'generatePdfForm']);
|
||||
Route::get('RecordErrors', [RecordController::class, 'errors']);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user