AddressService.php 1.6 KB

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