/**
  * @param ConsumerRegistrationRequestInterface $request
  *
  * @return Consumer
  *
  * @throws DomainException
  */
 public function handle(ConsumerRegistrationRequestInterface $request)
 {
     $consumerEntity = $request->getConsumerEntity();
     $gguid = UUID::generate();
     $username = new Username($consumerEntity->getUsername());
     $password = new Password($consumerEntity->getPassword());
     $this->validateUsernameIsUnique($username);
     $consumer = new Consumer($gguid, $username, $password);
     $this->consumerRepository->persist($consumer);
     $this->getEventDispatcher()->trigger(new ConsumerRegisteredEvent($gguid));
     return $consumer;
 }