/// <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)); }
/// <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)); }
/// <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)); } }