예제 #1
0
        /// <summary>
        /// 新建或者编辑用户数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> Edit(Guid id, Guid roleId)
        {
            var user = await _UserManager.FindByIdAsync(id.ToString());

            var boVM = new ApplicationUserForEditVM(user, roleId);

            #region 处理用户归属的用户组的数据
            #region 1.待选择的用户组数据
            //var role = _RoleManager.Roles;
            var roleItems = new List <PlainFacadeItem>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var rItem = new PlainFacadeItem()
                {
                    Id          = item.Id,
                    Name        = item.Name,
                    DisplayName = item.DisplayName,
                    SortCode    = item.SortCode
                };
                roleItems.Add(rItem);
            }
            boVM.RoleItemColection = roleItems;
            #endregion
            #region 2.已经归属的用户组部分
            boVM.RoleItemIdCollection = (
                from roleItem in _RoleManager.Roles
                where roleItem.Users.Select(x => x.UserId).Contains(user.Id)
                select roleItem.Id
                ).ToList();;
            #endregion
            #endregion

            return(PartialView("../../Views/ApplicationOrganization/ApplicationUser/_EditApplicationUser", boVM));
        }
예제 #2
0
        public SystemWorkPlaceVM(SystemWorkPlace bo)
        {
            this.ID          = bo.ID;
            this.Name        = bo.Name;
            this.Description = bo.Description;
            this.SortCode    = bo.SortCode;

            if (bo.AppInfo != null)
            {
                this.ApplicationInfo = new PlainFacadeItem()
                {
                    ID          = bo.AppInfo.ID.ToString(),
                    Name        = bo.AppInfo.Name,
                    DisplayName = bo.AppInfo.Name + "(" + bo.AppInfo.AppVersion + ")",
                    SortCode    = bo.AppInfo.SortCode
                };
            }

            if (bo.SystemWorkSections != null)
            {
                this.SystemWorkSetionItems = new List <PlainFacadeItem>();
                foreach (var item in bo.SystemWorkSections)
                {
                    var pItem = new PlainFacadeItem()
                    {
                        ID          = item.ID.ToString(),
                        Name        = item.Name,
                        Description = item.Description,
                        SortCode    = item.SortCode
                    };
                    this.SystemWorkSetionItems.Add(pItem);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// 将布尔类型,转换为 PlainFacadeItem 集合,并提供缺省值设置
        /// </summary>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static List <PlainFacadeItem> GetByBool(bool defaultValue)
        {
            var t = new PlainFacadeItem()
            {
                ID = "true", Name = "是", DisplayName = "是"
            };
            var f = new PlainFacadeItem()
            {
                ID = "false", Name = "否", DisplayName = "否"
            };

            if (defaultValue)
            {
                t.OperateName = "checked";
            }
            else
            {
                f.OperateName = "checked";
            }

            var results = new List <PlainFacadeItem>()
            {
                t, f
            };

            return(results);
        }
예제 #4
0
        public async Task SetRelevanceItems(ArticleVM boVM)
        {
            // 设置关联的文章附件
            var files = await _businessFileService.GetAllAsyn(x => x.RelevanceObjectID == boVM.Id);

            boVM.FileCollection = new List <BusinessFileVM>();
            foreach (var item in files)
            {
                boVM.FileCollection.Add(new BusinessFileVM(item));
            }

            // 设置关联的栏目
            var tempCollection = await _articleInTopicRepository.GetAllIncludingAsyn(x => x.ArticleTopic, y => y.MasterArticle);

            var articleTopicCollection = from x in tempCollection
                                         where x.MasterArticle.Id == boVM.Id
                                         select x.ArticleTopic;

            boVM.TopicItemIdCollection = new List <string>();
            boVM.TopicItemCollection   = new List <ControlModels.PlainFacadeItem>();
            var topicCollection = await _articleTopicRepository.GetAllAsyn();

            foreach (var topic in topicCollection.OrderBy(x => x.SortCode))
            {
                var item = new PlainFacadeItem()
                {
                    ID = topic.Id.ToString(), Name = topic.Name, IsActive = false
                };
                if (articleTopicCollection.FirstOrDefault(x => x.Id == topic.Id) != null)
                {
                    item.IsActive = true;
                }
                boVM.TopicItemCollection.Add(item);
            }
        }
예제 #5
0
        public SK_WM_GoodsVM(SK_WM_Goods bo)
        {
            ID          = bo.ID;
            Name        = bo.Name;
            Description = bo.Description;
            SortCode    = bo.SortCode;
            ShelvesTime = bo.ShelvesTime;
            ModifyTime  = bo.ModifyTime;
            // IMG = bo.IMG;
            SalesVolume    = "0";
            Price          = bo.Price;
            FacadePrice    = bo.FacadePrice;
            Unit           = bo.Unit;
            SalesVolume    = bo.SalesVolume;
            State          = bo.State;
            Stock          = bo.Stock;
            ShopForUser    = bo.ShopForUser;
            BelongToUserID = bo.BelongToUserID;
            BelongToShopID = bo.BelongToShopID;

            if (bo.GoodsIMG != null)
            {
                AvatarPath = bo.GoodsIMG.UploadPath;
            }
            if (bo.SK_WM_GoodsCategory != null)
            {
                GoodsCategoryID = bo.SK_WM_GoodsCategory.ID.ToString();
                GoodsCategory   = new PlainFacadeItem
                {
                    ID = bo.SK_WM_GoodsCategory.ID.ToString(),
                    //ParentID = bo.Department.ParentDepartment.ID.ToString(),
                    DisplayName = bo.SK_WM_GoodsCategory.Name,
                    SortCode    = bo.SK_WM_GoodsCategory.SortCode,
                    //OperateFunction = "",
                    TargetType = "",
                    //TipsString = ""
                };
            }
            if (bo.Shop != null)
            {
                Shop = bo.Shop;
                //ShopID = bo.Shop.ID.ToString();
                //Shop = new SK_WM_Shop
                //{
                //    ID = bo.ID,
                //    Name = bo,
                //    Description = bo.Description,
                //    SortCode = bo.SortCode,
                //    Telephone = "",
                //    Adress = ""
                //};
            }
        }
        /// <summary>
        /// 提取所有的角色组,供前端使用处理
        /// </summary>
        /// <returns></returns>
        public List <PlainFacadeItem> GetApplicationRoleItemCollection()
        {
            var items = new List <PlainFacadeItem>();

            foreach (var role in _roleManager.Roles)
            {
                var item = new PlainFacadeItem()
                {
                    ID = role.Id.ToString(), Name = role.Name, IsActive = false
                };
                items.Add(item);
            }
            return(items);
        }
        public async Task SetApplicationRoleItemCollection(ApplicationUserVM boVM)
        {
            var user = await _userManager.FindByIdAsync(boVM.Id.ToString());

            var resultItems = new List <PlainFacadeItem>();

            if (user != null)
            {
                var userInRoles = await _userManager.GetRolesAsync(user);

                foreach (var role in _roleManager.Roles)
                {
                    var item = new PlainFacadeItem()
                    {
                        ID = role.Id.ToString(), Name = role.Name, IsActive = false
                    };
                    if (userInRoles.Contains(role.Name))
                    {
                        item.IsActive = true;
                    }

                    resultItems.Add(item);
                }
            }
            else
            {
                foreach (var role in _roleManager.Roles)
                {
                    var item = new PlainFacadeItem()
                    {
                        ID = role.Id.ToString(), Name = role.Name, IsActive = false
                    };
                    resultItems.Add(item);
                }
            }

            boVM.ApplicationRoleItemCollection = resultItems;
            if (boVM.ApplicationRoleItemIdCollection != null)
            {
                foreach (var item in boVM.ApplicationRoleItemCollection)
                {
                    if (boVM.ApplicationRoleItemIdCollection.Contains(item.ID))
                    {
                        item.IsActive = true;
                    }
                }
            }
        }
예제 #8
0
        /// <summary>
        /// 直接将泛型类型中指定的枚举类型转换为 PlainFacdeItem 集合
        /// </summary>
        /// <returns></returns>
        private List <PlainFacadeItem> _GetByEnum(Object enumObject)
        {
            var enumItems = Enum.GetValues(enumObject.GetType());
            var items     = new List <PlainFacadeItem>();

            foreach (var eItem in enumItems)
            {
                var item = new PlainFacadeItem()
                {
                    ID   = ((int)eItem).ToString(),
                    Name = eItem.ToString(),
                };
                items.Add(item);
            }
            return(items);
        }
예제 #9
0
        public static List <PlainFacadeItem> GetPlainFacadeItemCollectionWithEnum()
        {
            var items = new List <PlainFacadeItem>();

            foreach (var eItem in Enum.GetValues(typeof(T)))
            {
                var item = new PlainFacadeItem()
                {
                    ID          = Enum.GetName(typeof(T), eItem),
                    Name        = eItem.ToString(),
                    Description = "",
                    SortCode    = Enum.GetName(typeof(T), eItem)
                };
            }
            return(items);
        }
예제 #10
0
        public static List <PlainFacadeItem> GetPlainFacadeItemCollection <T>()
        {
            var items = new List <PlainFacadeItem>();

            foreach (string eItem in Enum.GetNames(typeof(T)))
            {
                var item = new PlainFacadeItem()
                {
                    ID          = Enum.Parse(typeof(T), eItem).ToString(),
                    Name        = eItem.ToString(),
                    Description = "",
                    SortCode    = Enum.Parse(typeof(T), eItem).ToString()
                };
                items.Add(item);
            }
            return(items);
        }
예제 #11
0
        public static List <PlainFacadeItem> GetByBool()
        {
            var t = new PlainFacadeItem()
            {
                ID = "true", Name = "是", DisplayName = "是", OperateName = ""
            };
            var f = new PlainFacadeItem()
            {
                ID = "false", Name = "否", DisplayName = "否", OperateName = ""
            };
            var results = new List <PlainFacadeItem>()
            {
                t, f
            };

            return(results);
        }
예제 #12
0
        public static List <PlainFacadeItem> GetPlainFacadeItemCollection()
        {
            var service     = new EntityRepository <T>(new EntityDbContext());
            var sourceItems = service.GetAll().OrderBy(s => s.SortCode);

            var items = new List <PlainFacadeItem>();

            foreach (var pItem in sourceItems)
            {
                var item = new PlainFacadeItem()
                {
                    ID = pItem.ID.ToString(), Name = pItem.Name, Description = pItem.Description, SortCode = pItem.SortCode
                };
                items.Add(item);
            }
            return(items);
        }
예제 #13
0
        public static List <PlainFacadeItem> GetBySex()
        {
            var t = new PlainFacadeItem()
            {
                ID = "true", Name = "男", DisplayName = "男", OperateName = "checked"
            };
            var f = new PlainFacadeItem()
            {
                ID = "false", Name = "女", DisplayName = "女", OperateName = ""
            };
            var results = new List <PlainFacadeItem>()
            {
                t, f
            };

            return(results);
        }
예제 #14
0
        /// <summary>
        /// 将已经提取的对应的泛型集合对象,直接转换为 PlainFacdeItem 集合
        /// </summary>
        /// <param name="sourceItems"></param>
        /// <returns></returns>
        public static List <PlainFacadeItem> Get(List <T> sourceItems)
        {
            var items = new List <PlainFacadeItem>();

            foreach (var pItem in sourceItems)
            {
                var item = new PlainFacadeItem()
                {
                    ID          = pItem.ID.ToString(),
                    Name        = pItem.Name,
                    DisplayName = pItem.Name,
                    Description = pItem.Description,
                    SortCode    = pItem.SortCode
                };
                items.Add(item);
            }
            return(items);
        }
예제 #15
0
        private List <PlainFacadeItem> _GetApplicationRoleItemCollection(List <ApplicationRole> applicationRoles)
        {
            var items = new List <PlainFacadeItem>();

            foreach (var pItem in applicationRoles)
            {
                var item = new PlainFacadeItem()
                {
                    ID          = pItem.Id.ToString(),
                    Name        = pItem.Name,
                    DisplayName = pItem.Name,
                    Description = pItem.Description,
                    SortCode    = pItem.SortCode
                };
                items.Add(item);
            }
            return(items);
        }
예제 #16
0
        public ActionResult SinglePerson(string keyword, string deptID, string selectedPersonID, string selectedPersonIDItem, string selectedPersonDisplayDiv)
        {
            var boCollection   = _PersonService.GetAll();
            var boVMCollection = new List <PlainFacadeItem>();

            foreach (var item in boCollection)
            {
                var boVM = new PlainFacadeItem()
                {
                    ID = item.ID.ToString(), Name = item.Name, SortCode = item.SortCode
                };
                if (item.Department != null)
                {
                    boVM.Description = item.Department.Name;
                }

                boVMCollection.Add(boVM);
            }

            var tempName = "";

            if (!String.IsNullOrEmpty(selectedPersonID))
            {
                tempName = _PersonService.GetSingle(Guid.Parse(selectedPersonID)).Name;
            }

            ViewBag.SelectedPersonIDItem     = selectedPersonIDItem;
            ViewBag.SelectedPersonDisplayDiv = selectedPersonDisplayDiv;

            ViewBag.SelectedPersonID   = selectedPersonID;
            ViewBag.SelectedPersonName = tempName;

            ViewBag.PersonKeyword = keyword;

            ViewBag.Departments = BusinessCollectionFactory <Department> .GetSelfReferentialItemCollection(true);

            ViewBag.SelectedDepartmentID = deptID;

            return(PartialView("../../Views/Common/Person/_SinglePersonSelector", boVMCollection));
        }
예제 #17
0
        /// <summary>
        /// 新建用户数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> Create()
        {
            bool isNew = true;
            var  user  = new ApplicationUser();
            var  boVM  = new ApplicationUserVM(user)
            {
                IsNew = isNew
            };

            #region 处理用户归属的用户组的数据
            #region 1.待选择的用户组数据
            var role      = _RoleManager.Roles;
            var roleItems = new List <PlainFacadeItem>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var rItem = new PlainFacadeItem()
                {
                    Id = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                };
                roleItems.Add(rItem);
            }
            boVM.RoleItemColection = roleItems;
            #endregion
            #region 2.已经归属的用户组部分
            boVM.RoleItemIdCollection = new List <string>();

            //foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            //{
            //    var h = await _UserManager.IsInRoleAsync(user, item.Name);
            //    if (h)
            //    {
            //        boVM.RoleItemIdCollection.Add(item.Id);
            //    }
            //}
            #endregion
            ViewBag.RoleId = null;
            #endregion

            return(PartialView("../../Views/ApplicationOrganization/ApplicationUser/_CreateApplicationUser", boVM));
        }
예제 #18
0
 public SystemWorkPlaceVM(SystemWorkPlace bo)
 {
     Id          = bo.Id;
     Name        = bo.Name;
     Description = bo.Description;
     SortCode    = bo.SortCode;
     IconString  = bo.IconString;
     URL         = bo.URL;
     if (bo.SystemWorkSections != null)
     {
         SystemWorkSetionItems = new List <PlainFacadeItem>();
         foreach (var item in bo.SystemWorkSections)
         {
             var pItem = new PlainFacadeItem
             {
                 Id          = item.Id.ToString(),
                 Name        = item.Name,
                 Description = item.Description,
                 SortCode    = item.SortCode
             };
             SystemWorkSetionItems.Add(pItem);
         }
     }
 }
예제 #19
0
        /// <summary>
        /// 新建或者编辑用户数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> EditApplicationUser(Guid id, Guid roleID)
        {
            var user = await _UserManager.FindByIdAsync(id.ToString());

            var boVM = new ApplicationUserForEditVM(user, roleID);

            #region 处理用户归属的用户组的数据
            #region 1.待选择的用户组数据
            var role      = _RoleManager.Roles;
            var roleItems = new List <PlainFacadeItem>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var rItem = new PlainFacadeItem()
                {
                    ID = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                };
                roleItems.Add(rItem);
            }
            boVM.RoleItemColection = roleItems;
            #endregion
            #region 2.已经归属的用户组部分
            boVM.RoleItemIDCollection = new List <string>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var h = await _UserManager.IsInRoleAsync(user, item.Name);

                if (h)
                {
                    boVM.RoleItemIDCollection.Add(item.Id);
                }
            }
            #endregion
            #endregion

            return(PartialView("../../Views/ApplicationOrganization/ApplicationRoleAndUser/_CreateOrEditForUser", boVM));
        }
