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;
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 4
0
        /// <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));
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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来的为时间格式
                }
            }
        }