/**
  * @param InvitationInterface $invitation
  *
  * @return \Tahoe\Bundle\MultiTenancyBundle\Entity\TenantUser
  */
 public function acceptInvitation(InvitationInterface $invitation)
 {
     $user = $this->userRepository->findOneBy(array('emailCanonical' => $invitation->getEmail()));
     $tenant = $invitation->getTenant();
     $tenantUser = $this->tenantUserHandler->addUserToTenant($user, $tenant);
     $this->entityManager->flush();
     $this->delete($invitation, true);
     return $tenantUser;
 }
 /**
  * @param MultiTenantUserInterface $user
  * @param FormInterface $form
  *
  * @return Tenant
  * @throws \Exception
  */
 public function createTenant(MultiTenantUserInterface $user, $tenantName, $tenantSubdomain = '')
 {
     $this->logger->info(sprintf('Creating new tenant with name %s and subdomain %s', $tenantName, $tenantSubdomain));
     /** @var Tenant $tenant */
     $tenant = $this->tenantFactory->createNew();
     $tenant->setName($tenantName);
     $tenantSubdomain = $tenantSubdomain ?: $this->createSubdomainFromTenant($tenantName);
     $tenant->setSubdomain($tenantSubdomain);
     $this->entityManager->persist($tenant);
     // add as active tenant
     $user->setActiveTenant($tenant);
     $this->entityManager->flush();
     $this->tenantUserHandler->addUserToTenant($user, $tenant, array('ROLE_ADMIN'));
     $this->entityManager->flush();
     // we create a new account for gateway
     if (null !== $this->gatewayManager) {
         $this->logger->info(sprintf('Creating new account for tenant using gatewaymanager %s', get_class($this->gatewayManager)));
         $this->gatewayManager->createAccount($tenant);
     } else {
         $this->logger->info('No gatewaymanager configured');
     }
     return $tenant;
 }