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); }
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); }
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)); }
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"); } }
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); }
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); } }
public static void RequestInvite(int chatID, int userID) { ChatRequests.RequestInvite(UserSession.LoginUser, chatID, userID); }
public static void RequestTransfer(int chatID, int userID) { ChatRequests.RequestTransfer(UserSession.LoginUser, chatID, userID); }
public static int AcceptRequest(int chatRequestID) { int chatID = ChatRequests.AcceptRequest(UserSession.LoginUser, UserSession.LoginUser.UserID, chatRequestID, HttpContext.Current.Request.UserHostAddress); return(chatID); }
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)); }