feat: agrega servicio de consulta a REPUVE y Padrón Estatal en los controladores de Excel y Record

This commit is contained in:
Juan Felipe Zapata Moreno 2026-03-20 15:58:22 -06:00
parent 767e7abf5b
commit 828dd8fa21
2 changed files with 37 additions and 11 deletions

View File

@ -7,6 +7,7 @@
*/ */
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Services\RepuveService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\VehicleTagLog; use App\Models\VehicleTagLog;
use App\Models\Module; use App\Models\Module;
@ -29,6 +30,13 @@
*/ */
class ExcelController extends Controller implements HasMiddleware class ExcelController extends Controller implements HasMiddleware
{ {
private RepuveService $repuveService;
public function __construct(RepuveService $repuveService)
{
$this->repuveService = $repuveService;
}
/** /**
* Middleware * Middleware
*/ */
@ -373,13 +381,17 @@ public function constanciasSustituidas(Request $request)
->orderBy('created_at', 'asc') ->orderBy('created_at', 'asc')
->first(); ->first();
// Consultar REPUVE Nacional para obtener el folio_CI que se sustituyó
$repuveData = $this->repuveService->consultarVehiculo($log->vehicle->niv, $log->vehicle->placa);
$folioCi = $repuveData['folio_CI'] ?? '';
return [ return [
'niv' => $log->vehicle->niv ?? '', 'niv' => $log->vehicle->niv ?? '',
'nrpv' => $log->vehicle->nrpv ?? '', 'nrpv' => $log->vehicle->nrpv ?? '',
'marca' => $log->vehicle->marca ?? '', 'marca' => $log->vehicle->marca ?? '',
'placa' => $log->vehicle->placa ?? '', 'placa' => $log->vehicle->placa ?? '',
'modelo' => $log->vehicle->modelo ?? '', 'modelo' => $log->vehicle->modelo ?? '',
'folio_ant' => $log->tag->folio ?? '', 'folio_ant' => $folioCi,
'folio_act' => $newTagLog?->tag?->folio ?? '', 'folio_act' => $newTagLog?->tag?->folio ?? '',
'chip' => substr($newTagLog?->tag?->rfid ?? $newTagLog?->tag?->tag_number ?? '', 0, 24), 'chip' => substr($newTagLog?->tag?->rfid ?? $newTagLog?->tag?->tag_number ?? '', 0, 24),
'fecha' => $log->cancellation_at?->format('d/m/Y') ?? $log->created_at->format('d/m/Y'), 'fecha' => $log->cancellation_at?->format('d/m/Y') ?? $log->created_at->format('d/m/Y'),

View File

@ -3,6 +3,8 @@
namespace App\Http\Controllers\Repuve; namespace App\Http\Controllers\Repuve;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Services\RepuveService;
use App\Services\PadronEstatalService;
use Barryvdh\DomPDF\Facade\Pdf; use Barryvdh\DomPDF\Facade\Pdf;
use App\Models\Record; use App\Models\Record;
use App\Models\Tag; use App\Models\Tag;
@ -18,6 +20,15 @@
class RecordController extends Controller implements HasMiddleware class RecordController extends Controller implements HasMiddleware
{ {
private RepuveService $repuveService;
private PadronEstatalService $padronEstatalService;
public function __construct(RepuveService $repuveService, PadronEstatalService $padronEstatalService)
{
$this->repuveService = $repuveService;
$this->padronEstatalService = $padronEstatalService;
}
/** /**
* Middleware * Middleware
*/ */
@ -240,7 +251,6 @@ public function generatePdfForm($id)
$record = Record::with([ $record = Record::with([
'vehicle', 'vehicle',
'vehicle.owner', 'vehicle.owner',
'vehicle.tag',
])->findOrFail($id); ])->findOrFail($id);
if (!$record->vehicle) { if (!$record->vehicle) {
@ -252,19 +262,23 @@ public function generatePdfForm($id)
$vehicle = $record->vehicle; $vehicle = $record->vehicle;
$owner = $vehicle->owner; $owner = $vehicle->owner;
$tag = $vehicle->tag;
// Consultar REPUVE Nacional y Padrón Estatal para obtener datos oficiales del vehículo
$repuveData = $this->repuveService->consultarVehiculo($vehicle->niv, $vehicle->placa);
$padronRaw = $this->padronEstatalService->getVehiculoByNiv($vehicle->niv);
$padronData = $this->padronEstatalService->extraerDatosVehiculo($padronRaw);
$now = Carbon::now()->locale('es_MX'); $now = Carbon::now()->locale('es_MX');
$data = [ $data = [
// Datos del vehículo // Datos del vehículo desde REPUVE Nacional y Padrón Estatal
'marca' => strtoupper($vehicle->marca ?? ''), 'marca' => strtoupper($repuveData['marca'] ?? ''),
'linea' => strtoupper($vehicle->linea ?? ''), 'linea' => strtoupper($repuveData['linea'] ?? ''),
'modelo' => $vehicle->modelo ?? '', 'modelo' => $repuveData['modelo'] ?? '',
'niv' => strtoupper($vehicle->niv ?? ''), 'niv' => strtoupper($repuveData['niv'] ?? ''),
'numero_motor' => strtoupper($vehicle->numero_motor ?? ''), 'numero_motor' => strtoupper($padronData['numero_motor'] ?? ''),
'placa' => strtoupper($vehicle->placa ?? ''), 'placa' => strtoupper($padronData['placa'] ?? ''),
'folio' => $tag?->folio ?? $record->folio ?? '', 'folio' => $repuveData['folio_CI'] ?? '',
// Datos del propietario // Datos del propietario
'telefono' => $owner?->telefono ?? '', 'telefono' => $owner?->telefono ?? '',