AddressService.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Services;
  3. use App\Models\Address;
  4. use Illuminate\Database\Eloquent\Collection;
  5. class AddressService
  6. {
  7. public function findBySource(array $data): ?Collection
  8. {
  9. $allAddresses = Address::where('source', $data['source'])
  10. ->where('source_id', $data['source_id'])
  11. ->with(['city', 'state'])
  12. ->whereNull('deleted_at')
  13. ->orderBy('is_primary', 'desc')
  14. ->get();
  15. return $allAddresses;
  16. }
  17. public function one($id): Address
  18. {
  19. return Address::find($id);
  20. }
  21. public function create(array $data): Address
  22. {
  23. return Address::create($data);
  24. }
  25. public function update(array $data, int $id): Address
  26. {
  27. $address = Address::findOrFail($id);
  28. if (isset($data['is_primary']) && $data['is_primary']) {
  29. Address::where('source', $address->source)
  30. ->where('source_id', $address->source_id)
  31. ->where('id', '!=', $id)
  32. ->update(['is_primary' => false]);
  33. }
  34. $address->fill($data);
  35. $address->save();
  36. return $address->fresh();
  37. }
  38. public function delete(int $id): bool
  39. {
  40. $address = Address::findOrFail($id);
  41. return $address->delete();
  42. }
  43. public function findPrimaryBySource(array $data): ?Address
  44. {
  45. return Address::where('source', $data['source'])
  46. ->where('source_id', $data['source_id'])
  47. ->whereNull('deleted_at')
  48. ->orderBy('is_primary', 'desc')
  49. ->first();
  50. }
  51. }