ProviderController.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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($result["payload"]),
  58. message: __("auth.logged_in"),
  59. )->withCookie(
  60. cookie(
  61. "refresh_token",
  62. $result["refreshToken"],
  63. config("sanctum.rt_expiration") * 60,
  64. "/",
  65. config("session.domain"),
  66. config("session.secure"),
  67. true,
  68. false,
  69. "Lax",
  70. ),
  71. );
  72. }
  73. }