/ app / Models / NormScope.php
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  }