/// <summary> /// 被移出讨论组时调用 /// </summary> /// <param name="groupId"></param> public void DropOutGroup(string groupId) { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { GroupInfoViewModel vm = GroupInfoList.FirstOrDefault(c => c.GroupInfo.groupId == groupId); if (vm == null) { return; } GroupIds.Remove(vm.GroupInfo.groupId); //GroupInfoList.Remove(vm); GroupInfoList.Remove(vm); GroupInfos.Remove(vm.GroupInfo); if (ManageGroupInfoList.Contains(vm)) { ManageGroupInfoList.Remove(vm); } if (JoinGroupInfoList.Contains(vm)) { JoinGroupInfoList.Remove(vm); } ManageGroupCount = ManageGroupInfoList.Count; JoinGroupCount = JoinGroupInfoList.Count; if (ManageGroupCount == 0) { IsManageGroup = false; } if (JoinGroupCount == 0) { IsJoinGroup = false; } List <string> topics = new List <string>(); topics.Add(vm.GroupInfo.groupId); }); }
private void ActivityDetailsView_Loaded(object sender, RoutedEventArgs e) { txtBlock.Visibility = Visibility.Visible; var bitmapSource = HeadImage.ImageSource as BitmapSource; if (bitmapSource == null) { txtBlock.Visibility = Visibility.Collapsed; return; } if (bitmapSource.IsDownloading) { bitmapSource.DownloadCompleted += (obj, args) => { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { txtBlock.Visibility = Visibility.Collapsed; }); }; } else { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { txtBlock.Visibility = Visibility.Collapsed; }); } }
public GroupMemberListViewModel(List <AntSdkGroupMember> GroupMembers, AntSdkGroupInfo groupInfo) { this.GroupInfo = groupInfo; _groupMembers = GroupMembers; AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { AntSdkGroupMember groupOwner = GroupMembers.FirstOrDefault(c => c.roleLevel == (int)GlobalVariable.GroupRoleLevel.GroupOwner); GroupOwnerId = groupOwner == null ? "" : groupOwner.userId; LogHelper.WriteFatal(groupInfo.groupId + "-------" + groupInfo.groupName + "群组的群主: " + groupOwner?.userNum + groupOwner?.userName); groupAdminUser = GroupMembers.FirstOrDefault(c => c.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin && c.userId == AntSdkService.AntSdkLoginOutput.userId); adminCount = GroupMembers.Count(m => m.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin); var orderByDesGroupMembers = GroupMembers.OrderByDescending(m => m.roleLevel).ToList(); foreach (AntSdkGroupMember user in orderByDesGroupMembers) { GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(user, GroupOwnerId, GroupInfo.groupId, this, SearchGroupName, adminCount); if (user.roleLevel == (int)GlobalVariable.GroupRoleLevel.GroupOwner) { GroupMemberControlList.Insert(0, groupMemberViewModel); } else if (user.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin) { GroupMemberControlList.Insert(GroupMemberControlList.Count > 0 ? 1 : 0, groupMemberViewModel); } else { var userinfo = AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(c => c.userId == user.userId); groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null || GroupOwnerId == AntSdkService.AntSdkLoginOutput.userId ? Visibility.Visible : Visibility.Collapsed; if (userinfo != null && userinfo.state != (int)GlobalVariable.OnLineStatus.OffLine) { var index = GroupMemberControlList.Count( m => !m.IsGroupAdminImage && !m.IsOfflineState && m.AdminImageVisibility != Visibility.Visible); GroupMemberControlList.Insert(index + adminCount + 1, groupMemberViewModel); } else { GroupMemberControlList.Add(groupMemberViewModel); } } } }); SearchGroupNameCommand = new DelegateCommand(GroupNameSearch); GoMemberSessionCommand = new DelegateCommand(goMemberSession); GroupMemberViewModel.KickoutGroupEvent += KickOutGroup; GroupMemberViewModel.ChangeManagerCompletedEvent += GroupMemberViewModel_ChangeManagerCompletedEvent; MemberCountPrompt = string.Format("群成员({0}人)", GroupMembers.Count); }
public void UpdateGroupMembers(List <AntSdkGroupMember> GroupMembers) { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { GroupMemberControlList.Clear(); AntSdkGroupMember admin = GroupMembers.FirstOrDefault(c => c.roleLevel == (int)GlobalVariable.GroupRoleLevel.GroupOwner); _groupMembers = GroupMembers; groupAdminUser = GroupMembers.FirstOrDefault( c => c.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin && c.userId == AntSdkService.AntSdkLoginOutput.userId); GroupOwnerId = (admin == null ? "" : admin.userId); LogHelper.WriteFatal(this.GroupInfo.groupId + "-------" + this.GroupInfo.groupName + "群组的群主: " + admin?.userNum + admin?.userName); adminCount = GroupMembers.Count(m => m.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin); var orderByDesGroupMembers = GroupMembers.OrderByDescending(m => m.roleLevel).ToList(); foreach (AntSdkGroupMember user in orderByDesGroupMembers) { GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(user, GroupOwnerId, GroupInfo.groupId, this, SearchGroupName, adminCount); //groupMemberViewModel.AdminCount = adminCount; if (user.userId == GroupOwnerId) { GroupMemberControlList.Insert(0, groupMemberViewModel); } else if (user.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin) { GroupMemberControlList.Insert(GroupMemberControlList.Count > 0 ? 1 : 0, groupMemberViewModel); } else { var userinfo = AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(c => c.userId == user.userId); groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null || GroupOwnerId == AntSdkService.AntSdkLoginOutput.userId ? Visibility.Visible : Visibility.Collapsed; if (userinfo != null && userinfo.state != (int)GlobalVariable.OnLineStatus.OffLine) { var index = GroupMemberControlList.Count( m => !m.IsGroupAdminImage && !m.IsOfflineState && m.AdminImageVisibility != Visibility.Visible); GroupMemberControlList.Insert(index + adminCount + 1, groupMemberViewModel); } else { GroupMemberControlList.Add(groupMemberViewModel); } } } MemberCountPrompt = string.Format("群成员({0}人)", GroupMembers.Count); }); }
/// <summary> /// 搜索群组成员 /// </summary> public void GroupNameSearch() { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { if (string.IsNullOrWhiteSpace(SearchGroupName)) { IsShowSearchList = false; SearchGroupMemberControlList.Clear(); return; } if (SearchGroupMemberControlList == null) { SearchGroupMemberControlList = new ObservableCollection <GroupMemberViewModel>(); } SearchGroupMemberControlList.Clear(); if (_groupMembers != null && _groupMembers.Any()) { //var groupMemberList = _groupMembers.Where(m => IsconditionsSatisfy(m.userName, m.userNum)); //if (groupMemberList != null && groupMemberList.Any()) //{ // var groupMemberOrderByList = groupMemberList.OrderBy(m => m.userName); // foreach (var user in groupMemberOrderByList) // { // GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(user, GroupAdminId, GroupInfo.groupId, this, SearchGroupName); // groupMemberViewModel.AdminImageVisibility = Visibility.Collapsed; // SearchGroupMemberControlList.Add(groupMemberViewModel); // } //} foreach (var member in _groupMembers) { string pinYin = string.Empty; var contactUser = AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(m => m.userId == member.userId); if (contactUser != null && contactUser.status == 0) { continue; } if (IsconditionsSatisfy(member.userName, member.userNum, ref pinYin)) { GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(member, GroupOwnerId, GroupInfo.groupId, this, SearchGroupName, pinYin); groupMemberViewModel.AdminImageVisibility = Visibility.Collapsed; SearchGroupMemberControlList.Add(groupMemberViewModel); } } } if (!SearchGroupMemberControlList.Any()) { IsExistData = false; } else { GroupMeberSelected = SearchGroupMemberControlList[0]; IsExistData = true; } IsShowSearchList = true; }); }
/// <summary> /// 离线时增加的群组(场景:服务断开重连) /// </summary> /// <param name="groupInfos"></param> public void AddGroups(List <AntSdkGroupInfo> groupInfos) { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { for (int i = 0; i < groupInfos.Count; i++) { var groupInfo = groupInfos[i]; AddGroupInfoModel(groupInfo); } }); }
//加载界面集合数据 public void LoadGroupListData() { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { if (GroupInfoList != null && GroupInfoList.Count > 0) { //var groupInfoLst = GroupInfoList.Where(m => m.GroupClassify == 0); //if (groupInfoLst != null) //{ // var tempGroupLst = groupInfoLst.ToList(); // for (int i = 0; i < tempGroupLst.Count; i++) // { // var groupInfo = tempGroupLst[i]; // groupInfo.GetMembers(); // tempGroupLst[i] = groupInfo; // } //} //我管理的 var tempGroupInfoLst = GroupInfoList.Where(m => m.GroupClassify == 1); var groupInfoViewModels = tempGroupInfoLst as IList <GroupInfoViewModel> ?? tempGroupInfoLst.ToList(); if (ManageGroupInfoList.Count == 0 || ManageGroupInfoList.Count != groupInfoViewModels.Count()) { foreach (var groupInfo in groupInfoViewModels) { if (!ManageGroupInfoList.Contains(groupInfo) && !JoinGroupInfoList.Contains(groupInfo)) { ManageGroupInfoList.Add(groupInfo); } } } //我加入的 var tempJoinGroupInfoLst = GroupInfoList.Where(m => m.GroupClassify == 2); var joinGroupInfoLst = tempJoinGroupInfoLst as IList <GroupInfoViewModel> ?? tempJoinGroupInfoLst.ToList(); if (JoinGroupInfoList.Count == 0 || JoinGroupInfoList.Count != joinGroupInfoLst.Count()) { foreach (var groupInfo in joinGroupInfoLst) { if (!JoinGroupInfoList.Contains(groupInfo) && !ManageGroupInfoList.Contains(groupInfo)) { JoinGroupInfoList.Add(groupInfo); } } } ManageGroupCount = ManageGroupInfoList.Count; JoinGroupCount = JoinGroupInfoList.Count; IsManageGroup = ManageGroupCount != 0; IsJoinGroup = JoinGroupCount != 0; } }, DispatcherPriority.Background); }
/// <summary> /// 群组展示 /// </summary> public void ResetGroupList() { if (GroupInfos == null) { return; } //List<string> topics = new List<string>(); List <QueryMsgInput_Group> queryMsgInput_Groups = new List <QueryMsgInput_Group>(); AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { //System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); foreach (AntSdkGroupInfo info in GroupInfos) { //stopWatch.Start(); //int unreadCount = 0; ////删除取消消息免打扰功能的记录 //if (noRemindGroupList != null // && noRemindGroupList.Count > 0) //{ // T_NoRemindGroup noRemindGroup = noRemindGroupList.FirstOrDefault(c => c.GroupId == info.groupId); // if (noRemindGroup != null) // { // if (info.state == (int)GlobalVariable.MsgRemind.Remind) // { // ThreadPool.QueueUserWorkItem(m => T_NoRemindGroupBll.Delete(noRemindGroup)); // } // else // { // unreadCount = noRemindGroup.UnreadCount; // //T_NoRemindGroupBll.GetModelByKey(info.groupId); // } // } //} GroupIds.Add(info.groupId); GroupInfoViewModel groupInfoVM = new GroupInfoViewModel(info); _GroupInfoList.Add(groupInfoVM); //topics.Add(info.groupId); QueryMsgInput_Group queryMsgInput_Group = new QueryMsgInput_Group(); //queryMsgInput_Group.companyCode = GlobalVariable.CompanyCode; queryMsgInput_Group.sessionId = info.groupId; //queryMsgInput_Group.sendUserId = AntSdkService.AntSdkLoginOutput.userId; queryMsgInput_Group.chatIndex = string.Empty; //chatIndex为空,服务端返回100条消息 queryMsgInput_Groups.Add(queryMsgInput_Group); //stopWatch.Stop(); //LogHelper.WriteDebug(string.Format("[LoadAction_GroupInfoViewModel({0}毫秒)]", stopWatch.Elapsed.TotalMilliseconds)); } }, DispatcherPriority.Background); }
public void AddNewMember(List <AntSdkContact_User> newGroupMemberList) { AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () => { foreach (AntSdkContact_User user in newGroupMemberList) { AntSdkGroupMember member = new AntSdkGroupMember(); member.picture = user.picture; member.position = user.position; member.roleLevel = (int)GlobalVariable.GroupRoleLevel.Ordinary; member.userId = user.userId; member.userName = user.userName; GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(member, GroupOwnerId, GroupInfo.groupId, this, SearchGroupName, adminCount); //groupMemberViewModel.AdminCount = adminCount; var userinfo = AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(c => c.userId == user.userId); groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null || GroupOwnerId == AntSdkService.AntSdkLoginOutput.userId ? Visibility.Visible : Visibility.Collapsed; if (userinfo != null && userinfo.state != (int)GlobalVariable.OnLineStatus.OffLine) { var index = GroupMemberControlList.Count( m => !m.IsGroupAdminImage && !m.IsOfflineState && m.AdminImageVisibility != Visibility.Visible); GroupMemberControlList.Insert(index + adminCount + 1, groupMemberViewModel); } else { GroupMemberControlList.Add(groupMemberViewModel); } //groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null ? Visibility.Visible : Visibility.Collapsed; //GroupMemberControlList.Add(groupMemberViewModel); } MemberCountPrompt = string.Format("群成员({0}人)", GroupMemberControlList.Count); }); }
//public void DepartmentUpdateMember(string oldDepartmentId) //{ //} /// <summary> /// 联系人的职位被变更 /// </summary> /// <param name="departmentId"></param> public void DepartmentMemberUpdate(string departmentId) { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { if (dicExpanderNode == null || dicExpanderNode.Count <= 0) { return; } if (dicExpanderNode.Keys.Count == 0) { return; } var departemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && m.Tag.ToString() == departmentId); if (departemntExpander == null) { return; } var departemntStackPanel = departemntExpander.Content as StackPanel; var node = dicExpanderNode[departemntExpander]; if (node.IsLoaded) { RecursionLoadSource(departemntStackPanel, departmentId, node.Level); } var departInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(m => m.departmentId == departmentId); var count = GetContactsCount(departmentId); if (departInfo != null) { departemntExpander.Header = departInfo.departName + "(" + count + ")"; if (string.IsNullOrEmpty(departInfo.parentDepartId)) { return; } DepartmentMembersCountUpdate(departInfo.parentDepartId); } }); }
/// <summary> /// 更新一级结构人数 /// </summary> /// <param name="parentDepartId"></param> private void DepartmentMembersCountUpdate(string parentDepartId) { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { var rootDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == parentDepartId); if (rootDepartemntExpander == null) { return; } { var rootDepartInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( m => m.departmentId == parentDepartId); if (rootDepartInfo == null) { return; } var totalCount = GetContactsCount(rootDepartInfo.departmentId); rootDepartemntExpander.Header = rootDepartInfo.departName + "(" + totalCount + ")"; } }); }
/// <summary> /// 查询(暂时支持汉字和首字母查询) /// </summary> /// <param name="condition"></param> public void ResetQueryCondition(string condition) { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { if (string.IsNullOrWhiteSpace(condition)) { return; } if (QueryContactList == null) { QueryContactList = new ObservableCollection <ContactInfoViewModel>(); } QueryContactList.Clear(); try { if (AntSdkService.AntSdkListContactsEntity.users != null) { //var userList = // AntSdkService.AntSdkListContactsEntity.contacts.users.Where( // m => IsconditionsSatisfy(m.userName, m.userNum)); //foreach (AntSdkContact_User user in userList) //{ // ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(user, Container, condition); // contactInfoViewModel.MouseEnter = new DefaultCommand(mouseEnter); // contactInfoViewModel.MouseLeave = new DefaultCommand(mouseEnter); // contactInfoViewModel.PlaceholderWidth = 20; // QueryContactList.Add(contactInfoViewModel); //} var tempUsers = AntSdkService.AntSdkListContactsEntity.users.Where(m => m.status == 2); var i = 0; foreach (var user in tempUsers) { string pinYin = string.Empty; if (IsconditionsSatisfy(user.userName, user.userNum, ref pinYin)) { i++; ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(user, Container, condition, pinYin); contactInfoViewModel.MouseEnter = new DefaultCommand(mouseEnter); contactInfoViewModel.MouseLeave = new DefaultCommand(mouseEnter); contactInfoViewModel.PlaceholderWidth = 20; QueryContactList.Add(contactInfoViewModel); if (i > 80) { break; } } } } if (_groupListViewModel != null) { //var groupList = // _groupListViewModel.GroupInfoList.Where(c => IsconditionsSatisfy(c.GroupInfo.groupName, string.Empty)); //foreach (GroupInfoViewModel group in groupList) //{ // ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(group, Container, condition) // { // MouseEnter = new DefaultCommand(mouseEnter), // MouseLeave = new DefaultCommand(mouseEnter) // }; // QueryContactList.Add(contactInfoViewModel); //} foreach (var group in _groupListViewModel.GroupInfoList) { string pinYin = string.Empty; if (IsconditionsSatisfy(group.GroupName, string.Empty, ref pinYin)) { ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(group, Container, condition, pinYin) { MouseEnter = new DefaultCommand(mouseEnter), MouseLeave = new DefaultCommand(mouseEnter) }; QueryContactList.Add(contactInfoViewModel); } } } //RaisePropertyChanged(() => QueryContactList); } catch (Exception e) { return; } if (QueryContactList.Count == 0) { BackImage = Visibility.Visible; } else { SelectContactItem = QueryContactList[0]; BackImage = Visibility.Collapsed; } }, DispatcherPriority.Background); }
private static void OnIsOfflineChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { var currentImage = d as ImageBrush; //Image currentImage=d as Image; if (currentImage == null) { return; } var value = d.GetValue(IsOfflineProperty); var isGray8 = value != null && (bool)value; if (isGray8) { var bitmapSource = currentImage.ImageSource as BitmapSource; if (bitmapSource == null) { return; } var url = currentImage.ImageSource.ToString(); if (url == GlobalVariable.DefaultImage.UserHeadDefaultImage) { var tempBitampSource = bitmapSource.ToGrayBitmap(); currentImage.ImageSource = tempBitampSource; } else { try { if (bitmapSource.IsDownloading) { bitmapSource.DownloadCompleted += (sender, args) => { var backupBitmapSource = bitmapSource.CloneCurrentValue(); currentImage.SetValue(BitmapSourceBackupProperty, backupBitmapSource); currentImage.ImageSource = bitmapSource.ToGrayBitmap(); }; } else { var backupBitmapSource = bitmapSource.CloneCurrentValue(); currentImage.SetValue(BitmapSourceBackupProperty, backupBitmapSource); var tempBitampSource = bitmapSource.ToGrayBitmap(); currentImage.ImageSource = tempBitampSource; } } catch (Exception ex) { } } //// 建立Gray32Float的BitmapSource //FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap(); //newFormatedBitmapSource.BeginInit(); //newFormatedBitmapSource.Source = currentImage.ImageSource as BitmapSource; //newFormatedBitmapSource.DestinationFormat = PixelFormats.Gray32Float; ////List<Color> colors = new List<Color>(); ////colors.Add(Colors.White); ////colors.Add(Colors.DarkGoldenrod); ////BitmapPalette palette = new BitmapPalette(colors); ////newFormatedBitmapSource.DestinationPalette = palette; //newFormatedBitmapSource.EndInit(); // 替换ImageSource } else { // 图像恢复操作 object obj = currentImage.GetValue(BitmapSourceBackupProperty); BitmapSource bs = obj as BitmapSource; if (bs == null) { return; } currentImage.ImageSource = bs; } }, DispatcherPriority.Background); }
/// <summary> /// 展开子节点 /// </summary> /// <param name="stackPanel">父面板</param> /// <param name="parentDepartId">父部门ID</param> /// <param name="level">在第几层</param> private void RecursionLoadSource(StackPanel stackPanel, string parentDepartId, int level) { if (AntSdkService.AntSdkListContactsEntity == null) { return; } AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { if (AntSdkService.AntSdkListContactsEntity.departs != null) { List <AntSdkContact_Depart> departList = AntSdkService.AntSdkListContactsEntity.departs.Where(c => c.parentDepartId == parentDepartId) .ToList(); if (AntSdkService.AntSdkListContactsEntity.users != null) { if (stackPanel == null) { stackPanel = new StackPanel(); } List <AntSdkContact_User> userList = AntSdkService.AntSdkListContactsEntity.users.Where(c => c.departmentId == parentDepartId && c.status == 2) .OrderBy(c => c.userId) .ToList(); if (userList.Count > 0) { stackPanel?.Children.Clear(); foreach (AntSdkContact_User user in userList) { ContactInfoView contactInfo = new ContactInfoView(user, this.Container); ContactInfoViewModel contactInfoViewModel = contactInfo.DataContext as ContactInfoViewModel; var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User.userId == user.userId); //if (tempContactInfo?.User != null && tempContactInfo.User.departmentId == user.departmentId) continue; if (tempContactInfo?.User != null && tempContactInfo.User.departmentId != user.departmentId) { tempContactInfo.User = user; } stackPanel.Children.Add(contactInfo); if (Container == GlobalVariable.ContactInfoViewContainer.ContactListView) { contactInfo.MouseDown += ModifyColorOnMouseClick; } else if (Container == GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewLeft) { GroupEditWindowViewModel groupEditVM = Owner as GroupEditWindowViewModel; if (groupEditVM?.GroupMemberList != null && groupEditVM.GroupMemberList.Select(c => c.User.userId).Contains(user.userId)) { if (groupEditVM.OriginalMemberIds != null && groupEditVM.OriginalMemberIds.Contains(user.userId)) { contactInfoViewModel?.SetExistGroupMember(); } else { contactInfoViewModel?.OnStateImageClickEventEvent(contactInfoViewModel, true); } } } else if (Container == GlobalVariable.ContactInfoViewContainer.MultiContactsSelectLeft) { MultiContactsSelectViewModel vm = Owner as MultiContactsSelectViewModel; if (vm != null && vm.GroupMemberList != null && vm.GroupMemberList.Select(c => c.User.userId).Contains(user.userId)) { //if (vm.OriginalMemberIds != null && vm.OriginalMemberIds.Contains(user.userId)) //{ // contactInfoViewModel.SetExistGroupMember(); //} //else //{ contactInfoViewModel?.OnStateImageClickEventEvent(contactInfoViewModel, true); //} } } if (contactInfoViewModel != null) { contactInfoViewModel.PlaceholderWidth = 30; ContactInfoViewModelList.Add(contactInfoViewModel); } } } else if (stackPanel?.Children.Count > 0) { stackPanel?.Children.Clear(); } } if (departList.Count <= 0) { return; } foreach (AntSdkContact_Depart depart in departList) { AdddepartData(depart, stackPanel, level); } } }); }
/// <summary> /// 部门改变 /// </summary> /// <param name="departs">部门</param> public void DepartmentUpdate(AntSdkAddListContactsOutput_Departs departs) { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { if (departs.add?.Count > 0) { //如果有一级部门,先添加一级部门 var firstLevelDeparts = departs.add.Where(m => m.parentDepartId == "0"); foreach (var firstLevelDepart in firstLevelDeparts) { if (dicExpanderNode == null || dicExpanderNode.Count <= 0) { AddFirstLevelDepartSource(firstLevelDepart); } else { var departemntExpander = dicExpanderNode.Keys.FirstOrDefault( m => m.Tag != null && m.Tag.ToString() == firstLevelDepart.departmentId); if (departemntExpander == null) { AddFirstLevelDepartSource(firstLevelDepart); } } } //添加二级部 var tempDeparts = departs.add.Where(m => m.parentDepartId != "0"); foreach (var depart in tempDeparts) { if (dicExpanderNode == null || dicExpanderNode.Count <= 0) { return; } if (dicExpanderNode.Keys.Count == 0) { return; } var departemntExpander = dicExpanderNode.Keys.FirstOrDefault( m => m.Tag != null && m.Tag.ToString() == depart.parentDepartId); if (departemntExpander == null) { return; } var departemntStackPanel = departemntExpander.Content as StackPanel; var node = dicExpanderNode[departemntExpander]; if (node.IsLoaded) { var tempDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault( m => m.Tag != null && m.Tag.ToString() == depart.departmentId); if (tempDepartemntExpander == null) { AdddepartData(depart, departemntStackPanel, node.Level); } } } } if (departs.delete?.Count > 0) { if (dicExpanderNode != null && dicExpanderNode.Count > 0) { var tempDeparts = departs.delete; foreach (var depart in tempDeparts) { var departemntExpander = dicExpanderNode.Keys.FirstOrDefault( m => m.Tag != null && m.Tag.ToString() == depart.departmentId); if (departemntExpander == null) { continue; } var departemntStackPanel = departemntExpander.Content as StackPanel; var node = dicExpanderNode[departemntExpander]; if (string.IsNullOrEmpty(node.ParentDepartId)) { MainStackPanel.Children.Remove(departemntExpander); dicExpanderNode.Remove(departemntExpander); } else { var parentDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault( m => m.Tag != null && m.Tag.ToString() == node.ParentDepartId); var parentDepartemntStackPanel = parentDepartemntExpander?.Content as StackPanel; if (parentDepartemntStackPanel == null) { continue; } parentDepartemntStackPanel.Children.Remove(departemntExpander); dicExpanderNode.Remove(departemntExpander); } } //var tempFirstLevelDeparts = departs.delete.Where(m => m.departmentId == "0"); //foreach (var depart in tempFirstLevelDeparts) //{ // var departemntExpander = // dicExpanderNode.Keys.FirstOrDefault( // m => m.Tag != null && m.Tag.ToString() == depart.departmentId); // if (departemntExpander == null) continue; // var departemntStackPanel = departemntExpander.Content as StackPanel; // var node = dicExpanderNode[departemntExpander]; // if (node.IsLoaded) // { // departemntStackPanel?.Children.Clear(); // } //} } } if (!(departs.update?.Count > 0)) { return; } { foreach (var depart in departs.update) { var newDepartemntExpander = dicExpanderNode?.Keys.FirstOrDefault( m => m.Tag != null && (string)m.Tag == depart.departmentId); if (newDepartemntExpander != null) { //var node = dicExpanderNode[newDepartemntExpander]; var departInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( m => m.departmentId == depart.departmentId); var count = GetContactsCount(depart.departmentId); if (departInfo != null) { newDepartemntExpander.Header = departInfo.departName + "(" + count + ")"; } } } } }); }
/// <summary> /// 联系人换部门或换公司 /// </summary> /// <param name="oldDepartmentId">旧部门ID</param> /// <param name="newDepartmentId">新部门ID</param> public void UserChangeDepartemnt(string oldDepartmentId, string newDepartmentId) { AsyncHandler.AsyncCall(Application.Current.Dispatcher, () => { if (dicExpanderNode == null || dicExpanderNode.Count <= 0) { return; } if (!string.IsNullOrEmpty(oldDepartmentId)) { var departemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == oldDepartmentId); //如果部门节点已展开,变更成员列表,否则只变更成员数量 if (departemntExpander != null) { var departemntStackPanel = departemntExpander.Content as StackPanel; var node = dicExpanderNode[departemntExpander]; if (node.IsLoaded) { //var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User != null && m.User.userId == userId); //if (tempContactInfo != null) // ContactInfoViewModelList.Remove(tempContactInfo); RecursionLoadSource(departemntStackPanel, oldDepartmentId, node.Level); } var count = GetContactsCount(oldDepartmentId); var departInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( m => m.departmentId == oldDepartmentId); if (departInfo != null) { departemntExpander.Header = departInfo.departName + "(" + count + ")"; if (!string.IsNullOrEmpty(departInfo.parentDepartId)) { DepartmentMembersCountUpdate(departInfo.parentDepartId); } } } else { var departInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( m => m.departmentId == oldDepartmentId); if (departInfo != null) { if (string.IsNullOrEmpty(departInfo.parentDepartId)) { //var parentDepartemntExpander = // dicExpanderNode.Keys.FirstOrDefault( // m => m.Tag != null && (string)m.Tag == departInfo.parentDepartId); //var parentDepartInfo = // AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( // m => m.departmentId == departInfo.parentDepartId); //if (parentDepartemntExpander != null && parentDepartInfo != null) //{ // var count = GetContactsCount(parentDepartInfo.departmentId); // parentDepartemntExpander.Header = parentDepartInfo.departName + "(" + count + ")"; //} DepartmentMembersCountUpdate(departInfo.parentDepartId); } } } } if (string.IsNullOrEmpty(newDepartmentId)) { return; } //用户被移到新部门 var newDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == newDepartmentId); //如果部门节点已展开,变更成员列表,否则只变更成员数量 if (newDepartemntExpander != null) { var departemntStackPanel = newDepartemntExpander.Content as StackPanel; var node = dicExpanderNode[newDepartemntExpander]; if (node.IsLoaded) { //var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User != null && m.User.userId == userId); //if (tempContactInfo != null) // ContactInfoViewModelList.Remove(tempContactInfo); RecursionLoadSource(departemntStackPanel, newDepartmentId, node.Level); } var count = GetContactsCount(newDepartmentId); var departInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( m => m.departmentId == newDepartmentId); if (departInfo == null) { return; } { newDepartemntExpander.Header = departInfo.departName + "(" + count + ")"; if (string.IsNullOrEmpty(departInfo.parentDepartId)) { return; } DepartmentMembersCountUpdate(departInfo.parentDepartId); } } else { var departInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault( m => m.departmentId == newDepartmentId); if (departInfo == null) { return; } if (!string.IsNullOrEmpty(departInfo.parentDepartId)) { return; } { DepartmentMembersCountUpdate(departInfo.parentDepartId); //var parentDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == departInfo.parentDepartId); //var parentDepartInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(m => m.departmentId == departInfo.parentDepartId); //if (parentDepartemntExpander != null && parentDepartInfo != null) //{ // var count = GetContactsCount(parentDepartInfo.departmentId); // parentDepartemntExpander.Header = parentDepartInfo.departName + "(" + count + ")"; //} } } }); }