示例#1
0
    public AjaxChat GetUpdate(string token)
    {
        Member   member = (Member)HttpContext.Current.Session["Member"];
        AjaxChat ret    = null;

        bool force = false;

        if (HttpContext.Current.Session["fr"] == null)
        {
            HttpContext.Current.Session["fr"] = DateTime.Now;
        }

        int mod = (((int)(DateTime.Now - (DateTime)HttpContext.Current.Session["fr"]).TotalSeconds) % 30);

        force = mod >= 0 && mod <= 2;

        ret = ChatLogic.GetUpdate(member.WebMemberID, token, force);

        InitLast10Messages();
        foreach (AjaxChatMessage ajaxMsg in ret.Messages)
        {
            AddMessageToLast10Message(ajaxMsg);
        }
        PersistLast10Messages();

        return(ret);
    }
示例#2
0
    public static void Login(Member member)
    {
        AjaxChatFriend owner = new AjaxChatFriend();
        owner.CustomMessage = member.MemberProfile[0].TagLine;
        owner.Email = member.Email;
        owner.FirstName = member.FirstName;
        owner.LastName = member.LastName;
        owner.NickName = member.NickName;
        owner.OnlineStatus = OnlineStatus.Online;
        owner.OnlineStatusString = OnlineStatus.Online.ToString();
        owner.WebMemberID = member.WebMemberID;
        owner.LastCommDt = DateTime.Now;

        ResourceFile PhotoRes = new ResourceFile(member.ProfilePhotoResourceFileID);
        owner.AvatorUrl = ParallelServer.Get(PhotoRes.FullyQualifiedURL) + PhotoRes.FullyQualifiedURL; ;

        AjaxChat c = new AjaxChat(owner);

        c = AddToChatData(member.WebMemberID, c);
        c.Owner.OnlineStatus = OnlineStatus.Online;
        c.Token = Next2Friends.Misc.UniqueID.NewWebID();


        FillFriends(member);

        GetMessagesFromDB(member);
    }
示例#3
0
    public static void Login(Member member)
    {
        AjaxChatFriend owner = new AjaxChatFriend();

        owner.CustomMessage      = member.MemberProfile[0].TagLine;
        owner.Email              = member.Email;
        owner.FirstName          = member.FirstName;
        owner.LastName           = member.LastName;
        owner.NickName           = member.NickName;
        owner.OnlineStatus       = OnlineStatus.Online;
        owner.OnlineStatusString = OnlineStatus.Online.ToString();
        owner.WebMemberID        = member.WebMemberID;
        owner.LastCommDt         = DateTime.Now;

        ResourceFile PhotoRes = new ResourceFile(member.ProfilePhotoResourceFileID);

        owner.AvatorUrl = ParallelServer.Get(PhotoRes.FullyQualifiedURL) + PhotoRes.FullyQualifiedURL;;

        AjaxChat c = new AjaxChat(owner);

        c = AddToChatData(member.WebMemberID, c);
        c.Owner.OnlineStatus = OnlineStatus.Online;
        c.Token = Next2Friends.Misc.UniqueID.NewWebID();


        FillFriends(member);

        GetMessagesFromDB(member);
    }
示例#4
0
    public static void SendMessage(AjaxChatMessage message)
    {
        AjaxChat c = GetChatObject(message.WebMemberIDTo);

        c.Messages.Add(message);
        c.Token = Next2Friends.Misc.UniqueID.NewWebID();
    }
示例#5
0
    private static void FillFriends(Member member)
    {
        AjaxChat c = GetChatObject(member.WebMemberID);

        // Clear friend list before refreshing it.
        c.Friends.Clear();

        List <ChatOnline> chatFriendsList = ChatOnline.GetChatFriendsByMemberID(member.MemberID);

        foreach (ChatOnline chatFriend in chatFriendsList)
        {
            AjaxChat chat = GetChatObject(chatFriend.WebMemberID);

            if (chat == null)
            {
                AjaxChatFriend ajaxChatFriend = new AjaxChatFriend();
                ajaxChatFriend.WebMemberID   = chatFriend.WebMemberID;
                ajaxChatFriend.OnlineStatus  = (OnlineStatus)chatFriend.Status;
                ajaxChatFriend.FirstName     = chatFriend.FirstName;
                ajaxChatFriend.LastName      = chatFriend.LastName;
                ajaxChatFriend.NickName      = chatFriend.NickName;
                ajaxChatFriend.Email         = chatFriend.Email;
                ajaxChatFriend.CustomMessage = chatFriend.CustomMessage;
                ajaxChatFriend.AvatorUrl     = ParallelServer.Get(chatFriend.AvatorUrl) + @"user/" + chatFriend.AvatorUrl;

                chat = new AjaxChat(ajaxChatFriend);
            }

            chat       = AddToChatData(chatFriend.WebMemberID, chat);
            chat.Token = Next2Friends.Misc.UniqueID.NewWebID();

            c.Friends.Add(chat.Owner);
        }
    }
