예제 #1
0
        public List <PrivateChatMessage> GetScrollingChatData(string fromid, string toid, int start = 10, int length = 1)
        {
            takeCounter = (length * start);       // 20
            skipCounter = ((length - 1) * start); // 10
            List <PrivateChatMessage> msg = new List <PrivateChatMessage>();
            var uow = new XpoDAO().ProvideUnitOfWork();
            var ChatPrivateMessageMasters = new XPCollection <ChatPrivateMessageMaster>(uow);
            var ChatPrivateMessageDetails = new XPCollection <ChatPrivateMessageDetail>(uow);
            var v = (from a in ChatPrivateMessageMasters
                     join b in ChatPrivateMessageDetails on a.EmailID equals b.MasterEmailID into cc
                     from c in cc
                     where (c.MasterEmailID.Equals(fromid) && c.ChatToEmailID.Equals(toid)) || (c.MasterEmailID.Equals(toid) && c.ChatToEmailID.Equals(fromid))
                     //orderby c.ID descending
                     select new
            {
                UserName = a.UserName,
                Message = c.Message,
                //ID = c.ID
            }).Take(takeCounter).Skip(skipCounter).ToList();

            foreach (var a in v)
            {
                var res = new PrivateChatMessage()
                {
                    userName = a.UserName,
                    message  = a.Message
                };
                msg.Add(res);
            }
            return(msg);
        }
예제 #2
0
        private void AddPrivateMessageinCache(string fromEmail, string chatToEmail, string userName, string message)
        {
            var uow = new XpoDAO().ProvideUnitOfWork();
            var ChatPrivateMessageMasters = new XPCollection <ChatPrivateMessageMaster>(uow);
            // Save master
            var master = ChatPrivateMessageMasters.ToList().Where(a => a.EmailID.Equals(fromEmail)).ToList();

            if (master.Count == 0)
            {
                var result = new ChatPrivateMessageMaster(uow)
                {
                    EmailID  = fromEmail,
                    UserName = userName
                };
                ChatPrivateMessageMasters.Add(result);
                uow.CommitChanges();
            }

            // Save details
            var ChatPrivateMessageDetails = new XPCollection <ChatPrivateMessageDetail>(uow);
            var resultDetails             = new ChatPrivateMessageDetail(uow)
            {
                MasterEmailID = fromEmail,
                ChatToEmailID = chatToEmail,
                Message       = message
            };

            ChatPrivateMessageDetails.Add(resultDetails);
            uow.CommitChanges();
        }
예제 #3
0
        public void Connect(string userName, string email)
        {
            emailIDLoaded = email;
            var id     = Context.ConnectionId;
            var uow    = new XpoDAO().ProvideUnitOfWork();
            var result = new XPCollection <ChatUserDetail>(uow);
            var item   = result.FirstOrDefault(x => x.EmailID == email);

            if (item != null)
            {
                uow.Delete(item);
                //result.Remove(item);
                uow.CommitChanges();
                // Disconnect
                Clients.All.onUserDisconnectedExisting(item.ConnectionId, item.UserName);
            }
            var Users = result;

            if (Users.Where(x => x.EmailID == email).ToList().Count == 0)
            {
                var userdetails = new ChatUserDetail(uow)
                {
                    ConnectionId = id,
                    UserName     = userName,
                    EmailID      = email
                };
                uow.CommitChanges();;

                // send to caller
                var connectedUsers = result;
                var CurrentMessage = new XPCollection <ChatMessageDetail>(uow);// dc.ChatMessageDetails.ToList();
                List <TempChatMessageDetail> lstTempChatMessageDetail = new List <TempChatMessageDetail>();
                foreach (var currentMessage in CurrentMessage)
                {
                    lstTempChatMessageDetail.Add(new TempChatMessageDetail()
                    {
                        EmailID  = currentMessage.EmailID,
                        Message  = currentMessage.Message,
                        UserName = currentMessage.UserName
                    });
                }


                List <TempChatUserDetail> lstTempChatUserDetail = new List <TempChatUserDetail>();
                foreach (var user in connectedUsers)
                {
                    var tempChatUserDetail = new TempChatUserDetail()
                    {
                        ConnectionId = user.ConnectionId,
                        EmailID      = user.EmailID,
                        UserName     = user.UserName
                    };
                    lstTempChatUserDetail.Add(tempChatUserDetail);
                }
                Clients.Caller.onConnected(id, userName, lstTempChatUserDetail, lstTempChatMessageDetail);//connectedUsers
            }

            // send to all except caller client
            Clients.AllExcept(id).onNewUserConnected(id, userName, email);
        }
