ProviderController.php 2.1 KB

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