UserController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\UpdateMeRequest;
  4. use App\Http\Resources\UserTypeResource;
  5. use App\Services\UserService;
  6. use App\Http\Requests\UserRequest;
  7. use App\Http\Resources\UserResource;
  8. use Illuminate\Http\JsonResponse;
  9. use Illuminate\Support\Facades\Log;
  10. use Illuminate\Support\Str;
  11. class UserController extends Controller
  12. {
  13. public function __construct(protected UserService $service) {}
  14. public function me(): JsonResponse
  15. {
  16. $user = $this->service->me();
  17. return $this->successResponse(payload: new UserResource($user));
  18. }
  19. public function index(): JsonResponse
  20. {
  21. $items = $this->service->getAll();
  22. return $this->successResponse(
  23. payload: UserResource::collection($items),
  24. );
  25. }
  26. public function store(UserRequest $request): JsonResponse
  27. {
  28. $item = $this->service->create($request->validated());
  29. return $this->successResponse(
  30. payload: new UserResource($item),
  31. message: __("messages.created"),
  32. code: 201,
  33. );
  34. }
  35. public function show(int $id): JsonResponse
  36. {
  37. $item = $this->service->findById($id);
  38. return $this->successResponse(payload: new UserResource($item));
  39. }
  40. public function update(UserRequest $request, int $id): JsonResponse
  41. {
  42. $item = $this->service->update($id, $request->validated());
  43. return $this->successResponse(
  44. payload: new UserResource($item),
  45. message: __("messages.updated"),
  46. );
  47. }
  48. public function destroy(int $id): JsonResponse
  49. {
  50. $this->service->delete($id);
  51. return $this->successResponse(
  52. message: __('messages.deleted'),
  53. code: 204,
  54. );
  55. }
  56. public function updateMe(UpdateMeRequest $request): JsonResponse
  57. {
  58. $traceId = Str::uuid()->toString();
  59. Log::withContext(['trace_id' => $traceId]);
  60. $hasAvatar = $request->hasFile('avatar');
  61. $avatar = $request->file('avatar');
  62. Log::info('[avatar-upload] Requisição recebida em updateMe', [
  63. 'user_id' => auth()->id(),
  64. 'has_avatar' => $hasAvatar,
  65. 'avatar_valid' => $hasAvatar ? $avatar->isValid() : null,
  66. 'avatar_size' => $hasAvatar ? $avatar->getSize() : null,
  67. 'avatar_mime' => $hasAvatar ? $avatar->getMimeType() : null,
  68. 'avatar_extension' => $hasAvatar ? $avatar->getClientOriginalExtension() : null,
  69. 'avatar_error' => $hasAvatar ? $avatar->getError() : null,
  70. 'method' => $request->method(),
  71. 'content_type' => $request->header('Content-Type'),
  72. ]);
  73. $user = $this->service->updateMe($request->validated());
  74. Log::info('[avatar-upload] updateMe concluído com sucesso', [
  75. 'user_id' => $user->id,
  76. 'client_id' => $user->client?->id,
  77. 'profile_media_id'=> $user->client?->profile_media_id,
  78. 'media_path' => $user->client?->profileMedia?->path,
  79. 'media_url' => $user->client?->profileMedia?->url,
  80. ]);
  81. return $this->successResponse(
  82. payload: new UserResource($user),
  83. message: __('messages.updated'),
  84. );
  85. }
  86. public function getUserTypes(): JsonResponse
  87. {
  88. $user_types = $this->service->getUserTypes();
  89. return $this->successResponse(
  90. payload: new UserTypeResource($user_types),
  91. );
  92. }
  93. }