Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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();
            }
        }
Пример #7
0
        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);
        }