Example #1
0
        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);
        }
Example #2
0
        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());
        }