예제 #4
0
        public List <PrivateChatMessage> GetPrivateMessage(string fromid, string toid, int take)
        {
            List <PrivateChatMessage> msg = new List <PrivateChatMessage>();
            var uow                       = new XpoDAO().ProvideUnitOfWork();
            var ChatUserDetails           = new XPCollection <ChatPrivateMessageMaster>(uow);
            var ChatPrivateMessageDetails = new XPCollection <ChatPrivateMessageDetail>(uow);
            var v = (from a in ChatUserDetails
                     join b in ChatPrivateMessageDetails on a.EmailID equals b.MasterEmailID into cc
                     from c in cc
                     where (c.MasterEmailID.Equals(fromid) && c.ChatToEmailID.Equals(toid)) || (c.MasterEmailID.Equals(toid) && c.ChatToEmailID.Equals(fromid))
                     //orderby c.ID descending
                     select new
            {
                UserName = a.UserName,
                Message = c.Message,
                //ID = c.ID
            }).Take(take).ToList();

            //v = v.OrderBy(s => s.ID).ToList();

            foreach (var a in v)
            {
                var res = new PrivateChatMessage()
                {
                    userName = a.UserName,
                    message  = a.Message
                };
                msg.Add(res);
            }
            return(msg);
        }
예제 #5
0
        private void AddAllMessageinCache(string userName, string message)
        {
            var uow = new XpoDAO().ProvideUnitOfWork();
            var ChatMessageDetails = new XPCollection <ChatMessageDetail>(uow);
            var messageDetail      = new ChatMessageDetail(uow)
            {
                UserName = userName,
                Message  = message,
                EmailID  = emailIDLoaded
            };

            ChatMessageDetails.Add(messageDetail);
            uow.CommitChanges();
        }
예제 #6
0
        public ActionResult About()
        {
            HttpCookie ThisLanguage = System.Web.HttpContext.Current.Request.Cookies["NOPLanguage"];
            var        aboutUsModel = new AboutUsModel();

            if (ThisLanguage != null)
            {
                var xpoDAO            = new XpoDAO();
                var provideUnitOfWork = xpoDAO.ProvideUnitOfWork();
                var ResultData        = provideUnitOfWork.FindObject <About>(null);
                switch (ThisLanguage.Value)
                {
                case "en":
                {
                    aboutUsModel.Language    = "en";
                    aboutUsModel.BannerTitle = ResultData.TitleP01;
                    break;
                }

                case "vi":
                {
                    aboutUsModel.Language    = "vi";
                    aboutUsModel.BannerTitle = ResultData.TitleVNP01;
                    break;
                }

                default:
                {
                    aboutUsModel.Language    = "en";
                    aboutUsModel.BannerTitle = ResultData.TitleP01;
                    break;
                }
                }
            }
            else
            {
            }
            return(View("AboutUs", aboutUsModel));


            var dao    = new XpoDAO();
            var uow    = dao.ProvideUnitOfWork();
            var result = uow.FindObject <About>(null);

            string       language = "vi";
            AboutUsModel model    = new AboutUsModel();

            return(View("AboutUs", model));
        }
예제 #7
0
        public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
        {
            var uow    = new XpoDAO().ProvideUnitOfWork();
            var result = new XPCollection <ChatUserDetail>(uow);
            var item   = result.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);

            if (item != null)
            {
                //result.Remove(item);
                uow.Delete(item);
                uow.CommitChanges();

                var id = Context.ConnectionId;
                Clients.All.onUserDisconnected(id, item.EmailID);
                //Clients.All.onUserDisconnected(id, item.UserName);
            }

            return(base.OnDisconnected(stopCalled));
        }
예제 #8
0
        public void SendPrivateMessage(string toUserId, string message, string status)
        {
            string fromUserId      = Context.ConnectionId;
            var    uow             = new XpoDAO().ProvideUnitOfWork();
            var    ChatUserDetails = new XPCollection <ChatUserDetail>(uow);
            var    toUser          = ChatUserDetails.FirstOrDefault(x => x.ConnectionId == toUserId);
            var    fromUser        = ChatUserDetails.FirstOrDefault(x => x.ConnectionId == fromUserId);

            if (toUser != null && fromUser != null)
            {
                if (status == "Click")
                {
                    AddPrivateMessageinCache(fromUser.EmailID, toUser.EmailID, fromUser.UserName, message);
                }

                // send to
                Clients.Client(toUserId).sendPrivateMessage(fromUserId, fromUser.UserName, message, fromUser.EmailID, toUser.EmailID, status, fromUserId);

                // send to caller user
                Clients.Caller.sendPrivateMessage(toUserId, fromUser.UserName, message, fromUser.EmailID, toUser.EmailID, status, fromUserId);
            }
        }