示例#6
0
    public static AjaxChat UpdateChatObject(string WebMemberID, AjaxChat updateInfo)
    {
        AjaxChat c = GetChatObject(WebMemberID);

        c.Owner.AvatorUrl     = updateInfo.Owner.AvatorUrl;
        c.Owner.CustomMessage = updateInfo.Owner.CustomMessage;
        c.Owner.FirstName     = updateInfo.Owner.FirstName;
        c.Owner.LastName      = updateInfo.Owner.LastName;

        return(c);
    }
示例#7
0
    public static AjaxChat GetChatObject(string WebMemberID)
    {
        AjaxChat c = null;

        if (ChatData.Contains(WebMemberID))
        {
            c = (AjaxChat)ChatData[WebMemberID];
        }

        return(c);
    }
示例#8
0
 private static AjaxChat AddToChatData(string WebMemberID, AjaxChat c)
 {
     if (!ChatData.Contains(WebMemberID))
     {
         ChatData.Add(WebMemberID, c);
         return c;
     }
     else
     {
         return UpdateChatObject(WebMemberID, c);            
     }
 }
示例#9
0
 private static AjaxChat AddToChatData(string WebMemberID, AjaxChat c)
 {
     if (!ChatData.Contains(WebMemberID))
     {
         ChatData.Add(WebMemberID, c);
         return(c);
     }
     else
     {
         return(UpdateChatObject(WebMemberID, c));
     }
 }
示例#10
0
    public static void Logoff(string WebMemberID)
    {
        AjaxChat c = GetChatObject(WebMemberID);

        if (c != null)
        {
            RemoveChatObject(WebMemberID);

            c.Messages.Clear();
            c.Friends.Clear();
            c = null;
        }
    }
示例#11
0
    public static AjaxChat GetUpdate(string WebMemberID, string token, bool force)
    {
        AjaxChat c = GetChatObject(WebMemberID);

        c.Owner.LastCommDt = DateTime.Now;

        string webMessageIds = "";

        // The token has not changed since last fetch so no changes
        if (c.Token == token && !force)
        {
            return(null);
        }

        AjaxChat retObject = new AjaxChat();

        retObject.Token = c.Token;

        retObject.Friends.AddRange(c.Friends);

        IList <AjaxChatMessage> msgs = (from m in c.Messages
                                        where m.Retrieved == false
                                        select m).ToList <AjaxChatMessage>();

        foreach (AjaxChatMessage msg in msgs)
        {
            c.Messages.Remove(msg);
            //msg.Retrieved = true;
            webMessageIds += msg.ChatMessageWebID + ",";
            //ChatMessage.MarkChatmMessageDelivered(msg.ChatMessageWebID);
            retObject.Messages.Add(msg);
        }



        if (webMessageIds != null && webMessageIds.Length > 0)
        {
            ParameterizedThreadStart ts = new ParameterizedThreadStart(MarkChatMessageDelivered);
            Thread t = new Thread(ts);
            t.Priority = ThreadPriority.BelowNormal;
            t.Start(webMessageIds);
        }

        //retObject.Messages.AddRange(msgs);

        return(retObject);
    }
示例#12
0
    public AjaxChat GetLast10Msgs(string WebFriendID)
    {
        InitLast10Messages();

        AjaxChat chat = new AjaxChat();

        if (WebFriendID != string.Empty)
        {
            foreach (AjaxChatMessage msg in Last10Messages)
            {
                if (msg.WebMemberIDFrom == WebFriendID || msg.WebMemberIDTo == WebFriendID)
                {
                    chat.Messages.Add(msg);
                }
            }
        }
        else
        {
            chat.Messages.AddRange(Last10Messages);
        }

        return(chat);
    }
示例#13
0
    private static void FillFriends(Member member)
    {
        AjaxChat c = GetChatObject(member.WebMemberID);

        // Clear friend list before refreshing it.
        c.Friends.Clear();        

        List<ChatOnline> chatFriendsList = ChatOnline.GetChatFriendsByMemberID(member.MemberID);

        foreach (ChatOnline chatFriend in chatFriendsList)
        {
            AjaxChat chat = GetChatObject(chatFriend.WebMemberID);

            if (chat == null)
            {
                AjaxChatFriend ajaxChatFriend = new AjaxChatFriend();
                ajaxChatFriend.WebMemberID = chatFriend.WebMemberID;
                ajaxChatFriend.OnlineStatus = (OnlineStatus)chatFriend.Status;
                ajaxChatFriend.FirstName = chatFriend.FirstName;
                ajaxChatFriend.LastName = chatFriend.LastName;
                ajaxChatFriend.NickName = chatFriend.NickName;
                ajaxChatFriend.Email = chatFriend.Email;
                ajaxChatFriend.CustomMessage = chatFriend.CustomMessage;
                ajaxChatFriend.AvatorUrl = ParallelServer.Get(chatFriend.AvatorUrl) + @"user/" + chatFriend.AvatorUrl;

                chat = new AjaxChat(ajaxChatFriend);
            }

            chat = AddToChatData(chatFriend.WebMemberID, chat);
            chat.Token = Next2Friends.Misc.UniqueID.NewWebID();

            c.Friends.Add( chat.Owner );
        }

    }
