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; }); }
private void KickOutGroup(string groupId, string userID, string picture) { if (GroupInfo.groupId != groupId) { return; } GroupMemberViewModel vm = GroupMemberControlList.FirstOrDefault(c => c.Member.userId == userID); GroupMemberControlList.Remove(vm); MemberCountPrompt = string.Format("群成员({0}人)", GroupMemberControlList.Count); }
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); }); }