UserController.php 2.5 KB

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