'array', 'error_occurred_at' => 'datetime', ]; public function vehicle() { return $this->belongsTo(Vehicle::class); } public function user() { return $this->belongsTo(User::class); } public function files() { return $this->hasMany(File::class); } public function error() { return $this->belongsTo(Error::class); } public function module() { return $this->belongsTo(Module::class); } public function vehicleTagLog() { return $this->hasManyThrough( VehicleTagLog::class, Vehicle::class, 'id', 'vehicle_id', 'vehicle_id', 'id' ); } /** * 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) { $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); } }