/ app / Http / Services / AutoRequirementService.php
AutoRequirementService.php
 1  <?php
 2  
 3  namespace App\Http\Services;
 4  
 5  use App\Models\Validation;
 6  use App\Utils\AutoRequirements\BaseAutoRequirement;
 7  use Illuminate\Support\Facades\DB;
 8  
 9  class AutoRequirementService
10  {
11  
12      /**
13       * @throws \Exception
14       */
15      public static function run(Validation $validation): void
16      {
17          try {
18              DB::beginTransaction();
19              $requirements = $validation->requirements()->with('requirementTemplate')->get();
20              foreach ($requirements as $req) {
21  
22                  $class = $req->requirementTemplate->automagic_class;
23                  if (!$class)
24                      continue; //only  with automatic templates
25  
26                  /** @var BaseAutoRequirement $class */
27                  $class = new $class($req);
28                  $class->run();
29              }
30  
31              DB::commit();
32          } catch (\Exception $e) {
33              DB::rollBack();
34              throw $e;
35          }
36      }
37  }