Example #1
0
        public IEnumerable <PrivateChatMessage> GetScrollingChatData(string fromid, string toid, int start = 10, int length = 1)
        {
            takeCounter = (length * start);       // 20
            skipCounter = ((length - 1) * start); // 10

            using (SignalREntities dc = new SignalREntities())
            {
                var msg = new List <PrivateChatMessage>();
                var v   = (from a in dc.tblChatPrivateMessageMasters
                           join b in dc.tblChatPrivateMessageDetails 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);
            }
        }
Example #2
0
        private void AddPrivateMessageinCache(string fromEmail, string chatToEmail, string userName, string message)
        {
            using (SignalREntities dc = new SignalREntities())
            {
                // Save master
                var master = dc.tblChatPrivateMessageMasters.ToList().Where(a => a.EmailID.Equals(fromEmail)).ToList();
                if (master.Count == 0)
                {
                    var result = new tblChatPrivateMessageMaster
                    {
                        EmailID  = fromEmail,
                        UserName = userName
                    };
                    dc.tblChatPrivateMessageMasters.Add(result);
                    dc.SaveChanges();
                }

                // Save details
                var resultDetails = new tblChatPrivateMessageDetail
                {
                    MasterEmailID = fromEmail,
                    ChatToEmailID = chatToEmail,
                    Message       = message
                };
                dc.tblChatPrivateMessageDetails.Add(resultDetails);
                dc.SaveChanges();
            }
        }
Example #3
0
        public IEnumerable <PrivateChatMessage> GetPrivateMessage(string fromid, string toid, int take)
        {
            using (SignalREntities dc = new SignalREntities())
            {
                var msg = new List <PrivateChatMessage>();

                var v = (from a in dc.tblChatPrivateMessageMasters
                         join b in dc.tblChatPrivateMessageDetails 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);
            }
        }
    public void AddComment(string Comment)
    {
        var     Context = new SignalREntities();
        Comment com     = new Comment();

        com.Comment1 = Comment;
        Context.Comments.Add(com);
        Context.SaveChanges();

        Clients.All.AddNewComment(Comment);
    }
Example #5
0
 private void AddAllMessageinCache(string userName, string message)
 {
     using (SignalREntities dc = new SignalREntities())
     {
         var messageDetail = new tblChatMessageDetail
         {
             UserName = userName,
             Message  = message,
             EmailID  = emailIDLoaded
         };
         dc.tblChatMessageDetails.Add(messageDetail);
         dc.SaveChanges();
     }
 }
Example #6
0
        public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
        {
            using (SignalREntities dc = new SignalREntities())
            {
                var item = dc.tblChatUserDetails.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);
                if (item != null)
                {
                    dc.tblChatUserDetails.Remove(item);
                    dc.SaveChanges();

                    var id = Context.ConnectionId;
                    Clients.All.onUserDisconnected(id, item.UserName);
                }
            }
            return(base.OnDisconnected(stopCalled));
        }
Example #7
0
        public static void GetData()
        {
            string con = ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString;

            using (var connection = new SqlConnection(con))
            {
                connection.Open();
                SignalREntities db    = new SignalREntities();
                string          uid   = HttpContext.Current.User.Identity.GetUserId();
                var             query = db.Heartbeats as DbQuery <Heartbeat>;
                using (SqlCommand command = new SqlCommand(@"SELECT [NotificationId]
                                                              ,[UserName]
                                                              ,[UserId]
                                                              ,[NotificationText]
                                                              ,[NotificationDate]
                                                          FROM [dbo].[Notification]" /*@"SELECT  [ProductID],[Name],[UnitPrice],[Quantity] FROM [SignalRDemo].[dbo].[Products]"*/, connection))
                {
                    // Make sure the command object does not already have
                    // a notification object associated with it.
                    command.Notification = null;
                    SqlDependency.Start(con);
                    SqlDependency dependency = new SqlDependency(command);
                    dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

                    if (connection.State == ConnectionState.Closed)
                    {
                        connection.Open();
                    }

                    using (var reader = command.ExecuteReader())
                    { }
                    //return reader.Cast<IDataRecord>()
                    //    .Select(x => new Notification()
                    //    {
                    //        NotificationId = x.GetInt64(0),
                    //        UserName = x.GetString(1),
                    //        NotificationDate = x.GetDateTime(4),
                    //        Notification1 = x.GetString(3),
                    //        UserId = x.GetString(2),
                    //    }).Where(x => x.UserId == uid).ToList();
                }
            }
        }
Example #8
0
        public void Connect(string userName, string userEmail)
        {
            //
            emailIDLoaded = userEmail;
            var id = Context.ConnectionId;

            using (SignalREntities dc = new SignalREntities())
            {
                var item = dc.tblChatUserDetails.FirstOrDefault(x => x.EmailID == userEmail);
                if (item != null)
                {
                    dc.tblChatUserDetails.Remove(item);
                    dc.SaveChanges();

                    // Disconnect
                    Clients.All.onUserDisconnectedExisting(item.ConnectionId, item.UserName);
                }

                var Users = dc.tblChatUserDetails.ToList();
                if (Users.Where(x => x.EmailID == userEmail).ToList().Count == 0)
                {
                    var userdetails = new tblChatUserDetail
                    {
                        ConnectionId = id,
                        UserName     = userName,
                        EmailID      = userEmail
                    };
                    dc.tblChatUserDetails.Add(userdetails);
                    dc.SaveChanges();

                    // send to caller
                    var connectedUsers = dc.tblChatUserDetails.ToList();
                    var CurrentMessage = dc.tblChatMessageDetails.ToList();
                    Clients.Caller.onConnected(id, userName, connectedUsers, CurrentMessage);
                }

                // send to all except caller client
                Clients.AllExcept(id).onNewUserConnected(id, userName, userEmail);
            }
        }
Example #9
0
        public void SendPrivateMessage(string toUserId, string message, string status, DateTime dateTime)
        {
            string fromUserId = Context.ConnectionId;

            using (SignalREntities dc = new SignalREntities())
            {
                var chatUserDetails = dc.tblChatUserDetails;
                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);
                }
            }
        }