/ app / Http / Services / SchedulerService.php
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  }