FranchiseeContractService.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Services;
  3. use App\Models\FranchiseeContract;
  4. use Illuminate\Database\Eloquent\Collection;
  5. class FranchiseeContractService
  6. {
  7. public function getAll(): Collection
  8. {
  9. return FranchiseeContract::orderBy('created_at', 'desc')
  10. ->get();
  11. }
  12. public function findById(int $id): ?FranchiseeContract
  13. {
  14. return FranchiseeContract::find($id);
  15. }
  16. public function getByUnitId(int $unitId): Collection
  17. {
  18. return FranchiseeContract::where('unit_id', $unitId)
  19. ->orderBy('created_at', 'desc')
  20. ->get();
  21. }
  22. public function create(array $data): FranchiseeContract
  23. {
  24. $data['protocol'] = (FranchiseeContract::where('unit_id', $data['unit_id'])->max('protocol') ?? 0) + 1;
  25. $data['signature_date'] = $data['start_date'];
  26. if (isset($data['start_date'], $data['end_date'])) {
  27. $data['validity_months'] = \Carbon\Carbon::parse($data['start_date'])
  28. ->diffInMonths(\Carbon\Carbon::parse($data['end_date']));
  29. }
  30. return FranchiseeContract::create($data);
  31. }
  32. public function update(int $id, array $data): ?FranchiseeContract
  33. {
  34. $model = $this->findById($id);
  35. if (!$model) {
  36. return null;
  37. }
  38. $model->update($data);
  39. return $model->fresh();
  40. }
  41. public function delete(int $id): bool
  42. {
  43. $model = $this->findById($id);
  44. if (!$model) {
  45. return false;
  46. }
  47. return $model->delete();
  48. }
  49. // Add custom business logic methods here
  50. }