public void AddTrialCompany(string firstName, string lastName, string phoneNumber, string companyName, string subDomain, string email, string password) { logger.Info("firstName: {0}, lastName: {1}, companyName: {2}, email: {3}", firstName, lastName, companyName, email); string hostName = ToUrlSlug(subDomain) + "." + ConfigurationManager.AppSettings["LmsWebDomain"]; logger.Debug("URL: " + hostName); if (unitOfWork.CompanyRepository.GetAll().Any(x => x.HostName == hostName)) { throw new CompanyException(string.Format("The company name {0} is already registered in the system", email)); } try { var company = new Company(firstName, lastName, phoneNumber, companyName, email, true, DateTime.UtcNow.AddMonths(1), hostName); var user = new User(email, firstName, lastName, password, UserTypeEnum.Internal, UserStatusEnum.Active, false, AcquisitionEnum.OnPremise); logger.Debug("new company id: " + company.Id); var group = new Lms.Domain.Models.Companies.Group("Administrator", "Company Administrator", false, company.Id); user.AddUserGroup(group); company.AddCompanyAccess(user); unitOfWork.CompanyRepository.Insert(company); unitOfWork.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException dbex) { foreach (var validationErrors in dbex.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { string message = string.Format("{0}:{1}", validationErrors.Entry.Entity.ToString(), validationError.ErrorMessage); logger.Error(message); } } throw dbex; } catch (Exception ex) { logger.Error(ex.ToString()); throw ex; } }