/// <summary> /// /// </summary> /// <param name="portalID"></param> /// <param name="visitorGUID"></param> /// <returns></returns> public object JoinVisitor(int portalID, string visitorGUID) { Groups.Add(Context.ConnectionId, portalID + "-" + visitorGUID); var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", portalID, "-1")); Requires.NotNegative("moduleID", moduleID); var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; var currentLiveChat = LiveChatManager.Instance.GetCurrentLiveChatByVisitor(portalID, visitorGUID); LiveChatViewModel livechat = null; if (currentLiveChat != null) { if (currentLiveChat.LastMessageDate != null && (DateTime.Now - currentLiveChat.LastMessageDate).TotalHours < 10) // in ghesmat baraye in ast ke agar az akharin post visitor bish az 10 saat gozashte bashad live chat ra neshan nadahad { livechat = GetLiveChatViewModel(currentLiveChat); } else { LiveChatManager.Instance.CloseLiveChat(currentLiveChat.LiveChatID, false); } } return(livechat); }
/// <summary> /// /// </summary> /// <param name="objLiveChatInfo"></param> /// <returns></returns> private LiveChatViewModel GetLiveChatViewModel(LiveChatInfo objLiveChatInfo) { var livechat = new LiveChatViewModel(); livechat.LiveChatID = objLiveChatInfo.LiveChatID; livechat.PortalID = objLiveChatInfo.PortalID; var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; //Visitor livechat.Visitor = new LiveChatVisitorViewModel() { UserID = objLiveChatInfo.VisitorUserID, VisitorGUID = objLiveChatInfo.VisitorGUID, DisplayName = objLiveChatInfo.VisitorName, Email = objLiveChatInfo.VisitorEmail, IP = objLiveChatInfo.VisitorIP, UserAgent = objLiveChatInfo.VisitorUserAgent, Avatar = (Settings["VisitorDefaultAvatar"] != null ? Settings["VisitorDefaultAvatar"].ToString() : string.Empty) }; var visitor = VisitorsOnlineApi.Instance.GetVisitorByGUID(objLiveChatInfo.PortalID, objLiveChatInfo.VisitorGUID); if (visitor != null) { if (visitor.UserID > 0) { livechat.Visitor.Avatar = DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + visitor.UserID); } livechat.Visitor.LastURL = visitor.LastURL; livechat.Visitor.ReferrerURL = visitor.ReferrerURL; livechat.Visitor.PastVisits = visitor.TotalConnections; livechat.Visitor.OnlineDate = visitor.OnlineDate; } //Departments livechat.Departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartmentsViewModel(objLiveChatInfo.PortalID, objLiveChatInfo.LiveChatID); //Agents livechat.Agents = LiveChatAgentManager.Instance.GetLiveChatAgentsViewModel(objLiveChatInfo.PortalID, objLiveChatInfo.LiveChatID); livechat.AgentDefaultAvatar = (Settings["AgentDefaultAvatar"] != null ? Settings["AgentDefaultAvatar"].ToString() : string.Empty); //Messages var messages = LiveChatMessageManager.Instance.GetMessages(objLiveChatInfo.LiveChatID); livechat.Messages = messages; livechat.Rate = objLiveChatInfo.Rate; livechat.IsClosed = objLiveChatInfo.IsClosed; return(livechat); }
public ActionResult LiveChat() { /*NOTE: This requires the user to be logged in.... */ // chats the last 20 chats for today var data = new LiveChatViewModel(); if (UserSession.Person != null) { data.EncryptedPersonID = Crypto.EncryptID(UserSession.Person.ID); data.IsLoggedIn = true; } else { data.IsLoggedIn = false; } var sql = new Sql("select top 20 p.FirstName + ", " ".SqlizeText(), "+ p.lastname as FullName, lc.Post, Convert(varchar, lc.DateAdded,103) as Date, convert(varchar, lc.DateAdded, 108) as Time from LiveChat lc inner join Person p on p.PersonID = lc.PersonID Order by lc.DateAdded desc"); var chatList = sql.LoadPooList <LatestChatList>(); data.ChatList = chatList; data.ChatRefresh = 2000; //(data.ChatList.Count > 0)?2000:30000; data.LastUpdate = Fmt.DateTime(DateTime.Now, Fmt.DateTimePrecision.Millisecond); return(View(data)); }
public LiveChatView(INavigation _navigation, UserModel _userLogged, UserModel _selectedIt) { InitializeComponent(); BindingContext = new LiveChatViewModel(_navigation, _userLogged, _selectedIt); }
/// <summary> /// /// </summary> /// <param name="livechat"></param> /// <returns></returns> public int StartLiveChatByVisitor(LiveChatViewModel livechat) { if (LiveChatManager.Instance.hasVisitorOpenedLiveChat(livechat.PortalID, livechat.Visitor.VisitorGUID)) { return(0); } var visitor = VisitorsOnlineApi.Instance.GetVisitorByGUID(livechat.PortalID, livechat.Visitor.VisitorGUID); var objLiveChatInfo = new LiveChatInfo() { PortalID = livechat.PortalID, VisitorGUID = livechat.Visitor.VisitorGUID, VisitorName = livechat.Visitor.DisplayName, VisitorEmail = livechat.Visitor.Email, VisitorUserID = visitor.UserID, VisitorIP = visitor.IP, VisitorUserAgent = visitor.UserAgent, VisitorMessage = livechat.Message, CreateDate = DateTime.Now, CloseDate = DateTime.MaxValue, IsClosed = false, }; int livechatID = LiveChatManager.Instance.AddLiveChat(objLiveChatInfo); LiveChatDepartmentManager.Instance.AddLiveChatDepartment(new LiveChatDepartmentInfo() { LiveChatID = livechatID, DepartmentID = livechat.Departments.First().DepartmentID, CreateDate = DateTime.Now }); //create messages var objLiveChatMessageInfo = new LiveChatMessageInfo() { LiveChatID = livechatID, SentBy = MessageSentBy.System, CreateDate = DateTime.Now, MessageType = MessageType.Text, Message = "Chat started", }; LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); if (!string.IsNullOrEmpty(livechat.Message)) { objLiveChatMessageInfo = new LiveChatMessageInfo() { LiveChatID = livechatID, SentBy = MessageSentBy.Visitor, CreateDate = DateTime.Now, MessageType = MessageType.Text, Message = livechat.Message }; LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); } livechat = GetLiveChatViewModel(objLiveChatInfo); //ersale live chat kamel shode be khode visitor(darkhast konande chat) Clients.Group(livechat.PortalID + "-" + visitor.VisitorGUID).startLiveChat(livechat); //send live chat request to agents var department = livechat.Departments.First(); Clients.Group(DepartmentAgentsGroupName + department.DepartmentID).incomingLiveChat(livechatID, visitor.VisitorGUID, livechat.Message, "add"); var context = GlobalHost.ConnectionManager.GetHubContext <VisitorsOnlineHub>(); context.Clients.Group("MyDnnLiveChatAgents-" + department.DepartmentID).invokeScript(string.Format("mydnnLiveChatRequests({0},'add');", livechatID)); //update visitor info in visitor list visitor.DisplayName = livechat.Visitor.DisplayName; visitor.Email = livechat.Visitor.Email; //eslah shavad ///VisitorsOnlineApi.Instance.UpdateVisitorOnline(livechat.PortalID, visitor.VisitorGUID, visitor.UserName, visitor.DisplayName, visitor.Email, visitor.LastURL, Context.ConnectionId, true); //var context = GlobalHost.ConnectionManager.GetHubContext<VisitorsOnlineHub>(); ///context.Clients.Group("MyDnnVisitorsOnline").updateVisitorInfo(visitor); return(livechatID); }