UserController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Resources\UserTypeResource;
  4. use App\Services\UserService;
  5. use App\Http\Requests\UserRequest;
  6. use App\Http\Requests\UpdateMeRequest;
  7. use App\Http\Resources\UserResource;
  8. use Illuminate\Http\JsonResponse;
  9. use Illuminate\Support\Facades\Log;
  10. class UserController extends Controller
  11. {
  12. public function __construct(protected UserService $service) {}
  13. public function me(): JsonResponse
  14. {
  15. $user = $this->service->me();
  16. return $this->successResponse(payload: new UserResource($user));
  17. }
  18. public function index(): JsonResponse
  19. {
  20. $items = $this->service->getAll();
  21. return $this->successResponse(
  22. payload: UserResource::collection($items),
  23. );
  24. }
  25. public function store(UserRequest $request): JsonResponse
  26. {
  27. $item = $this->service->create($request->validated());
  28. return $this->successResponse(
  29. payload: new UserResource($item),
  30. message: __("messages.created"),
  31. code: 201,
  32. );
  33. }
  34. public function show(int $id): JsonResponse
  35. {
  36. $item = $this->service->findById($id);
  37. return $this->successResponse(payload: new UserResource($item));
  38. }
  39. public function update(UserRequest $request, int $id): JsonResponse
  40. {
  41. $item = $this->service->update($id, $request->validated());
  42. return $this->successResponse(
  43. payload: new UserResource($item),
  44. message: __("messages.updated"),
  45. );
  46. }
  47. public function destroy(int $id): JsonResponse
  48. {
  49. $this->service->delete($id);
  50. return $this->successResponse(
  51. message: __("messages.deleted"),
  52. code: 204,
  53. );
  54. }
  55. public function updateMe(UpdateMeRequest $request): JsonResponse
  56. {
  57. $user = $this->service->updateMe($request->validated());
  58. return $this->successResponse(
  59. payload: new UserResource($user),
  60. message: __("messages.updated"),
  61. );
  62. }
  63. public function getUserTypes(): JsonResponse
  64. {
  65. $user_types = $this->service->getUserTypes();
  66. return $this->successResponse(
  67. payload: new UserTypeResource($user_types),
  68. );
  69. }
  70. }