2026-02-16 12:48:29 -06:00

86 lines
1.8 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Record extends Model
{
use HasFactory;
protected $fillable = [
'folio',
'vehicle_id',
'user_id',
'module_id',
'error_id',
'api_response',
'error_occurred_at',
];
protected $casts = [
'api_response' => '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);
}
}