public async Task <string> AddCompanyAsync(CompanyInputModel input) { if (this.companiesRepository.All().Any(c => c.Name == input.Name)) { return(null); } var company = new Company { Name = input.Name, TaxNumber = input.TaxNumber, Address = new CompanyAddress { MOLFirstName = input.MOLFirstName, MOLLastName = input.MOLLastName, Address = new Address { StreetLine = input.StreetLine, Area = input.Area, City = input.City, Postcode = input.Postcode, State = input.State, }, }, Comunicators = new Comunicators { Mobile1 = input.Mobile1, Mobile2 = input.Mobile2, Phone1 = input.Phone1, Phone2 = input.Phone2, Email1 = input.Email1, Email2 = input.Email2, Details = input.Details, }, }; var taxCoutry = this.taxCtrRepo.All().FirstOrDefault(c => c.Name == input.TaxCountry); if (taxCoutry == null) { taxCoutry = new TaxCountry { Name = input.TaxCountry }; } company.TaxCountry = taxCoutry; await this.companiesRepository.AddAsync(company); company.Address.AdminId = company.AdminId; company.Address.Address.AdminId = company.AdminId; company.Comunicators.AdminId = company.AdminId; company.TaxCountry.AdminId = company.AdminId; await this.companiesRepository.SaveChangesAsync(); return(company.Id); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? this.Url.Content("~/"); this.ExternalLogins = (await this.signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (this.ModelState.IsValid) { var company = new Company { Name = this.Input.CompanyName, TaxNumber = this.Input.TaxNumber, TaxCurrency = new Currency { Name = this.Input.TaxCurrency }, Address = new CompanyAddress { MOLFirstName = this.Input.MOLFirstName, MOLLastName = this.Input.MOLLastName, Address = new Address { StreetLine = this.Input.StreetLine, City = this.Input.City, }, }, Comunicators = new Comunicators(), }; var taxCoutry = this.dbContext.TaxCountries.FirstOrDefault(c => c.Name == this.Input.TaxCountry); if (taxCoutry == null) { taxCoutry = new TaxCountry { Name = this.Input.TaxCountry }; } var user = new ApplicationUser { FirstName = this.Input.FirstName, LastName = this.Input.LastName, UserName = this.Input.FirstName + this.Input.LastName, Email = this.Input.Email, CompanyId = company.Id, }; user.AdminId = user.Id; company.AdminId = user.Id; company.TaxCountry = taxCoutry; company.Address.AdminId = company.AdminId; company.Address.Address.AdminId = company.AdminId; company.TaxCountry.AdminId = company.AdminId; company.TaxCurrency.AdminId = company.AdminId; company.Comunicators.AdminId = company.AdminId; await this.financeService.AddNewCompanyCurrencyRatesAsync(company.AdminId, company.TaxCurrency.Name); await this.dbContext.Companies.AddAsync(company); await this.dbContext.SaveChangesAsync(); var result = await this.userManager.CreateAsync(user, this.Input.Password); if (result.Succeeded) { this.logger.LogInformation("User created a new account with password."); await this.userManager.AddToRoleAsync(user, RoleNames.SuperUser.ToString()); await this.userManager.AddToRoleAsync(user, RoleNames.User.ToString()); var code = await this.userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = this.Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl }, protocol: this.Request.Scheme); await this.emailSender.SendEmailAsync( this.Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); if (this.userManager.Options.SignIn.RequireConfirmedAccount) { return(this.RedirectToPage("RegisterConfirmation", new { email = this.Input.Email, returnUrl = returnUrl })); } else { // await this._signInManager.SignInAsync(user, isPersistent: false); return(this.LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { this.ModelState.AddModelError(string.Empty, error.Description); } } return(this.Page()); }