예제 #20
0
        /// <summary>
        /// 保存新建用户数据处理部分
        /// </summary>
        /// <param name="boVM">用户视图模型的实例</param>
        /// <returns></returns>
        public async Task <IActionResult> SaveCreateApplicationUser([Bind("ID,IsNew,RoleItemIDCollection,UserName,Name,MobileNumber,EMail,Password,ConfirmPassword,Description")] ApplicationUserVM boVM)
        {
            var validateMessage = new ValidateMessage();

            if (ModelState.IsValid)
            {
                // 检查重名
                var isNewUser = await _UserManager.FindByNameAsync(boVM.UserName);

                if (_HasTheSameUser(boVM.UserName))
                {
                    validateMessage.IsOK = false;
                    validateMessage.ValidateMessageItems.Add(
                        new ValidateMessageItem()
                    {
                        IsPropertyName = false, MessageName = "RemoteErr", Message = "用户选择的用户名已经被使用了"
                    });
                    return(Json(validateMessage));
                }

                #region 新增用户的常规处理
                var user = new ApplicationUser(boVM.UserName)
                {
                    FirstName       = "",
                    ChineseFullName = boVM.Name,
                    Email           = boVM.EMail,
                    MobileNumber    = boVM.MobileNumber
                };
                await _UserManager.CreateAsync(user);

                await _UserManager.AddPasswordAsync(user, boVM.Password);  // 添加密码

                var roleItem = await _RoleManager.FindByNameAsync("Adimn");

                foreach (var item in boVM.RoleItemIDCollection)             // 遍历所选择的用户组的ID集合,加入到相关的角色组
                {
                    var role = await _RoleManager.FindByIdAsync(item);

                    if (role != null)
                    {
                        await _UserManager.AddToRoleAsync(user, role.Name);
                    }
                }
                #endregion

                validateMessage.IsOK = true;
                validateMessage.ValidateMessageItems.Add(
                    new ValidateMessageItem
                {
                    IsPropertyName = false,
                    MessageName    = "Succeed",
                    Message        = ""
                });

                return(Json(validateMessage));
            }
            else
            {
                #region 1.待选择的用户组数据
                var user = await _UserManager.FindByIdAsync(boVM.ID.ToString());

                var role      = _RoleManager.Roles;
                var roleItems = new List <PlainFacadeItem>();
                foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
                {
                    var rItem = new PlainFacadeItem()
                    {
                        ID = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                    };
                    roleItems.Add(rItem);
                }
                boVM.RoleItemColection = roleItems;
                #endregion

                validateMessage.IsOK = false;
                var errCollection = from errKey in ModelState.Keys
                                    from errMessage in ModelState[errKey].Errors
                                    where ModelState[errKey].Errors.Count > 0
                                    select(new { errKey, errMessage.ErrorMessage });

                foreach (var errItem in errCollection)
                {
                    var vmItem = new ValidateMessageItem()
                    {
                        IsPropertyName = true,
                        MessageName    = errItem.errKey,
                        Message        = errItem.ErrorMessage
                    };
                    validateMessage.ValidateMessageItems.Add(vmItem);
                }
                return(Json(validateMessage));
            }
        }
        /// <summary>
        /// 设置与传入的视图模型相关的关联元素的集合值
        /// </summary>
        /// <param name="boVM"></param>
        /// <param name="courseID"></param>
        /// <returns></returns>
        public async Task SetTypeItems(ApplicationUserVM boVM)
        {
            var user = await _userManager.FindByIdAsync(boVM.Id.ToString());

            #region 设置头像相关的数据
            Func <Guid, string> avatarPath = (itemId) =>
            {
                var path    = "";
                var imageBo = _businessImageRepository.GetSingleBy(x => x.RelevanceObjectID == itemId);
                if (imageBo != null)
                {
                    path = imageBo.UploadPath;
                }
                return(path);
            };
            if (user != null)
            {
                boVM.AvatarPath = avatarPath(user.Id);
            }
            else
            {
                boVM.AvatarPath = "";
            }
            #endregion

            #region 设置系统角色相关额数据
            boVM.ApplicationRoleItemIdCollection = new List <string>();
            boVM.ApplicationRoleItemCollection   = new List <PlainFacadeItem>();
            if (user != null)
            {
                var userInRoles = await _userManager.GetRolesAsync(user);

                foreach (var role in _roleManager.Roles)
                {
                    var item = new PlainFacadeItem()
                    {
                        ID = role.Id.ToString(), Name = role.Name, IsActive = false
                    };
                    if (userInRoles.Contains(role.Name))
                    {
                        item.IsActive = true;
                        boVM.ApplicationRoleItemIdCollection.Add(role.Id.ToString());
                    }

                    boVM.ApplicationRoleItemCollection.Add(item);
                }
            }
            else
            {
                foreach (var role in _roleManager.Roles)
                {
                    var item = new PlainFacadeItem()
                    {
                        ID = role.Id.ToString(), Name = role.Name, IsActive = false
                    };
                    boVM.ApplicationRoleItemCollection.Add(item);
                }
            }
            #endregion

            #region 设置人员相关的数据
            var employeeVM = await GetEmployeeVMByUserId(boVM.Id);

            if (employeeVM != null)
            {
                boVM.PersonId               = employeeVM.Id;
                boVM.PersonName             = employeeVM.Name;
                boVM.PersonCredentialsCode  = employeeVM.CredentialsCode;
                boVM.PersonAddress          = employeeVM.Address;
                boVM.PersonOrganizationName = employeeVM.ParentDepartmentName;
            }
            var studentVM = await GetStudentVMByUserId(boVM.Id);

            if (studentVM != null)
            {
                boVM.PersonId               = studentVM.Id;
                boVM.PersonName             = studentVM.Name;
                boVM.PersonCredentialsCode  = studentVM.CredentialsCode;
                boVM.PersonAddress          = studentVM.Address;
                boVM.PersonOrganizationName = studentVM.GradeAndClassName;
            }
            #endregion
        }
