private COMPANY CreateCompany(GMEntities context, Company company, int newUserId) { var gmCompany = new COMPANY { NAME = company.Name, ADDRESS_LINE_1 = company.AddressLine1, ADDRESS_LINE_2 = company.AddressLine2, SUBURB = company.Subarb, POST_CODE = company.PostCode, COUNTRY = company.Country, PHONE = company.Phone, ABN = company.Abn, ACCOUNT_NO = RandomToken.GenerateDigitsOnly(11), BSB = GlobalSettings.Instance.Bsb, IS_ACTIVE = company.IsActive, IS_ADMIN = company.IsAdmin, IS_DELETED = company.IsDeleted, CR_BY = company.CrBy, CR_AT = company.CrAt, UP_BY = company.UpBy, UP_AT = company.UpAt, LOGO_PATH = company.LogoPath, AGREEMENT_DATE = company.AgreementDate, AGREEMENT_PATH = company.AgreementPath, EMAIL = company.Email, CONTACT_USER_ID = newUserId, GUID = Guid.NewGuid(), ADMIN_FEE = company.AdminFee }; context.COMPANies.Add(gmCompany); context.SaveChanges(); return(gmCompany); }
public Company StartNewCompanyFlow(Company company, string baseUrl) { //Email existance if (UserEmailExists(company.Email)) { #if !DEBUG throw new Exception("User email already exists. Please use different contact email address."); #endif } USER newUser = null; COMPANY newCompany = null; // transaction started... using (var context = new GMEntities()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { //Contact person user creation newUser = CreateCompanyUser(context, company); //Company creation newCompany = CreateCompany(context, company, newUser.ID); company.Id = newCompany.ID; company.ContactName = newCompany.CONTACT_NAME; dbContextTransaction.Commit(); } catch (Exception ex) { dbContextTransaction.Rollback(); throw new Exception("Error occured while creating new company. Transaction rolled-back."); } } } try { //Eamil to user bool emailSentToUser = SendUserEmail(newCompany, newUser, baseUrl, new Email { To = company.Email }); //Eamil to user bool emailSentToAdmin = SendAdminEmail(newCompany); if (!emailSentToUser || !emailSentToAdmin) { throw new Exception("Problem in sending emails"); } } catch (Exception) { } return(company); }
private USER CreateCompanyUser(GMEntities context, Company company) { var gmUser = new USER { FIRST_NAME = company.ContactName, EMAIL = company.Email, #if DEBUG USERNAME = company.Email + "-" + RandomToken.GenerateDigitsOnly(5), #else USERNAME = company.Email, #endif PASSWORD = RandomToken.GenerateAlphaNumeric(8), CR_BY = company.CrBy, CR_AT = company.CrAt, IS_ACTIVE = true, IS_EMAIL_VERIFIED = false, GUID = Guid.NewGuid(), TOKEN = RandomToken.GenerateLowerAlphaNumeric(16) }; context.USERs.Add(gmUser); context.SaveChanges(); return(gmUser); }