Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        public LiveChatView(INavigation _navigation, UserModel _userLogged, UserModel _selectedIt)
        {
            InitializeComponent();

            BindingContext = new LiveChatViewModel(_navigation, _userLogged, _selectedIt);
        }
Ejemplo n.º 5
0
        /// <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);
        }