fix: ajustar el filtrado de registros por módulo del usuario
This commit is contained in:
parent
2093ff7538
commit
43269ca04a
@ -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')) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user