/**
* @param SignUpUserRequest $request
*
* @return User
*
* @throws UserAlreadyExistsException
*/
public function execute($request = null)
{
$email = $request->email();
$password = $request->password();
$user = $this->userRepository->ofEmail($email);
if (null !== $user) {
throw new UserAlreadyExistsException();
}
$user = new User($this->userRepository->nextIdentity(), $email, $password);
$this->userRepository->add($user);
$this->userDataTransformer->write($user);
return $this->userDataTransformer->read();
}