/**
  * @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();
 }