ClientController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\ClientRequest;
  4. use App\Http\Requests\RegisterClientRequest;
  5. use App\Http\Resources\ClientResource;
  6. use App\Services\ClientService;
  7. use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
  8. use Illuminate\Http\JsonResponse;
  9. use App\Http\Resources\AuthResource;
  10. use Illuminate\Support\Facades\Log;
  11. class ClientController extends Controller
  12. {
  13. public function __construct(protected ClientService $service) {}
  14. public function index(): JsonResponse
  15. {
  16. $items = $this->service->getAll();
  17. return $this->successResponse(
  18. payload: ClientResource::collection($items),
  19. );
  20. }
  21. public function store(ClientRequest $request): JsonResponse
  22. {
  23. $item = $this->service->create($request->validated());
  24. return $this->successResponse(
  25. payload: new ClientResource($item),
  26. message: __("messages.created"),
  27. code: 201,
  28. );
  29. }
  30. public function show(int $id): JsonResponse
  31. {
  32. $item = $this->service->findById($id);
  33. return $this->successResponse(payload: new ClientResource($item));
  34. }
  35. public function update(ClientRequest $request, int $id): JsonResponse
  36. {
  37. $item = $this->service->update($request->validated(), $id);
  38. return $this->successResponse(
  39. payload: new ClientResource($item),
  40. message: __("messages.updated"),
  41. );
  42. }
  43. public function destroy(int $id): JsonResponse
  44. {
  45. $this->service->delete($id);
  46. return $this->successResponse(
  47. message: __("messages.deleted"),
  48. code: 204,
  49. );
  50. }
  51. public function register(RegisterClientRequest $request): JsonResponse
  52. {
  53. $result = $this->service->register($request->validated());
  54. if (!$result) {
  55. return $this->errorResponse(message: __("auth.failed"), code: 401);
  56. }
  57. return $this->successResponse(
  58. payload: new AuthResource([
  59. ...$result["payload"],
  60. "refresh_token" => $result["refreshToken"],
  61. ]),
  62. message: __("auth.logged_in"),
  63. );
  64. }
  65. }