diff --git a/app/Http/Controllers/Repuve/ExcelController.php b/app/Http/Controllers/Repuve/ExcelController.php index 8b9639f..b19ecf1 100644 --- a/app/Http/Controllers/Repuve/ExcelController.php +++ b/app/Http/Controllers/Repuve/ExcelController.php @@ -9,7 +9,6 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\VehicleTagLog; -use App\Models\Tag; use App\Models\Module; use App\Models\Record; use App\Models\TagCancellationLog; @@ -21,6 +20,7 @@ use PhpOffice\PhpSpreadsheet\Style\Border as PhpSpreadsheetBorder; use PhpOffice\PhpSpreadsheet\Style\Fill; use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; +use Illuminate\Support\Facades\Auth; /** @@ -1193,27 +1193,28 @@ public function exportSearchRecords(Request $request) ]); // Reutilizar la misma query de búsqueda (sin paginación) - $records = Record::with([ - 'vehicle', - 'vehicle.owner', - 'vehicle.tag:id,vehicle_id,folio,tag_number,status_id,package_id,module_id', - 'vehicle.tag.status:id,code,name', - 'vehicle.tag.package:id,lot,box_number', - 'vehicle.tag.module:id,name', - 'files:id,record_id,name_id,path,md5', - 'files.catalogName:id,name', - 'user:id,name,username,module_id', - 'module:id,name', - 'error:id,code,description', - 'vehicle.vehicleTagLogs' => function ($q) { - $q->with([ - 'tag:id,folio,tag_number,status_id,module_id,package_id', - 'tag.status:id,code,name', - 'tag.module:id,name', - 'tag.package:id,lot,box_number' - ])->orderBy('created_at', 'DESC'); - }, - ])->orderBy('id', 'ASC'); + $records = Record::forUserModule(Auth::user()) + ->with([ + 'vehicle', + 'vehicle.owner', + 'vehicle.tag:id,vehicle_id,folio,tag_number,status_id,package_id,module_id', + 'vehicle.tag.status:id,code,name', + 'vehicle.tag.package:id,lot,box_number', + 'vehicle.tag.module:id,name', + 'files:id,record_id,name_id,path,md5', + 'files.catalogName:id,name', + 'user:id,name,username,module_id', + 'module:id,name', + 'error:id,code,description', + 'vehicle.vehicleTagLogs' => function ($q) { + $q->with([ + 'tag:id,folio,tag_number,status_id,module_id,package_id', + 'tag.status:id,code,name', + 'tag.module:id,name', + 'tag.package:id,lot,box_number' + ])->orderBy('created_at', 'DESC'); + }, + ])->orderBy('id', 'ASC'); // Aplicar los mismos filtros if ($request->filled('folio')) { diff --git a/app/Models/Record.php b/app/Models/Record.php index 2ebd38c..6d04f53 100644 --- a/app/Models/Record.php +++ b/app/Models/Record.php @@ -63,12 +63,23 @@ public function vehicleTagLog() /** * Filtra registros por módulo del usuario + * Admin y developer pueden ver todos los registros + * Otros usuarios solo ven registros de su módulo */ public function scopeForUserModule($query, $user) { - if ($user->hasRole('admin')) { + $isAdminOrDeveloper = $user->hasRole(['admin', 'developer']) + || $user->hasRole(['admin', 'developer'], 'api') + || $user->roles()->whereIn('name', ['admin', 'developer'])->exists(); + + if ($isAdminOrDeveloper) { return $query; } + + if (is_null($user->module_id)) { + return $query->whereRaw('1 = 0'); + } + return $query->where('module_id', $user->module_id); } }