public GroupEditWindowViewModel(Action close, List <string> memberIds, AntSdkGroupInfo groupInfo) { IsCreateGroup = false; Title = "邀请加入讨论组"; this.GroupInfo = groupInfo; OriginalMemberIds = memberIds; this.close = close; ContactInfoViewModel.StateImageClickEvent += StateImageClickEvent; ContactListViewModel = new ContactListViewModel(GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewLeft, this); LeftPartViewModel = ContactListViewModel; foreach (string memberId in memberIds) { AntSdkContact_User user = AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == memberId); if (user == null)//离职人员信息 { user = new AntSdkContact_User(); user.picture = "pack://application:,,,/AntennaChat;Component/Images/离职人员.png"; user.userName = "******"; user.userId = memberId; } ContactInfoViewModel myselfVM = new ContactInfoViewModel(user, GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewRight); if (myselfVM == null) { continue; } myselfVM.StateImageVisibility = Visibility.Collapsed; GroupMemberList.Add(myselfVM); } MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count()); //GroupName = groupInfo.groupName; GroupNameWateMark = groupInfo.groupName; GroupNameIsReadOnly = true; }
public GroupInfoViewModel(AntSdkGroupInfo groupInfo) { this.GroupInfo = groupInfo; if (string.IsNullOrWhiteSpace(groupInfo.groupPicture)) { this.GroupPicture = "pack://application:,,,/AntennaChat;Component/Images/44-头像.png"; } else { this.GroupPicture = groupInfo.groupPicture; } //SetUnreadCount(unreadCount); this.GroupName = string.Format("{0}", groupInfo.groupName); //this.GroupName = string.Format("{0}({1}人)", groupInfo.groupName, groupInfo.members); if (groupInfo.state == (int)GlobalVariable.MsgRemind.NoRemind) { MessageNoticeIsChecked = false; MessageHideIsChecked = true; ImageNoRemindVisibility = Visibility.Visible; } else { MessageNoticeIsChecked = true; MessageHideIsChecked = false; ImageNoRemindVisibility = Visibility.Collapsed; } this.GroupClassify = groupInfo.groupOwnerId == AntSdkService.AntSdkCurrentUserInfo.userId || (groupInfo.managerIds != null && groupInfo.managerIds.Contains(AntSdkService.AntSdkCurrentUserInfo.userId)) ? 1 : 2; this.DeleteGroupVisibility = groupInfo.groupOwnerId == AntSdkService.AntSdkCurrentUserInfo.userId ? Visibility.Visible : Visibility.Collapsed; this.GroupMemberCount = string.Format("({0}人)", groupInfo.memberCount); //ThreadPool.QueueUserWorkItem(o => Members = GroupPublicFunction.GetMembers(this.GroupInfo.groupId)); //GetMembers(); GroupMemberViewModel.KickoutGroupEvent += KickoutGroup; }
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); }
/// <summary> /// 创建新讨论组时调用 /// </summary> /// <param name="group"></param> /// <returns></returns> public GroupInfoViewModel AddGroup(AntSdkCreateGroupOutput group) { //不为空||去除重复的 if (group == null) { return(null); } else if (GroupIds.Contains(group.groupId)) { return(GroupInfoList.FirstOrDefault(c => c.GroupInfo.groupId == group.groupId)); } var newGroup = new AntSdkGroupInfo { groupId = @group.groupId, groupName = @group.groupName, groupPicture = @group.groupPicture, state = (int)GlobalVariable.MsgRemind.Remind, groupOwnerId = group.groupOwnerId, memberCount = group.memberCount }; return(AddGroupInfoModel(newGroup)); }
/// <summary> /// 新增群组model组装 /// </summary> /// <param name="newGroup"></param> /// <returns></returns> private GroupInfoViewModel AddGroupInfoModel(AntSdkGroupInfo newGroup) { //if (GroupInfoList.FirstOrDefault(c => c.GroupInfo.groupId == group.groupId) != null) return; if (GroupIds.Contains(newGroup.groupId)) { var tempGroupInfoVm = GroupInfoList.FirstOrDefault(c => c.GroupInfo.groupId == newGroup.groupId); if (tempGroupInfoVm != null) { if (tempGroupInfoVm.GroupPicture != newGroup.groupPicture) { tempGroupInfoVm.GroupPicture = newGroup.groupPicture; } var classify = newGroup.groupOwnerId == AntSdkService.AntSdkCurrentUserInfo.userId || (newGroup.managerIds != null && newGroup.managerIds.Contains(AntSdkService.AntSdkCurrentUserInfo.userId)) ? 1 : 2; if (tempGroupInfoVm.GroupClassify != classify) { tempGroupInfoVm.GroupClassify = classify; if (ManageGroupInfoList.Contains(tempGroupInfoVm)) { ManageGroupInfoList.Remove(tempGroupInfoVm); } if (JoinGroupInfoList.Contains(tempGroupInfoVm)) { JoinGroupInfoList.Remove(tempGroupInfoVm); } if (tempGroupInfoVm.GroupClassify == 1) { ManageGroupInfoList.Insert(0, tempGroupInfoVm); } else { JoinGroupInfoList.Insert(0, tempGroupInfoVm); } ManageGroupCount = ManageGroupInfoList.Count; JoinGroupCount = JoinGroupInfoList.Count; } } //tempGroupInfoVm = groupInfoVM; return(tempGroupInfoVm); } GroupInfoViewModel groupInfoVM = new GroupInfoViewModel(newGroup); if (GroupInfos == null) { GroupInfos = new List <AntSdkGroupInfo>(); } GroupInfos.Add(newGroup); GroupIds.Add(newGroup.groupId); GroupInfoList.Add(groupInfoVM); if (groupInfoVM.GroupClassify == 1) { ManageGroupInfoList.Insert(0, groupInfoVM); } else { JoinGroupInfoList.Insert(0, groupInfoVM); } ManageGroupCount = ManageGroupInfoList.Count; JoinGroupCount = JoinGroupInfoList.Count; if (ManageGroupCount > 0) { IsManageGroup = true; } if (JoinGroupCount > 0) { IsJoinGroup = true; } //if (GroupInfoList != null && GroupInfoList.Any()) //{ // CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(GroupInfoList); // if (view != null) // { // view.GroupDescriptions.Clear(); // PropertyGroupDescription groupDescription = new PropertyGroupDescription("GroupClassify"); // view.GroupDescriptions.Add(groupDescription); // } //} List <string> topics = new List <string>(); topics.Add(newGroup.groupId); return(groupInfoVM); }
/// <summary> /// 讨论组聊天消息 /// </summary> public SessionInfoViewModel(AntSdkGroupInfo groupInfo, BurnFlag isBurnMode, List <AntSdkGroupMember> groupMembers, SessionInfoModel model) { this.IsBurnMode = isBurnMode; this.ImageBurnVisibility = isBurnMode == BurnFlag.IsBurn ? Visibility.Visible : Visibility.Collapsed; _SessionType = SessionType.GroupChat; IsGroup = true; this.GroupInfo = groupInfo; if (groupInfo.state == (int)GlobalVariable.MsgRemind.NoRemind) { MessageNoticeIsChecked = false; MessageHideIsChecked = true; ImageNoRemindVisibility = Visibility.Visible; } else { MessageNoticeIsChecked = true; MessageHideIsChecked = false; ImageNoRemindVisibility = Visibility.Collapsed; } if (groupInfo.groupOwnerId == AntSdkService.AntSdkCurrentUserInfo.userId) { DeleteGroupVisibility = Visibility.Visible; } if (groupMembers != null && groupMembers.Any()) { this.GroupMembers = groupMembers; } else { System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); //AsyncHandler.Call(Application.Current.Dispatcher, () => //{ // this.GroupMembers = GetMembers(); //},DispatcherPriority.Background); stopWatch.Stop(); LogHelper.WriteDebug(string.Format("[SessionInfoViewModel_GetMembers({0}毫秒)]", stopWatch.Elapsed.TotalMilliseconds)); } this.SessionId = model.SessionId; //if (!string.IsNullOrWhiteSpace(model.photo)) //{ // this.Photo = model.photo; //} //else //{ // this.Photo = "pack://application:,,,/AntennaChat;Component/Images/44-头像.png"; //} SetContactPhoto(true); this.Name = model.name; this.LastMessage = model.lastMessage; this.LastChatIndex = model.lastChatIndex; this.TopIndex = model.topIndex; SetUnreadCount(model.unreadCount); if (string.IsNullOrWhiteSpace(model.lastTime)) { this.LastTime = string.Empty; } else { try { this.LastTime = DataConverter.FormatTimeByTimeStamp(model.lastTime);//从消息来的为时间戳 this.LastMsgTimeStamp = model.lastTime; } catch { //this.LastTime = model.lastTime;//从Sqlite来的为时间格式 } } }