Ejemplo n.º 1
0
 void Raise(UserOnlineStatus status)
 {
     var ev = StatusChanged;
     if (ev != null)
     {
         ev(status);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 改变目标用户的在线状态
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="newOnlineStatus">新状态</param>
        public void ChangeOnlieStatus(string username, UserOnlineStatus newOnlineStatus)
        {
            UserTokenAndCallback t = GetUser(username);
            t.Token.ChangeOnlineStatus(newOnlineStatus);

            Tokens.Where(x => x.Token.UID.ToString() == t.Token.PID
                || x.Token.PID == t.Token.UID.ToString()
                || x.Token.IsOfficial)
                .ToList()
                .ForEach(x =>
                {
                    CallStatusChanged(x, username, newOnlineStatus);
                });
        }
Ejemplo n.º 3
0
        public async Task <IHttpActionResult> SetIsOnline([FromBody] UserOnlineStatus i_Status)
        {
            string nickname = Thread.CurrentPrincipal.Identity.Name;

            using (CarWatchDBEntities entities = new CarWatchDBEntities())
            {
                FacebookAccount account = await entities.FacebookAccounts.FirstOrDefaultAsync(e => e.Nickname == nickname);

                if (account == null)
                {
                    return(BadRequest("This nickname is not registered."));
                }
                account.IsOnline = i_Status.Status;
                await entities.SaveChangesAsync();

                return(Ok());
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 改变在线状态
 /// </summary>
 /// <param name="newOnlineStatus"></param>
 public void ChangeOnlineStatus(UserOnlineStatus newOnlineStatus)
 {
     this.OnlineStatus = newOnlineStatus;
 }
Ejemplo n.º 5
0
 public void UserStatusChanged(UserOnlineStatus status)
 {
     this.OnlineStatus = status;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 改变在线状态
 /// </summary>
 /// <param name="username"></param>
 /// <param name="newOnlineStatus"></param>
 public void ChangeStatus(string username, UserOnlineStatus newOnlineStatus)
 {
     MyPond.Default.ChangeOnlieStatus(username, newOnlineStatus);
 }
Ejemplo n.º 7
0
 void CallStatusChanged(UserTokenAndCallback input, string targetUser, UserOnlineStatus newOnlineStatus)
 {
     try
     {
         var t = GetUser(targetUser);
         input.Callback.ChangeOnlineStatus(targetUser, newOnlineStatus, t.Token.IsOfficial);
     }
     catch (Exception)
     {
         RemoveToken(input.Token.Username);
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 初始化
        /// </summary>
        private void Initialize()
        {
            CustomerServiceList = new ObservableCollection<UserInfo>();
            CustomerServiceList.CollectionChanged += (d, e) => { OnPropertyChanged(this, "CustomerServiceList"); };
            SuperiorList = new ObservableCollection<UserInfo>();
            SuperiorList.CollectionChanged += (d, e) => { OnPropertyChanged(this, "SuperiorList"); };
            LowerList = new ObservableCollection<UserInfo>();
            LowerList.CollectionChanged += (d, e) => { OnPropertyChanged(this, "LowerList"); };

            ChatingWithList = new ObservableCollection<UserInfo>();
            CurrentMessages = new ObservableCollection<MessageResult>();

            currentUserOnlineState = UserOnlineStatus.在线;
            chatWindowIsOpen = false;
            friendListWindowIsOpen = false;
            newMessageCount = 0;
            customerServiceListIsOpen = false;
            superiorListIsOpen = false;
            lowerListIsOpen = false;
            waitSendContent = "";
            chatingWith = "";

            SendMessageCommand = new BaseCommand(SendMessage);
            AddExpressionCommand = new BaseCommand(AddExpression);
            CloseCurrentChatCommand = new BaseCommand(CloseCurrentChat);
            AddScreenShotCommand = new BaseCommand(AddScreenShot);

            Command = new BaseCommand(BeginChatToSomeone);
            SwitchChatingWithCommand = new BaseCommand(SwitchChatingWith);

            TimeToReflashCustomerServiceList = false;
            TimeToReflash2CustomerServiceList = false;

            chatClient = new ChatServiceClient(new InstanceContext(this));
            chatClient.RegisterAndGetFriendListCompleted += ChatClientRegisterAndGetFriendListCompleted;
            chatClient.RegisterAndGetFriendListAsync(CurrentUser, false);
        }
Ejemplo n.º 9
0
        public void ChangeOnlineStatus(string username, UserOnlineStatus onlineStatus, bool isOfficial)
        {
            if (isOfficial)
            {
                if (onlineStatus == UserOnlineStatus.离线)
                {
                    if (CustomerServiceList.Any(x => x.Username == username))
                    {
                        UserInfo y = CustomerServiceList.First(x => x.Username == username);
                        CustomerServiceList.Remove(y);
                        TimeToReflash2CustomerServiceList = true;
                    }
                }
                else
                {
                    if (!CustomerServiceList.Any(x => x.Username == username))
                    {
                        CustomerServiceList.Add(new UserInfo
                        {
                            Username = username,
                            UserState = UserOnlineStatus.在线,
                            NewMessageCount = 0,
                            Command = Command,
                            SwitchChatingWithCommand = SwitchChatingWithCommand
                        });
                        TimeToReflashCustomerServiceList = true;
                    }
                }
                OnPropertyChanged(this, "CustomerServiceList");
            }
            else
            {
                List<ObservableCollection<UserInfo>> l = new List<ObservableCollection<UserInfo>> { SuperiorList, LowerList };
                ObservableCollection<UserInfo> o = l.FirstOrDefault(x => x.Any(y => y.Username == username));
                if (o == null)
                {
                    return;
                }
                o.First(x => x.Username == username).UserState = onlineStatus;
                OnPropertyChanged(this, "SuperiorList");
                OnPropertyChanged(this, "LowerList");

            }
        }
Ejemplo n.º 10
0
 public void ChangeOnlineStatus(string username, UserOnlineStatus onlineStatus, bool isOfficial)
 {
     if (!Users.Any(x => x.Username == username)) { return; }
     var u = Users.First(x => x.Username == username);
     if (isOfficial && onlineStatus != UserOnlineStatus.离线)
     {
         u.UserType = UserInfoModel.UserModelType.客服;
     }
     else if (onlineStatus != UserOnlineStatus.离线)
     {
         u.UserType = UserInfoModel.UserModelType.在线;
     }
     else
     {
         u.UserType = UserInfoModel.UserModelType.离线;
     }
     OnPropertyChanged("Users");
 }