BaseHolidayService.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Services;
  3. use App\Models\BaseHoliday;
  4. use App\Models\Holiday;
  5. use App\Models\Unit;
  6. use Illuminate\Database\Eloquent\Collection;
  7. class BaseHolidayService
  8. {
  9. public function getAll(): Collection
  10. {
  11. return BaseHoliday::orderBy('holiday_date', 'asc')->get();
  12. }
  13. public function findById(int $id): ?BaseHoliday
  14. {
  15. return BaseHoliday::find($id);
  16. }
  17. public function create(array $data): BaseHoliday
  18. {
  19. $baseHoliday = BaseHoliday::create($data);
  20. Unit::all()->each(function (Unit $unit) use ($baseHoliday) {
  21. Holiday::create([
  22. 'unit_id' => $unit->id,
  23. 'base_holiday_id' => $baseHoliday->id,
  24. 'holiday_date' => $baseHoliday->holiday_date,
  25. 'description' => $baseHoliday->description,
  26. 'type' => $baseHoliday->type,
  27. ]);
  28. });
  29. return $baseHoliday;
  30. }
  31. public function update(int $id, array $data): ?BaseHoliday
  32. {
  33. $model = $this->findById($id);
  34. if (!$model) {
  35. return null;
  36. }
  37. $model->update($data);
  38. Holiday::where('base_holiday_id', $id)->update([
  39. 'holiday_date' => $model->holiday_date,
  40. 'description' => $model->description,
  41. 'type' => $model->type,
  42. ]);
  43. return $model->fresh();
  44. }
  45. public function delete(int $id): bool
  46. {
  47. $model = $this->findById($id);
  48. if (!$model) {
  49. return false;
  50. }
  51. return $model->delete();
  52. }
  53. }