Ejemplo n.º 1
0
        public int GetChatInterval()
        {
            LoginUser    loginUser = TSAuthentication.GetLoginUser();
            Organization org       = TSAuthentication.GetOrganization(loginUser);

            return(ChatRequests.GetRequestCountInLastDays(loginUser, loginUser.OrganizationID, 180) > 0 || org.DateCreated.AddDays(-30) > DateTime.UtcNow ? 10000 : 30000);
        }
Ejemplo n.º 2
0
        public TsChatUpdate GetChatUpdate(int lastChatMessageID, int lastChatRequestID)
        {
            TsChatUpdate update = new TsChatUpdate();

            try
            {
                User user = Users.GetUser(LoginUser.Anonymous, TSAuthentication.UserID);
                user.UpdatePing();

                LoginUser loginUser = new LoginUser(user.UserID, user.OrganizationID, null);

                List <GrowlMessage> chatMessageGrowl = new List <GrowlMessage>();
                List <GrowlMessage> chatRequestGrowl = new List <GrowlMessage>();

                update.LastChatRequestID = lastChatRequestID;
                update.LastChatMessageID = lastChatMessageID;
                update.ChatMessageCount  = 0;
                update.ChatRequestCount  = 0;

                if (user.IsChatUser && ChatUserSettings.GetSetting(loginUser, user.UserID).IsAvailable)
                {
                    ChatMessages chatMessages = new ChatMessages(loginUser);
                    update.ChatMessageCount = chatMessages.GetUnreadMessageCount(loginUser.UserID, ChatParticipantType.User);
                    update.ChatRequestCount = user.IsChatUser ? ChatRequests.GetWaitingRequestCount(loginUser, loginUser.UserID, loginUser.OrganizationID) : 0;

                    if (lastChatMessageID < 0)
                    {
                        update.LastChatMessageID = ChatMessages.GetLastMessageID(loginUser);
                    }
                    chatMessages.LoadUnpreviewedMessages(loginUser.UserID, update.LastChatMessageID);

                    foreach (ChatMessage chatMessage in chatMessages)
                    {
                        chatMessageGrowl.Add(new GrowlMessage(chatMessage.Message, chatMessage.PosterName, "ui-state-active"));
                        update.LastChatMessageID = chatMessage.ChatMessageID;
                    }

                    ChatRequests requests = new ChatRequests(loginUser);
                    requests.LoadNewWaitingRequests(loginUser.UserID, loginUser.OrganizationID, lastChatRequestID);

                    foreach (ChatRequest chatRequest in requests)
                    {
                        chatRequestGrowl.Add(new GrowlMessage(string.Format("{0} {1} is requesting a chat!", chatRequest.Row["FirstName"].ToString(), chatRequest.Row["LastName"].ToString()), "Chat Request", "ui-state-error"));
                        update.LastChatRequestID = chatRequest.ChatRequestID;
                    }
                }

                update.NewChatMessages = chatMessageGrowl.ToArray();
                update.NewChatRequests = chatRequestGrowl.ToArray();
            }
            catch (Exception ex)
            {
                ExceptionLogs.LogException(LoginUser.Anonymous, ex, "Main Chat Upate");
            }
            return(update);
        }
