using InSituLaboratory.Entities; using InSituLaboratory.IService; using InSituLaboratory.Models; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace InSituLaboratory.ViewModels.Pages.Dialogs { public class SelectUserViewModel : DialogViewModelBase { private List _users; public ObservableCollection Users { get; set; } = new ObservableCollection(); private string _fileterText; /// /// 关键字搜索用户 /// public string FilterText { get { return _fileterText; } set { _fileterText = value; Users.Clear(); var us = _users.Where(u => string.IsNullOrEmpty(value) || u.RealName.Contains(value) || u.UserName.Contains(value) ).ToList(); us.ForEach(u => Users.Add(u)); } } IUserService _userService; IRoleService _roleService; public SelectUserViewModel(IUserService userService, IRoleService roleService) { _userService = userService; _roleService = roleService; } /// /// 选择用户弹窗 /// private int _rid = 0; public override void OnDialogOpened(IDialogParameters parameters) { this.Title = "选择用户"; _rid = parameters.GetValue("rid"); var uids = parameters.GetValue>("uids"); var us = _userService.GetUsers("").ToList(); _users = us.Select(u => new UserModel { IsSelected = uids.Contains(u.UserId), UserId = u.UserId, UserName = u.UserName, RealName = u.RealName, UserIcon = "pack://siteoforigin:,,,/Avatars/" + u.UserIcon }).ToList(); _users.ForEach(u => Users.Add(u)); } /// /// 保存 /// public override void DoSave() { try { //现将当前角色中的所有用户都清掉,然后加入当前已选中的用户 var role = _roleService.Find(_rid); if (role == null) return; role.Users.Clear(); foreach (var user in _users) { if (!user.IsSelected) continue; role.Users.Add(new RoleUser { RoleId = _rid, UserId = user.UserId, SysRole = role }); } _roleService.Update(role); base.DoSave(); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } } }