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 }