CompanyBenefitService.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Services;
  3. use App\Models\CompanyBenefit;
  4. use Illuminate\Database\Eloquent\Collection;
  5. class CompanyBenefitService
  6. {
  7. public function getAll(): Collection
  8. {
  9. return CompanyBenefit::orderBy('order')->orderBy('id')->get();
  10. }
  11. public function findById(int $id): ?CompanyBenefit
  12. {
  13. return CompanyBenefit::find($id);
  14. }
  15. public function create(array $data): CompanyBenefit
  16. {
  17. if (!isset($data['order'])) {
  18. $data['order'] = CompanyBenefit::max('order') + 1;
  19. }
  20. return CompanyBenefit::create($data);
  21. }
  22. public function update(int $id, array $data): ?CompanyBenefit
  23. {
  24. $model = $this->findById($id);
  25. if (!$model) {
  26. return null;
  27. }
  28. $model->update($data);
  29. return $model->fresh();
  30. }
  31. public function reorder(array $items): void
  32. {
  33. foreach ($items as $item) {
  34. CompanyBenefit::where('id', $item['id'])->update(['order' => $item['order']]);
  35. }
  36. }
  37. public function delete(int $id): bool
  38. {
  39. $model = $this->findById($id);
  40. if (!$model) {
  41. return false;
  42. }
  43. return $model->delete();
  44. }
  45. }