NormScope.php
1 <?php 2 3 namespace App\Models; 4 5 use Illuminate\Database\Eloquent\Factories\HasFactory; 6 use Illuminate\Database\Eloquent\Model; 7 use Spatie\Activitylog\LogOptions; 8 use Spatie\Activitylog\Traits\LogsActivity; 9 10 class NormScope extends Model 11 { 12 use HasFactory, LogsActivity; 13 14 protected $guarded = []; 15 16 public function norm() 17 { 18 return $this->belongsTo(Norm::class, 'norm_id'); 19 } 20 21 public function skills() 22 { 23 return $this->hasMany(EvaluatorSkill::class); 24 } 25 26 public function recomendedEvaluator(Laboratory $lab) 27 { 28 $recomended_evaluators = []; 29 foreach ($this->skills as $skill) { 30 if ($skill->evaluator->laboratory->id == $lab->id) { 31 array_push($recomended_evaluators, $skill->evaluator); 32 } 33 } 34 35 return collect($recomended_evaluators); 36 } 37 38 public function workbooks() 39 { 40 return $this->belongsToMany(Workbook::class, 'norm_scope_workbook', 'norm_scope_id', 'workbook_id'); 41 } 42 43 public function securityRequirements() 44 { 45 return $this->hasMany(SecurityRequirement::class); 46 } 47 48 public function getActivitylogOptions(): LogOptions 49 { 50 return LogOptions::defaults() 51 ->logOnly(['name', 'description', 'potential_attack', 'norm_id', 'norm.name']) 52 ->logOnlyDirty() 53 ->dontSubmitEmptyLogs(); 54 } 55 }