public async Task <ActionResult> Add(AddSysUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new SysUser
                {
                    UserName        = model.UserName,
                    Name            = model.Name,
                    PhoneNumber     = model.PhoneNumber,
                    Email           = model.Email,
                    CreatorUserName = HttpContext.User.Identity.Name,
                    CTIME           = DateTime.Now
                };

                List <string> errorMsgs = new List <string>();

                await HandleUserAddWithRole(model, user, errorMsgs);

                foreach (string error in errorMsgs)
                {
                    ModelState.AddModelError("", error);
                }
            }
            var allErrors = this.GetModelStateErrors(ModelState);

            return(Json(allErrors));
        }
        private async Task HandleUserAddWithRole(AddSysUserViewModel model, SysUser user, List <string> errorMsgs)
        {
            var result = await UserManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                errorMsgs.AddRange(result.Errors);
                return;
            }
            if (user.Id < 1)
            {
                user = await UserManager.FindByNameAsync(user.UserName);
            }
            if (!UserManager.IsInRole(user.Id, model.RoleName))
            {
                result = IdentityResult.Success;
                result = await UserManager.AddToRoleAsync(user.Id, model.RoleName);

                if (!result.Succeeded)
                {
                    errorMsgs.AddRange(result.Errors);
                }
            }
        }