Ejemplo n.º 3
0
        public static string GetChatRequest(RestCommand command, int chatRequestID)
        {
            ChatRequest chatRequest = ChatRequests.GetChatRequest(command.LoginUser, chatRequestID);

            if (chatRequest.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(chatRequest.GetXml("ChatRequest", true));
        }
Ejemplo n.º 4
0
        public static string GetChatRequests(RestCommand command)
        {
            ChatRequests chatRequests = new ChatRequests(command.LoginUser);

            chatRequests.LoadByOrganizationID(command.Organization.OrganizationID);

            if (command.Format == RestFormat.XML)
            {
                return(chatRequests.GetXml("ChatRequests", "ChatRequest", true, command.Filters));
            }
            else
            {
                throw new RestException(HttpStatusCode.BadRequest, "Invalid data format");
            }
        }
Ejemplo n.º 5
0
    public static string GetChatRequestHtml(UserInfoProxy userInfo, bool forceUpdate)
    {
        LoginUser     loginUser = new LoginUser(userInfo.UserID, userInfo.OrganizationID, null);
        StringBuilder builder   = new StringBuilder();

        ChatRequests requests = new ChatRequests(loginUser);

        requests.LoadWaitingRequests(loginUser.UserID, loginUser.OrganizationID);

        foreach (ChatRequest request in requests)
        {
            ParticipantInfo participant = ChatParticipant.GetParticipantInfo(loginUser, request.RequestorID, request.RequestorType);
            string          row         = "<tr><td class=\"col1\">{0}</td><td class=\"col2\">{1}</td></tr>";
            string          stateClass  = request.RequestType != ChatRequestType.External ? "ui-state-highlight" : "ui-state-default";
            builder.Append(string.Format("<div class=\"ts-panellist-header ui-helper-reset {0} ui-corner-all\" role=\"tab\" aria-expanded=\"false\" tabindex=\"-1\">", stateClass));
            builder.Append("<span class=\"ui-icon ui-icon-triangle-1-e \" />");
            builder.Append("<a href=\"#\">" + participant.FirstName + " " + participant.LastName + " - " + request.DateCreated.ToString("t", loginUser.CultureInfo) + "</a>");
            builder.Append("</div>");
            builder.Append("<div class=\"content\">");
            builder.Append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"5\">");
            builder.Append(string.Format(row, "Email:", participant.Email));
            if (participant.CompanyName != "")
            {
                builder.Append(string.Format(row, "Company:", participant.CompanyName));
            }
            builder.Append(string.Format(row, "Time:", request.DateCreated.ToString("t", loginUser.CultureInfo)));
            builder.Append(string.Format(row, "Message:", request.Message));
            builder.Append("</table>");
            builder.Append(string.Format("<div class=\"accept\"><a class=\"ts-link-button {0} ui-corner-all \" href=\"#\" onclick=\"AcceptRequest({1}); return false;\">Accept</a></div>", stateClass, request.ChatRequestID.ToString()));
            builder.Append("</div>");
        }
        string html = builder.ToString().Trim();

        if (html == "")
        {
            html = "<div class=\"content\">There are no chat requests.</div>";
        }


        if (!forceUpdate && HttpContext.Current.Session["LastRequestHtml"] != null && (string)HttpContext.Current.Session["LastRequestHtml"] == html)
        {
            return("");
        }

        HttpContext.Current.Session["LastRequestHtml"] = html;
        return(html);
    }
Ejemplo n.º 6
0
        public static void ProcessChat(HttpContext context, string command, int organizationID)
        {
            System.Web.HttpBrowserCapabilities browser = context.Request.Browser;
            if (browser.Browser != "IE")
            {
                context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            }

            if (command == "image")
            {
                bool   isAvailable = ChatRequests.IsOperatorAvailable(LoginUser.Anonymous, organizationID);
                string fileName    = isAvailable ? "chat_available" : "chat_unavailable";
                fileName = AttachmentPath.FindImageFileName(LoginUser.Anonymous, organizationID, AttachmentPath.Folder.ChatImages, fileName);
                WriteImage(context, fileName);
            }
            else if (command == "logo")
            {
                string fileName = AttachmentPath.FindImageFileName(LoginUser.Anonymous, organizationID, AttachmentPath.Folder.ChatImages, "chat_logo");
                WriteImage(context, fileName);
            }
        }
Ejemplo n.º 7
0
 public static void RequestInvite(int chatID, int userID)
 {
     ChatRequests.RequestInvite(UserSession.LoginUser, chatID, userID);
 }
Ejemplo n.º 8
0
 public static void RequestTransfer(int chatID, int userID)
 {
     ChatRequests.RequestTransfer(UserSession.LoginUser, chatID, userID);
 }