예제 #22
0
        /// <summary>
        /// 保存用户资料
        /// </summary>
        /// <param name="boVM">用户的视图模型</param>
        /// <returns></returns>
        public async Task <IActionResult> SaveEditApplicationUser([Bind("Id,RoleId,IsNew,RoleItemIdCollection,UserName,Name,MobileNumber,EMail,Password,ConfirmPassword,Description")] ApplicationUserForEditVM boVM)
        {
            var validateMessage = new ValidateMessage();

            if (ModelState.IsValid)
            {
                if (boVM.RoleItemIdCollection == null)
                {
                    boVM.RoleItemIdCollection = new List <string>();
                }
                var user = await _UserManager.FindByIdAsync(boVM.Id.ToString());

                #region 1.用户基本资料更新
                user.FirstName       = "";
                user.ChineseFullName = boVM.Name;
                user.Email           = boVM.EMail;
                user.MobileNumber    = boVM.MobileNumber;
                await _UserManager.UpdateAsync(user);

                #endregion

                #region 2.归属角色组的处理
                var roleCollection = _RoleManager.Roles;
                var addRoles       = new List <string>();
                var removeRoles    = new List <string>();
                foreach (var roleItem in roleCollection)
                {
                    // 当前的用户是否归属角色组:roleItem
                    var h = await _UserManager.IsInRoleAsync(user, roleItem.Name);

                    if (!h)
                    {
                        // 不归属,但前端已经选择了相应的角色组,则将当前用户加入相应的角色组。
                        if (boVM.RoleItemIdCollection.Contains(roleItem.Id))
                        {
                            addRoles.Add(roleItem.Name);
                        }
                    }
                    else
                    {
                        // 归属,但前端并未选择相应的角色组,则将当前用户从相关的组中移除。
                        if (!boVM.RoleItemIdCollection.Contains(roleItem.Id))
                        {
                            removeRoles.Add(roleItem.Name);
                        }
                    }
                }
                await _UserManager.AddToRolesAsync(user, addRoles);

                await _UserManager.RemoveFromRolesAsync(user, removeRoles);

                #endregion
                var resultRoleId = "";
                if (boVM.RoleId.ToString() != "00000000-0000-0000-0000-000000000000")
                {
                    resultRoleId = boVM.RoleId.ToString();
                }
                validateMessage.IsOK = true;
                validateMessage.ValidateMessageItems.Add(
                    new ValidateMessageItem
                {
                    IsPropertyName = false,
                    MessageName    = "",
                    Message        = resultRoleId
                });

                return(Json(validateMessage));
            }
            else
            {
                #region 处理用户归属的用户组的数据
                #region 1.待选择的用户组数据
                var user = await _UserManager.FindByIdAsync(boVM.Id.ToString());

                var role      = _RoleManager.Roles;
                var roleItems = new List <PlainFacadeItem>();
                foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
                {
                    var rItem = new PlainFacadeItem()
                    {
                        Id = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                    };
                    roleItems.Add(rItem);
                }
                boVM.RoleItemColection = roleItems;
                #endregion
                #region 2.已经归属的用户组部分
                boVM.RoleItemIdCollection = (
                    from roleItem in _RoleManager.Roles
                    where roleItem.Users.Select(x => x.UserId).Contains(user.Id)
                    select roleItem.Id
                    ).ToList();;

                #endregion
                #endregion

                validateMessage.IsOK = false;
                var errCollection = from errKey in ModelState.Keys
                                    from errMessage in ModelState[errKey].Errors
                                    where ModelState[errKey].Errors.Count > 0
                                    select(new { errKey, errMessage.ErrorMessage });
                foreach (var errItem in errCollection)
                {
                    var vmItem = new ValidateMessageItem()
                    {
                        IsPropertyName = true,
                        MessageName    = errItem.errKey,
                        Message        = errItem.ErrorMessage
                    };
                    validateMessage.ValidateMessageItems.Add(vmItem);
                }
                return(Json(validateMessage));
            }
        }
