Пример #1
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            BusinessLayer businessLayer = new BusinessLayer();

            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                //returnUrl = returnUrl ?? Url.Content("~/");
                returnUrl = returnUrl ?? Url.Content("~/Users/Index?userType=" + Input.UserType);


                IDTPCryptography cryptography = new IDTPCryptography();

                //Getting password salt to encrypt
                string passSalt = cryptography.GetSecretSalt();

                var user = new ApplicationUser();
                switch (Input.UserType)
                {
                case "Admin":
                {
                    user = new ApplicationUser {
                        UserName = Input.UserId, Email = Input.Email, SecretSalt = passSalt
                    };
                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        IDTPUserAdmin newUser = new IDTPUserAdmin
                        {
                            Id          = user.Id,
                            FirstName   = Input.FirstName,
                            LastName    = Input.LastName,
                            ContactNo   = Input.ContactNo,
                            Email       = Input.Email,
                            LoginId     = Input.UserId,
                            NID         = Input.NID,
                            CreatedOn   = DateTime.Now,
                            ModifiedOn  = DateTime.Now,
                            EntityState = EntityState.Added
                        };
                        businessLayer.AddUser(newUser);
                        await _userManager.AddToRoleAsync(user, "IDTPAdmin");
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    if (!ModelState.IsValid)
                    {
                        TempData["form"] = Input.UserType;
                        return(Page());
                    }
                    else
                    {
                        //await _signInManager.SignInAsync(user, isPersistent: false);
                        return(LocalRedirect(returnUrl));
                    }
                }

                case "Business":
                {
                    user = new ApplicationUser {
                        UserName = Input.BusinessId, Email = Input.BusinessEmail, SecretSalt = passSalt
                    };
                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        Business newUser = new Business
                        {
                            Id            = user.Id,
                            FullName      = Input.BusinessName,
                            ContactNo     = Input.BusinessContactNo,
                            Email         = Input.BusinessEmail,
                            LoginId       = Input.BusinessId,
                            NID           = Input.BusinessNID,
                            TIN           = Input.BusinessTIN,
                            BIN           = Input.BusinessBIN,
                            BankName      = Input.BusinessBankName,
                            BranchName    = Input.BusinessBranchName,
                            AccountNumber = Input.BusinessAccountNumber,
                            CreatedOn     = DateTime.Now,
                            ModifiedOn    = DateTime.Now,
                            EntityState   = EntityState.Added
                        };
                        businessLayer.AddMerchant(newUser);
                        await _userManager.AddToRoleAsync(user, "Business");
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    if (!ModelState.IsValid)
                    {
                        TempData["form"] = Input.UserType;
                        return(Page());
                    }
                    else
                    {
                        //await _signInManager.SignInAsync(user, isPersistent: false);
                        return(LocalRedirect(returnUrl));
                    }
                }

                case "GovtInstitute":
                {
                    user = new ApplicationUser {
                        UserName = Input.GovtId, Email = Input.GovtEmail, SecretSalt = passSalt
                    };
                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        GovernmentInstitution newGovtInstitutionInfo = new GovernmentInstitution
                        {
                            LoginId                  = Input.GovtId,
                            Name                     = Input.GovtInstitutionName,
                            BIN                      = Input.GovtBIN,
                            Email                    = Input.GovtEmail,
                            ContactNo                = Input.GovtContactNo,
                            Address                  = Input.Address,
                            BankName                 = Input.GovtBankName,
                            BranchName               = Input.GovtBranchName,
                            AccountNumber            = Input.GovtAccountNumber,
                            ContactPersonName        = Input.ContactPersonName,
                            ContactPersonDesignation = Input.ContactPersonDesignation,
                            ContactPersonEmail       = Input.ContactPersonEmail,
                            ContactPersonMobile      = Input.ContactPersonMobile,
                            ContactPersonNID         = Input.ContactPersonNID,
                            ContactPersonOffice      = Input.ContactPersonOffice,
                            CreatedOn                = DateTime.Now,
                            ModifiedOn               = DateTime.Now,
                            EntityState              = EntityState.Added
                        };
                        businessLayer.AddGovtInstitutionInfo(newGovtInstitutionInfo);
                        await _userManager.AddToRoleAsync(user, "GovernmentInstitute");
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    if (!ModelState.IsValid)
                    {
                        TempData["form"] = Input.UserType;
                        return(Page());
                    }
                    else
                    {
                        //await _signInManager.SignInAsync(user, isPersistent: false);
                        return(LocalRedirect(returnUrl));
                    }
                }

                case "FinInstitute":
                {
                    user = new ApplicationUser {
                        UserName = Input.FinancialId, Email = Input.FinancialEmail, SecretSalt = passSalt
                    };
                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        FinancialInstitution newFinInstitutionInfo = new FinancialInstitution
                        {
                            Id                       = user.Id,
                            LoginId                  = Input.FinancialId,
                            InstitutionName          = Input.FinancialInstitutionName,
                            TIN                      = Input.FinancialTIN,
                            BIN                      = Input.FinancialBIN,
                            Email                    = Input.FinancialEmail,
                            ContactNo                = Input.FinancialContactNo,
                            SwiftCode                = Input.FinancialSwiftCode,
                            VatId                    = Input.FinancialVatId,
                            ContactPersonName        = Input.ContactPersonName,
                            ContactPersonDesignation = Input.ContactPersonDesignation,
                            ContactPersonEmail       = Input.ContactPersonEmail,
                            ContactPersonMobile      = Input.ContactPersonMobile,
                            ContactPersonNID         = Input.ContactPersonNID,
                            ContactPersonOffice      = Input.ContactPersonOffice,
                            CreatedOn                = DateTime.Now,
                            ModifiedOn               = DateTime.Now,
                            EntityState              = EntityState.Added
                        };
                        businessLayer.AddFinInstitutionInfo(newFinInstitutionInfo);
                        await _userManager.AddToRoleAsync(user, "FinancialInstitute");
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    if (!ModelState.IsValid)
                    {
                        TempData["form"] = Input.UserType;
                        return(Page());
                    }
                    else
                    {
                        //await _signInManager.SignInAsync(user, isPersistent: false);
                        return(LocalRedirect(returnUrl));
                    }
                }
                }
            }

            // If we got this far, something failed, redisplay form
            TempData["form"] = Input.UserType;
            return(Page());
        }