Norm.php
1 <?php 2 3 namespace App\Models; 4 5 use Illuminate\Database\Eloquent\Casts\Attribute; 6 use Illuminate\Database\Eloquent\Factories\HasFactory; 7 use Illuminate\Database\Eloquent\Model; 8 use Illuminate\Database\Eloquent\SoftDeletes; 9 use Spatie\Activitylog\LogOptions; 10 use Spatie\Activitylog\Traits\LogsActivity; 11 12 class Norm extends Model 13 { 14 use HasFactory, LogsActivity, SoftDeletes; 15 16 protected $guarded = []; 17 protected $with = ['workbooks', 'norm_scopes']; 18 19 public function resolutions() 20 { 21 return $this->belongsToMany(Resolution::class, 'norm_resolution', 'norm_id', 'resolution_id'); 22 } 23 24 public function name(): Attribute 25 { 26 return Attribute::make( 27 get: fn () => $this->normGroup->name . ' ' . $this->version 28 ); 29 } 30 31 public function workbooks() 32 { 33 return $this->hasMany(Workbook::class); 34 } 35 36 public function norm_scopes() 37 { 38 return $this->hasMany(NormScope::class); 39 } 40 41 public function normScopes() 42 { 43 return $this->hasMany(NormScope::class); 44 } 45 46 public function scopes() 47 { 48 return $this->hasMany(NormScope::class); 49 } 50 51 public function normGroup() 52 { 53 return $this->belongsTo(NormGroup::class); 54 } 55 56 public function validationTypes() 57 { 58 return $this->hasMany(ValidationType::class); 59 } 60 61 public function getActivitylogOptions(): LogOptions 62 { 63 return LogOptions::defaults() 64 ->logOnly(['name', 'description', 'norm_group_id', 'normGroup.name']) 65 ->logOnlyDirty() 66 ->dontSubmitEmptyLogs(); 67 } 68 }