AddressService.php 1.3 KB

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