예제 #23
0
        /// <summary>
        /// 保存新建用户数据处理部分
        /// </summary>
        /// <param name="boVM">用户视图模型的实例</param>
        /// <returns></returns>
        public async Task <IActionResult> SaveCreateApplicationUser([Bind("Id,IsNew,RoleItemIdCollection,UserName,Name,MobileNumber,EMail,Password,ConfirmPassword,Description")] ApplicationUserVM boVM)
        {
            var validateMessage = new ValidateMessage();

            if (ModelState.IsValid)
            {
                // 检查重名
                var isNewUser = await _UserManager.FindByNameAsync(boVM.UserName);

                if (_HasTheSameUser(boVM.UserName))
                {
                    validateMessage.IsOK = false;
                    validateMessage.ValidateMessageItems.Add(
                        new ValidateMessageItem()
                    {
                        IsPropertyName = true, MessageName = "UserName", Message = "用户选择的用户名已经被使用了。"
                    });
                    return(Json(validateMessage));
                }

                #region 新增用户的常规处理
                var user = new ApplicationUser(boVM.UserName)
                {
                    FirstName       = "",
                    ChineseFullName = boVM.Name,
                    Email           = boVM.EMail,
                    MobileNumber    = boVM.MobileNumber
                };

                // 校验密码强度
                var passwordValidator = new Microsoft.AspNetCore.Identity.PasswordValidator <ApplicationUser>();
                var result            = await passwordValidator.ValidateAsync(_UserManager, user, boVM.Password);

                if (!result.Succeeded)
                {
                    validateMessage.IsOK = false;
                    validateMessage.ValidateMessageItems.Add(
                        new ValidateMessageItem()
                    {
                        IsPropertyName = true, MessageName = "Password", Message = "您输入的密码强度未满足要求:密码长度大于6个字符,且必须包含数字、大写字母、小写字母和非字母字符如 @ 。"
                    });
                    return(Json(validateMessage));
                }

                await _UserManager.CreateAsync(user);

                await _UserManager.AddPasswordAsync(user, boVM.Password);  // 添加密码

                if (boVM.RoleItemIdCollection != null)
                {
                    foreach (var item in boVM.RoleItemIdCollection)             // 遍历所选择的用户组的Id集合,加入到相关的角色组
                    {
                        var role = await _RoleManager.FindByIdAsync(item);

                        if (role != null)
                        {
                            await _UserManager.AddToRoleAsync(user, role.Name);  // 将用户添加到相应的用户组内
                        }
                    }
                }
                #endregion

                validateMessage.IsOK = true;
                validateMessage.ValidateMessageItems.Add(
                    new ValidateMessageItem
                {
                    IsPropertyName = false,
                    MessageName    = "Succeed",
                    Message        = ""
                });

                return(Json(validateMessage));   // 返回处理结果
            }
            else
            {
                #region 1.待选择的用户组数据
                var user = await _UserManager.FindByIdAsync(boVM.Id.ToString());

                var role      = _RoleManager.Roles;
                var roleItems = new List <PlainFacadeItem>();
                foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
                {
                    var rItem = new PlainFacadeItem()
                    {
                        Id = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                    };
                    roleItems.Add(rItem);
                }
                boVM.RoleItemColection = roleItems;
                #endregion

                validateMessage.IsOK = false;
                var errCollection = from errKey in ModelState.Keys
                                    from errMessage in ModelState[errKey].Errors
                                    where ModelState[errKey].Errors.Count > 0
                                    select(new { errKey, errMessage.ErrorMessage });

                foreach (var errItem in errCollection)
                {
                    var vmItem = new ValidateMessageItem()
                    {
                        IsPropertyName = true,
                        MessageName    = errItem.errKey,
                        Message        = errItem.ErrorMessage
                    };
                    validateMessage.ValidateMessageItems.Add(vmItem);
                }
                return(Json(validateMessage));
            }
        }