Ejemplo n.º 9
0
    public static int AcceptRequest(int chatRequestID)
    {
        int chatID = ChatRequests.AcceptRequest(UserSession.LoginUser, UserSession.LoginUser.UserID, chatRequestID, HttpContext.Current.Request.UserHostAddress);

        return(chatID);
    }
Ejemplo n.º 10
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            context.Response.AddHeader("Expires", "-1");
            context.Response.AddHeader("Pragma", "no-cache");

            if (TSAuthentication.Ticket == null)
            {
                context.Response.ContentType = "text/plain";
                context.Response.StatusCode  = (int)HttpStatusCode.Forbidden;
                context.Response.ClearContent();
                context.Response.End();
                return;
            }

            TsChatUpdate update = new TsChatUpdate();

            using (Stream receiveStream = context.Request.InputStream)
            {
                using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                {
                    string  requestContent = readStream.ReadToEnd();
                    JObject args           = JObject.Parse(requestContent);

                    int lastChatRequestID = int.Parse(args["lastChatRequestID"].ToString());;
                    int lastChatMessageID = int.Parse(args["lastChatMessageID"].ToString());;

                    try
                    {
                        User user = Users.GetUser(LoginUser.Anonymous, TSAuthentication.UserID);

                        if (user == null)
                        {
                            context.Response.ContentType = "text/plain";
                            context.Response.StatusCode  = (int)HttpStatusCode.Forbidden;
                            context.Response.ClearContent();
                            context.Response.End();
                            return;
                        }

                        user.UpdatePing();

                        LoginUser loginUser = new LoginUser(user.UserID, user.OrganizationID, null);

                        List <GrowlMessage> chatMessageGrowl = new List <GrowlMessage>();
                        List <GrowlMessage> chatRequestGrowl = new List <GrowlMessage>();

                        update.LastChatRequestID = lastChatRequestID;
                        update.LastChatMessageID = lastChatMessageID;
                        update.ChatMessageCount  = 0;
                        update.ChatRequestCount  = 0;

                        if (user.IsChatUser && ChatUserSettings.GetSetting(loginUser, user.UserID).IsAvailable)
                        {
                            ChatMessages chatMessages = new ChatMessages(loginUser);
                            update.ChatMessageCount = chatMessages.GetUnreadMessageCount(loginUser.UserID, ChatParticipantType.User);
                            update.ChatRequestCount = user.IsChatUser ? ChatRequests.GetWaitingRequestCount(loginUser, loginUser.UserID, loginUser.OrganizationID) : 0;

                            if (lastChatMessageID < 0)
                            {
                                update.LastChatMessageID = ChatMessages.GetLastMessageID(loginUser);
                            }
                            chatMessages.LoadUnpreviewedMessages(loginUser.UserID, update.LastChatMessageID);

                            foreach (ChatMessage chatMessage in chatMessages)
                            {
                                chatMessageGrowl.Add(new GrowlMessage(chatMessage.Message, chatMessage.PosterName, "ui-state-active"));
                                update.LastChatMessageID = chatMessage.ChatMessageID;
                            }

                            ChatRequests requests = new ChatRequests(loginUser);
                            requests.LoadNewWaitingRequests(loginUser.UserID, loginUser.OrganizationID, lastChatRequestID);

                            foreach (ChatRequest chatRequest in requests)
                            {
                                chatRequestGrowl.Add(new GrowlMessage(string.Format("{0} {1} is requesting a chat!", chatRequest.Row["FirstName"].ToString(), chatRequest.Row["LastName"].ToString()), "Chat Request", "ui-state-error"));
                                update.LastChatRequestID = chatRequest.ChatRequestID;
                            }
                        }
                        update.NewChatMessages = chatMessageGrowl.ToArray();
                        update.NewChatRequests = chatRequestGrowl.ToArray();
                    }
                    catch (Exception ex)
                    {
                        ExceptionLogs.LogException(LoginUser.Anonymous, ex, "Main Chat Upate");
                    }
                }
            }
            context.Response.ContentType = "application/json; charset=utf-8";
            context.Response.Write(JsonConvert.SerializeObject(update));
        }