service->me(); return $this->successResponse(payload: new UserResource($user)); } public function index(): JsonResponse { $items = $this->service->getAll(); return $this->successResponse( payload: UserResource::collection($items), ); } public function store(UserRequest $request): JsonResponse { $item = $this->service->create($request->validated()); return $this->successResponse( payload: new UserResource($item), message: __("messages.created"), code: 201, ); } public function show(int $id): JsonResponse { $item = $this->service->findById($id); return $this->successResponse(payload: new UserResource($item)); } public function update(UserRequest $request, int $id): JsonResponse { $item = $this->service->update($id, $request->validated()); return $this->successResponse( payload: new UserResource($item), message: __("messages.updated"), ); } public function destroy(int $id): JsonResponse { $this->service->delete($id); return $this->successResponse( message: __('messages.deleted'), code: 204, ); } public function updateMe(UpdateMeRequest $request): JsonResponse { $traceId = Str::uuid()->toString(); Log::withContext(['trace_id' => $traceId]); $hasAvatar = $request->hasFile('avatar'); $avatar = $request->file('avatar'); Log::info('[avatar-upload] Requisição recebida em updateMe', [ 'user_id' => auth()->id(), 'has_avatar' => $hasAvatar, 'avatar_valid' => $hasAvatar ? $avatar->isValid() : null, 'avatar_size' => $hasAvatar ? $avatar->getSize() : null, 'avatar_mime' => $hasAvatar ? $avatar->getMimeType() : null, 'avatar_extension' => $hasAvatar ? $avatar->getClientOriginalExtension() : null, 'avatar_error' => $hasAvatar ? $avatar->getError() : null, 'method' => $request->method(), 'content_type' => $request->header('Content-Type'), ]); $user = $this->service->updateMe($request->validated()); Log::info('[avatar-upload] updateMe concluído com sucesso', [ 'user_id' => $user->id, 'client_id' => $user->client?->id, 'profile_media_id'=> $user->client?->profile_media_id, 'media_path' => $user->client?->profileMedia?->path, 'media_url' => $user->client?->profileMedia?->url, ]); return $this->successResponse( payload: new UserResource($user), message: __('messages.updated'), ); } public function getUserTypes(): JsonResponse { $user_types = $this->service->getUserTypes(); return $this->successResponse( payload: new UserTypeResource($user_types), ); } }