public function run(ServerRequestInterface $request, ResponseBuilder $responseBuilder) : Response { try { $gender = $this->profileService->setGender($request->getAttribute('profileId'), Gender::createFromStringCode((new SetGenderRequest($request))->getParameters()->getGenderStringCode())); $responseBuilder->setStatusSuccess()->setJson(['gender' => $gender->toJSON()]); } catch (ProfileNotFoundException $e) { $responseBuilder->setError($e)->setStatusNotFound(); } return $responseBuilder->build(); }
public function updatePersonalData(int $profileId, EditPersonalParameters $parameters) : Profile { $profile = $this->getProfileById($profileId); $profile->setGreetings(Greetings::createFromMethod($parameters->getMethod(), ['first_name' => $parameters->getFirstName(), 'last_name' => $parameters->getLastName(), 'middle_name' => $parameters->getMiddleName(), 'nick_name' => $parameters->getNickName()])); if ($parameters->isGenderSpecified()) { $profile->setGender(Gender::createFromStringCode($parameters->getGender())); } if ($parameters->isAvatarRegenetateRequested()) { $this->avatarService->generateImage(new ProfileImageStrategy($profile, $this->imagesFlySystem, $this->wwwImagesDir)); } $this->profileRepository->saveProfile($profile); $this->getEventEmitter()->emit(self::EVENT_PROFILE_UPDATED, [$profile]); return $profile; }