public ActionResult AddUser()
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("index", "Home"));
            }
            var model = new UserManagementAddFilter();

            return(View(model));
        }
        public JsonResult AddLegalUser(UserManagementAddFilter model)
        {
            try
            {
                model.PartyType = PartyType.Institutional;
                UserManagementProvider.AddUser(model);

                return(Json(new ApiResponse <object>
                {
                    Message = RuleExceptionCodeCommon.ValidResult.GetEnumDescription(),
                    BRuleCode = (int)RuleExceptionCodeCommon.ValidResult
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ApiResponse <object>
                {
                    Message = BusinessRuleHelper.GetException(ex),
                    BRuleCode = BusinessRuleHelper.GetExceptionCode(ex)
                }));
            }
        }
Beispiel #3
0
        public void AddUser(UserManagementAddFilter model)
        {
            var addedUser = new IdentityModels.ApplicationUser();

            try
            {
                BRule.Assert(model != null, RuleExceptionCodeCommon.FilterIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeCommon.FilterIsNull);

                BRule.Assert(model.UserName != null,
                             RuleExceptionCodeUserManagement.InvalidUserName.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidUserName);

                BRule.Assert(model.DisplayName != null,
                             RuleExceptionCodeUserManagement.DisplayNameIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.DisplayNameIsNull);

                var user =
                    AuthenticationManager.AuthenticationProvider.UserManager.FindByName(model.UserName);

                BRule.Assert(user == null,
                             RuleExceptionCodeUserManagement.UserNameExists.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.UserNameExists);

                var ifExistEmail = AuthenticationManager.AuthenticationProvider.UserManager.FindByEmail(model.Email);

                BRule.Assert(ifExistEmail == null,
                             RuleExceptionCodeUserManagement.EmailExits.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.EmailExits);


                AuthenticationManager.AuthenticationProvider.UserManager.PasswordValidator = new PasswordValidator
                {
                    RequireDigit            = false,
                    RequireLowercase        = false,
                    RequireNonLetterOrDigit = false,
                    RequireUppercase        = false,
                    RequiredLength          = 5
                };
                BRule.Assert(model.Password.Equals(model.ConfirmPassword),
                             RuleExceptionCodeUserManagement.ConfirmPasswordDontMatch.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.ConfirmPasswordDontMatch);
                BRule.Assert(
                    AuthenticationManager.AuthenticationProvider.UserManager.PasswordValidator.ValidateAsync(
                        model.Password).Result.Succeeded,
                    RuleExceptionCodeUserManagement.PasswordisInvalid.GetEnumDescription(),
                    (int)RuleExceptionCodeUserManagement.PasswordisInvalid);

                Mapper.CreateMap <UserManagementAddFilter, IdentityModels.ApplicationUser>()
                .ForMember(dest => dest.CreateDate,
                           opt => opt.MapFrom(src => DateTime.Now))
                .ForMember(dest => dest.Id, opt => opt.Ignore())
                .ForMember(dest => dest.PasswordHash,
                           opt =>
                           opt.Ignore())
                .ForMember(x => x.EmailConfirmed, y => y.UseValue(true))
                .ForMember(x => x.PhoneNumberConfirmed, y => y.UseValue(true))
                .ForMember(x => x.Status, y => y.UseValue(1))
                .ForMember(x => x.LockoutEnabled, y => y.UseValue(false));
                var result = Mapper.Map <UserManagementAddFilter, IdentityModels.ApplicationUser>(model);

                result.LockoutEnabled = false;

                AuthenticationManager.AuthenticationProvider.UserManager.Create(result, model.Password);
                addedUser =
                    AuthenticationManager.AuthenticationProvider.UserManager.FindByName(model.UserName);
                var dbFactory = CoreContainer.Container.Resolve <IDbFactory>();
                using (var uow = dbFactory.Create <IUnitOfWork, ISession>(IsolationLevel.Serializable))
                {
                    try
                    {
                        switch (model.PartyType)
                        {
                        case PartyType.Retail:
                        {
                            PartyProvider.Save(new RetailParty()
                                {
                                    Created    = DateTime.Now,
                                    Modified   = DateTime.Now,
                                    CreatedBy  = model.AuthenticatedUserName,
                                    ModifiedBy = model.AuthenticatedUserName,
                                    FullName   = model.DisplayName,
                                    UserName   = addedUser.UserName,
                                    UserId     = addedUser.Id,
                                }, uow);
                            break;
                        }

                        case PartyType.Institutional:
                        {
                            LegalPartyProvider.Save(new LegalParty()
                                {
                                    Created     = DateTime.Now,
                                    Modified    = DateTime.Now,
                                    CreatedBy   = model.AuthenticatedUserName,
                                    ModifiedBy  = model.AuthenticatedUserName,
                                    UserName    = addedUser.UserName,
                                    UserId      = addedUser.Id,
                                    CompanyName = model.DisplayName
                                }, uow);

                            break;
                        }

                        default:
                            break;
                        }
                    }
                    catch (Exception)
                    {
                        uow.Rollback();
                    }
                }
            }
            catch (Exception ex)
            {
                AuthenticationManager.AuthenticationProvider.UserManager.Delete(addedUser);

                Logger.ErrorException(ex.Message, ex);
                throw ex;
            }
        }