AddressController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. public function showPrimaryBySource(AddressRequest $request): JsonResponse
  54. {
  55. $address = $this->addressService->findPrimaryBySource($request->validated());
  56. return $this->successResponse(
  57. payload: new AddressResource($address),
  58. );
  59. }
  60. }