Exemplo n.º 1
0
        private void _ic_Notified(CVResult result, object obj)
        {
            if (result == CVResult.LogonSucceeded)
            {
                LoginPt lp = obj as LoginPt;
                _user = UserItem.From(lp);
                if (_user.Role == UserRole.Administrator || _user.Role == UserRole.SystemAdministrator)
                {
                    Status = CVRInfoExStatus.Refused;
                    Notified?.Invoke(CVRInfoExResult.PrivilegeHappened, _user.Role.ToString() + " 权限访问使用");
                    _ic.Shutdown();
                }
                else
                {
                    Status = CVRInfoExStatus.Ready;
                    Notified?.Invoke(CVRInfoExResult.LogonSucceeded, _user);
                }
            }
            else if (result == CVResult.LogonFailed)
            {
                Status = CVRInfoExStatus.Offline;
                LoginPt lp = obj as LoginPt;
                Notified?.Invoke(CVRInfoExResult.LogonFailed, lp.msg);
            }
            else if (result == CVResult.OnlineUsersNotified)
            {
                LogonUserListPt lulp = obj as LogonUserListPt;

                foreach (LoginPt lp in lulp.logonUsers)
                {
                    if (!_users.ContainsKey(lp.id))
                    {
                        Add(lp.id, lp.username, lp.role);
                    }
                }
                Notified?.Invoke(CVRInfoExResult.UserChanged, _users);
            }
            else if (result == CVResult.OnlineUserChanged)
            {
                LogoutPt lp = obj as LogoutPt;
                if (lp.state == 0)
                {
                    //用户上线
                    UserItem ui = Add(lp.id, lp.username, lp.role);
                    if (ui != null)
                    {
                        Notified?.Invoke(CVRInfoExResult.UserChanged, _users);
                    }
                }
                else if (lp.state == 1)
                {
                    //用户
                    _users.Remove(lp.id);
                    Notified?.Invoke(CVRInfoExResult.UserChanged, _users);
                }
            }
            else if (result == CVResult.MessageReceived)
            {
                ChatTextPt ctp = obj as ChatTextPt;
                if (ctp.msg.Contains("\r"))
                {
                    TeamworkItem ti = TeamworkItem.FromMsg(ctp.msg);
                    ti.Item = MessageItem.From(ctp);
                    Notified?.Invoke(CVRInfoExResult.TeamworkReceived, ti);
                }
                else
                {
                    MessageItem mi = MessageItem.From(ctp);
                    Notified?.Invoke(CVRInfoExResult.MessageReceived, mi);
                }
            }
            else if (result == CVResult.MessageNotified)
            {
                MessagePt mp = obj as MessagePt;
                Status = mp.msgtype == "101001" ? CVRInfoExStatus.Timeout: CVRInfoExStatus.Unknown;
                Notified?.Invoke(CVRInfoExResult.MessageNotified, mp.msg);
            }
        }