示例#14
0
    public AjaxChat GetLast10Msgs(string WebFriendID)
    {
        InitLast10Messages();
        
        AjaxChat chat = new AjaxChat();

        if( WebFriendID != string.Empty )
        {
            foreach( AjaxChatMessage msg in Last10Messages )
            {
                if( msg.WebMemberIDFrom == WebFriendID || msg.WebMemberIDTo == WebFriendID )
                {
                    chat.Messages.Add(msg);
                }
            }
        }
        else
        {
            chat.Messages.AddRange(Last10Messages);
        }

        return chat;
    }
示例#15
0
        /// <summary>
        /// gets all the new messages that are on the server and sets them to delivered satus: true
        /// </summary>
        /// <param name="MemberID"></param>
        /// <returns></returns>
        public static List<AjaxChat> GetNewMessagesDB(string WebMemberID)
        {
            ChatInbox inbox = GetInbox(WebMemberID);            
            List<Next2Friends.Data.Chat> chatMessages = null;
            List<AjaxChat> retChatMessages = new List<AjaxChat>();

            if (inbox == null)
                return retChatMessages;

            chatMessages = Next2Friends.Data.Chat.GetNewChats(inbox.MemberID);
            foreach (Next2Friends.Data.Chat c in chatMessages)
            {
                AjaxChat ajaxC = new AjaxChat();
                ajaxC.ChatWebID = c.ChatWebID;
                ajaxC.DTCreated = c.DTCreated;
                ajaxC.OtherMemberID = c.MemberIDFrom;                    
                ajaxC.Message = c.Message;

                retChatMessages.Add(ajaxC);
            }

            return retChatMessages;
        }
示例#16
0
        /// <summary>
        /// Sends a message to a user
        /// </summary>
        /// <param name="WebMemberID">The member posting the message</param>
        /// <param name="ToMemberID">The receiver of the message</param>        
        /// <param name="Message">The text content fo the message</param>
        /// <returns>Whether the message was successfully sent</returns>        
        public static bool SendMessageLive(string WebMemberID, string MemberIDTo, string FromNickName, string Message,string GUID)
        {
            ChatInbox senderInbox = GetInbox(WebMemberID);
            ChatInbox MemberInbox = GetInbox(MemberIDTo);

            // check if the user is in the list (not logged in? timed out?)
            if (MemberInbox != null)
            {
                AjaxChat ajaxC = new AjaxChat();
                if( GUID == null)
                    ajaxC.ChatWebID = GetGUID();
                else
                    ajaxC.ChatWebID = GUID;                
                ajaxC.DTCreated = DateTime.Now;
                ajaxC.OtherMemberWebID = WebMemberID;
                ajaxC.OtherMemberNick = FromNickName;
                ajaxC.Message = Message;
                ajaxC.Delivered = false;

                MemberInbox.ChatMessages.Add(ajaxC);                

                return true;
            }

            return false;
        }
示例#17
0
    public static AjaxChat GetUpdate(string WebMemberID, string token, bool force)
    {
        AjaxChat c = GetChatObject(WebMemberID);
        c.Owner.LastCommDt = DateTime.Now;

        string webMessageIds = "";

        // The token has not changed since last fetch so no changes
        if (c.Token == token && !force )
        {
            return null;
        }

        AjaxChat retObject = new AjaxChat();
        retObject.Token = c.Token;

        retObject.Friends.AddRange(c.Friends);

        IList<AjaxChatMessage> msgs = (from m in c.Messages
                                             where m.Retrieved == false
                                             select m).ToList<AjaxChatMessage>();

        foreach (AjaxChatMessage msg in msgs)
        {
            c.Messages.Remove(msg);
            //msg.Retrieved = true;
            webMessageIds += msg.ChatMessageWebID + ",";
            //ChatMessage.MarkChatmMessageDelivered(msg.ChatMessageWebID);
            retObject.Messages.Add(msg);
        }



        if (webMessageIds != null && webMessageIds.Length > 0)
        {
            ParameterizedThreadStart ts = new ParameterizedThreadStart(MarkChatMessageDelivered);
            Thread t = new Thread(ts);
            t.Priority = ThreadPriority.BelowNormal;
            t.Start(webMessageIds);
        }

        //retObject.Messages.AddRange(msgs);

        return retObject;
    }
示例#18
0
    public static AjaxChat UpdateChatObject(string WebMemberID,AjaxChat updateInfo)
    {
        AjaxChat c = GetChatObject(WebMemberID);
        
        c.Owner.AvatorUrl = updateInfo.Owner.AvatorUrl;
        c.Owner.CustomMessage = updateInfo.Owner.CustomMessage;
        c.Owner.FirstName = updateInfo.Owner.FirstName;
        c.Owner.LastName = updateInfo.Owner.LastName;

        return c;
    }