SchedulerService.php
1 <?php 2 3 namespace App\Http\Services; 4 5 use App\Models\Dossier; 6 use App\Models\DossierType; 7 use App\Models\Scheduler; 8 use App\Models\Setting; 9 use Illuminate\Support\Facades\DB; 10 11 class SchedulerService 12 { 13 public static function getRectifyDays(): array 14 { 15 return [ 16 ['id' => 1, 'name' => __('settings.schedule.days.monday')], 17 ['id' => 2, 'name' => __('settings.schedule.days.tuesday')], 18 ['id' => 3, 'name' => __('settings.schedule.days.wednesday')], 19 ['id' => 4, 'name' => __('settings.schedule.days.thursday')], 20 ['id' => 5, 'name' => __('settings.schedule.days.friday')], 21 ['id' => 6, 'name' => __('settings.schedule.days.saturday')], 22 ['id' => 7, 'name' => __('settings.schedule.days.sunday')], 23 ]; 24 } 25 26 public static function getRectifyMonthDays(): array 27 { 28 return collect(range(1, 31))->map(function ($day) { 29 return ['id' => $day, 'name' => $day]; 30 })->toArray(); 31 } 32 33 public static function getMonthsInNumber(): array 34 { 35 return collect(range(1, 12))->map(function ($month) { 36 return ['id' => $month, 'name' => $month]; 37 })->toArray(); 38 } 39 40 public static function getSubtypes(): array 41 { 42 return DossierType::whereDoesntHave('children')->get()->map(function ($type) { 43 return [ 44 'id' => $type->id, 45 'name' => $type->name, 46 'description' => $type->father->father->name . ' > ' . $type->father->name, 47 ]; 48 })->toArray(); 49 } 50 51 public static function createSchedule(array $data, int $dossierTypeId): void 52 { 53 try { 54 DB::beginTransaction(); 55 56 $scheduler = Scheduler::create([ 57 'frequency_verification_rectify' => $data['frequency_verification_rectify'], 58 'day_verification_rectify' => $data['day_verification_rectify'], 59 'time_verification_rectify' => $data['time_verification_rectify'], 60 'amount_of_days' => $data['amount_of_days'], 61 'frequency_evaluation_request_check' => $data['frequency_evaluation_request_check'], 62 'day_evaluation_request_check' => $data['day_evaluation_request_check'], 63 'time_evaluation_request_check' => $data['time_evaluation_request_check'], 64 'days_verification_for_evaluation_request' => $data['days_verification_for_evaluation_request'], 65 'frequency_certification_report_check' => $data['frequency_certification_report_check'], 66 'day_certification_report_check' => $data['day_certification_report_check'], 67 'time_certification_report_check' => $data['time_certification_report_check'], 68 'amount_of_days_certification_report' => $data['amount_of_days_certification_report'], 69 'dossier_type_id' => $dossierTypeId, 70 ]); 71 72 Setting::first()->schedulers()->save($scheduler); 73 74 DB::commit(); 75 } catch (\Exception $e) { 76 DB::rollBack(); 77 throw $e; 78 } 79 } 80 81 public static function updateSchedule(int $schedulerId, array $data, int $dossierTypeId): void 82 { 83 try { 84 Scheduler::findOrFail($schedulerId)->update([ 85 'frequency_verification_rectify' => $data['frequency_verification_rectify'], 86 'day_verification_rectify' => $data['day_verification_rectify'], 87 'time_verification_rectify' => $data['time_verification_rectify'], 88 'amount_of_days' => $data['amount_of_days'], 89 'frequency_evaluation_request_check' => $data['frequency_evaluation_request_check'], 90 'day_evaluation_request_check' => $data['day_evaluation_request_check'], 91 'time_evaluation_request_check' => $data['time_evaluation_request_check'], 92 'days_verification_for_evaluation_request' => $data['days_verification_for_evaluation_request'], 93 'frequency_certification_report_check' => $data['frequency_certification_report_check'], 94 'day_certification_report_check' => $data['day_certification_report_check'], 95 'time_certification_report_check' => $data['time_certification_report_check'], 96 'amount_of_days_certification_report' => $data['amount_of_days_certification_report'], 97 'dossier_type_id' => $dossierTypeId, 98 ]); 99 } catch (\Exception $e) { 100 throw $e; 101 } 102 } 103 }