public static ChatUser LoadUser(Guid id) { if (OnlineUsers.ContainsKey(id)) { return(OnlineUsers[id]); } ChatUser result = null; try { result = new ChatUserStore().Load(id); if (result != null) { ConversationStore conversationStore = new ConversationStore(); long time = 0; foreach (Guid cid in result.ConversationID) { time = conversationStore.GetLastActive(cid); result.Conversations.TryAdd(cid, time); } } } catch (Exception e) { PacChatServer.GetServer().Logger.Error(e); } return(result); }
public override IByteBuffer EncodeToBuffer(IByteBuffer buffer) { string notification = new ChatUserStore().Load(AdderID).FirstName + " invited " + new ChatUserStore().Load(AddedID).FirstName + " to group"; ByteBufUtils.WriteUTF8(buffer, notification); return(buffer); }
public void Handle(ISession session) { ChatSession chatSession = session as ChatSession; ChatUser user = new ChatUserStore().Load(chatSession.Owner.ID); GetSelfProfileResponse packet = new GetSelfProfileResponse(); packet.FirstName = user.FirstName; packet.LastName = user.LastName; packet.Email = user.Email; packet.Town = user.Town; packet.DateOfBirth = user.DateOfBirth; packet.Gender = user.Gender; chatSession.Send(packet); }
public void Handle(ISession session) { GetConversationShortInfoResponse packet = new GetConversationShortInfoResponse(); packet.ConversationID = ConversationID.ToString(); ChatSession chatSession = session as ChatSession; AbstractConversation conversation = new ConversationStore().Load(ConversationID); int cnt = 0; packet.ConversationName = ""; if (string.IsNullOrEmpty(conversation.ConversationName) || conversation.ConversationName.Equals("~")) { foreach (var member in conversation.Members) { if (member.CompareTo(chatSession.Owner.ID) == 0) { continue; } string name = new ChatUserStore().Load(member).FirstName; packet.ConversationName += name + ", "; cnt++; if (cnt >= 2) { break; } } if (cnt >= 2) { packet.ConversationName += "and " + (conversation.Members.Count - 3) + "others..."; } else { packet.ConversationName = packet.ConversationName.Replace(", ", ""); } } conversation.UpdateLastActive(chatSession); packet.LastActive = conversation.LastActive; chatSession.Send(packet); }
public void UpdateLastActive(ChatSession chatSession) { LastActive = long.MaxValue; foreach (var member in Members) { if (member.Equals(chatSession.Owner.ID)) { continue; } if (ChatUserManager.OnlineUsers.ContainsKey(member)) { LastActive = 0; break; } ChatUser user = new ChatUserStore().Load(member); LastActive = Math.Min(LastActive, (long)Math.Ceiling((DateTime.UtcNow - user.LastLogoff).TotalMinutes)); } }
public void Handle(ISession session) { ChatSession chatSession = session as ChatSession; if (Accepted) { string command = "sample mkfriend " + chatSession.Owner.Email + " " + new ChatUserStore().Load(TargetID).Email; Command.CommandManager.Instance.ExecuteCommand(ConsoleSender.Instance, command); AcceptedFriendResponse packet = new AcceptedFriendResponse(); packet.UserID = chatSession.Owner.ID.ToString(); packet.Name = chatSession.Owner.FirstName + " " + chatSession.Owner.LastName; ChatUser user; if (ChatUserManager.OnlineUsers.TryGetValue(TargetID, out user)) { user.Send(packet); chatSession.Send(new FinalizeAcceptedFriendRequest()); } // string encNoti = "acfriend:" + chatSession.Owner.ID + ":" + // chatSession.Owner.FirstName + " " + chatSession.Owner.LastName; string name = chatSession.Owner.FirstName + " " + chatSession.Owner.LastName; string encNoti = NotificationEncoder.Assemble( NotificationPrefixes.AcceptedFriend, chatSession.Owner.ID.ToString(), name, name, "accepted your friend request.", false); user = new ChatUserStore().Load(TargetID); user.Notifications.Add(encNoti); user.Save(); chatSession.Owner.Notifications.RemoveAt(NotiPosition); chatSession.Owner.Save(); } }
public void Handle(ISession session) { ChatSession chatSession = session as ChatSession; UserSearchResponse response = new UserSearchResponse(); List <String> UserIDs = new ChatUserStore().SearchUserIDByEmail(Email, (session as ChatSession).Owner); ConversationStore store = new ConversationStore(); foreach (var item in UserIDs) { Guid userId = Guid.Parse(item); ChatUser targetUser = ChatUserManager.LoadUser(userId); SearchResult result = new SearchResult(); result.ID = targetUser.ID.ToString(); result.FirstName = targetUser.FirstName; result.LastName = targetUser.LastName; result.IsOnline = targetUser.IsOnline(); result.LastLogout = targetUser.LastLogoff; result.PreviewCode = -1; result.ConversationID = "~"; var CommonConversation = targetUser.ConversationID.Intersect(chatSession.Owner.ConversationID); foreach (Guid id in CommonConversation) { AbstractConversation conversation = store.Load(id); if (conversation is SingleConversation) { result.ConversationID = conversation.ID.ToString(); AbstractMessage message = conversation.MessagesID.Count > 0 ? new MessageStore().Load(conversation.MessagesID.Last(), conversation.ID) : null; if (message == null) { break; } if (!message.Showable(chatSession.Owner.ID)) { result.PreviewCode = 0; break; } result.PreviewCode = message.GetPreviewCode(); if (message.GetPreviewCode() == 4) { result.LastMessage = (message as TextMessage).Message; } break; } } if (chatSession.Owner.Relationship.ContainsKey(targetUser.ID)) { result.Relationship = (int)Relation.Get(chatSession.Owner.Relationship[targetUser.ID]).RelationType; } else { result.Relationship = (int)Relation.Type.None; } response.Results.Add(result); } session.Send(response); }