void Raise(UserOnlineStatus status) { var ev = StatusChanged; if (ev != null) { ev(status); } }
/// <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); }); }
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()); } }
/// <summary> /// 改变在线状态 /// </summary> /// <param name="newOnlineStatus"></param> public void ChangeOnlineStatus(UserOnlineStatus newOnlineStatus) { this.OnlineStatus = newOnlineStatus; }
public void UserStatusChanged(UserOnlineStatus status) { this.OnlineStatus = status; }
/// <summary> /// 改变在线状态 /// </summary> /// <param name="username"></param> /// <param name="newOnlineStatus"></param> public void ChangeStatus(string username, UserOnlineStatus newOnlineStatus) { MyPond.Default.ChangeOnlieStatus(username, newOnlineStatus); }
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); } }
/// <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); }
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"); } }
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"); }