AddressController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\AddressRequest;
  4. use App\Http\Resources\AddressResource;
  5. use App\Services\AddressService;
  6. use Illuminate\Http\JsonResponse;
  7. class AddressController extends Controller
  8. {
  9. protected AddressService $addressService;
  10. public function __construct(AddressService $addressService)
  11. {
  12. $this->addressService = $addressService;
  13. }
  14. public function showBySource(AddressRequest $request): JsonResponse
  15. {
  16. $address = $this->addressService->findBySource($request->validated());
  17. return $this->successResponse(
  18. payload: AddressResource::collection($address),
  19. );
  20. }
  21. public function show($id): JsonResponse
  22. {
  23. $address = $this->addressService->one($id);
  24. return $this->successResponse(
  25. payload: new AddressResource($address),
  26. );
  27. }
  28. public function store(AddressRequest $request): JsonResponse
  29. {
  30. $address = $this->addressService->create($request->validated());
  31. return $this->successResponse(
  32. payload: new AddressResource($address),
  33. message: __('messages.created'),
  34. code: 201,
  35. );
  36. }
  37. public function update(AddressRequest $request, string $id): JsonResponse
  38. {
  39. $address = $this->addressService->update($request->validated(), $id);
  40. return $this->successResponse(
  41. payload: new AddressResource($address),
  42. message: __('messages.updated'),
  43. );
  44. }
  45. public function destroy(string $id): JsonResponse
  46. {
  47. $this->addressService->delete($id);
  48. return $this->successResponse(
  49. message: __('messages.deleted'),
  50. code: 204,
  51. );
  52. }
  53. //
  54. public function showPrimaryBySource(AddressRequest $request): JsonResponse
  55. {
  56. $address = $this->addressService->findPrimaryBySource($request->validated());
  57. return $this->successResponse(
  58. payload: new AddressResource($address),
  59. );
  60. }
  61. }