Ejemplo n.º 1
0
        public void printPrivateConversation(object privateConversation)
        {
            PrivateChat messageReceived = (PrivateChat)privateConversation;

            Console.WriteLine("\t\t*** Last conversation ***");
            messageReceived.printTheConversations();

            //Search for the client of PV Chat
            while (true)
            {
                Message msg = Net.receiveMessage(comm.GetStream());
                if (msg.GetType().Name.Equals("MessagePrivate"))
                {
                    MessagePrivate mp = (MessagePrivate)msg;

                    if (mp.PvChat.UsersChat[0].Id_user == messageReceived.UsersChat[0].Id_user || mp.PvChat.UsersChat[0].Id_user == messageReceived.UsersChat[1].Id_user)
                    {
                        if (mp.PvChat.UsersChat[1].Id_user == messageReceived.UsersChat[0].Id_user || mp.PvChat.UsersChat[1].Id_user == messageReceived.UsersChat[1].Id_user)
                        {
                            Console.WriteLine("------------------------------------------------------");
                            mp.PvChat.printTheConversations();
                            Console.WriteLine("Send a message : ");
                        }
                    }
                }
                else if (msg.GetType().Name.Equals("MessageNavigation"))
                {
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        public void displayUserChat(object newPrivateChat)
        {
            PrivateChat messageReceived = (PrivateChat)newPrivateChat;

            messageReceived.printTheConversations();

            while (true)
            {
                MessagePrivate clientMessage = (MessagePrivate)Net.receiveMessage(comm.GetStream());
                Conversation   conv          = new Conversation(clientMessage.Message, clientMessage.UserSender);

                messageReceived.Conversation.Add(conv);
                messageReceived.Number_messages += 1;

                //Add the client associated with tcpClient
                foreach (KeyValuePair <User, List <TcpClient> > myClients in userTcps)
                {
                    foreach (User u in messageReceived.UsersChat)
                    {
                        if (myClients.Key.Login.Equals(u.Login))
                        {
                            foreach (TcpClient tcp in myClients.Value)
                            {
                                Net.sendMessage(tcp.GetStream(), new MessagePrivate(messageReceived));
                                Console.WriteLine("\n *** Sending to " + tcp.Client.RemoteEndPoint + " ***");
                                Console.WriteLine("Message received : " + clientMessage.Message + "\nfrom : " + clientMessage.UserSender.Login);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void displayPrivateChat()
        {
            MessagePrivate mp    = (MessagePrivate)Net.receiveMessage(comm.GetStream());
            PrivateChat    newMp = mp.PvChat;

            Console.WriteLine("\t\t*****************************************");
            Console.WriteLine("\t\t********** " + newMp.Title + "***********");
            Console.WriteLine("\t\t*****************************************");

            Thread printPrivateConversationThread = new Thread(new ParameterizedThreadStart(printPrivateConversation));

            printPrivateConversationThread.Start(newMp);

            Thread sendPrivateMessageThread = new Thread(new ParameterizedThreadStart(sendPrivateMessage));

            sendPrivateMessageThread.Start(newMp);
        }
Ejemplo n.º 4
0
        public void displayUserChat(object newPrivateChat)
        {
            PrivateChat messageReceived = (PrivateChat)newPrivateChat;

            messageReceived.printTheConversations();

            while (true)
            {
                Message msg = Net.receiveMessage(comm.GetStream());

                if (msg.GetType().Name.Equals("MessagePrivate"))
                {
                    MessagePrivate clientMessage = (MessagePrivate)msg;
                    Conversation   conv          = new Conversation(clientMessage.Message, clientMessage.UserSender);

                    messageReceived.Conversation.Add(conv);
                    messageReceived.Number_messages += 1;

                    //search the client associated with tcpClient
                    foreach (KeyValuePair <User, List <TcpClient> > myClients in userTcps)
                    {
                        foreach (User u in messageReceived.UsersChat)
                        {
                            if (myClients.Key.Login.Equals(u.Login))
                            {
                                foreach (TcpClient tcp in myClients.Value)
                                {
                                    Net.sendMessage(tcp.GetStream(), new MessagePrivate(messageReceived));
                                    Console.WriteLine("\n *** Sending to " + tcp.Client.RemoteEndPoint + " ***");
                                    Console.WriteLine("Message received : " + clientMessage.Message + "\nfrom : " + clientMessage.UserSender.Login);
                                }
                            }
                        }
                    }
                }
                else if (msg.GetType().Name.Equals("MessageNavigation"))
                {
                    Console.WriteLine("Exit Private conv for " + user.Login);

                    //Check for the clients we want to remove
                    messageReceived.UsersChat.Remove(user);
                    Net.sendMessage(comm.GetStream(), new MessageNavigation(user, "-1"));
                    break;
                }
            }
        }
Ejemplo n.º 5
0
        private void addMessagePrivate(string userId, string message)
        {
            var    hubContext = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext <ChatHub>();
            string id         = HttpContext.User.Identity.GetUserId();
            string fullname   = HttpContext.User.Identity.GetUserFullName();
            string avatar     = HttpContext.User.Identity.GetUserAvatar();

            using (var db = new OZChatDbContext())
            {
                string strDateTime    = String.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now);
                var    messagePrivate = new MessagePrivate()
                {
                    FromID       = id,
                    ReceiveID    = userId,
                    Content      = message,
                    FromFullName = fullname,
                    FromAvatar   = avatar,
                    CreatedDate  = DateTime.Now,
                    StrDateTime  = strDateTime,
                    IsFile       = true
                };

                //Lấy ra user trong list user đang online
                var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == userId);
                var meUser     = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == id);
                //Nếu user đang online\
                var listConnectionReceive = db.Connection.Where(p => p.UserID == userId).ToList();
                var listConnectionSend    = db.Connection.Where(p => p.UserID == id).ToList();
                if (onlineUser != null)
                {
                    // Nếu user đang online và đang tương tác với mình
                    if (CommonStatic.Interactives.FirstOrDefault(p => p.FromID == userId && p.ReceiveID == id) != null)
                    {
                        //hubContext.Clients.Client(meUser.ConnectionId).messagePrivate(messagePrivate, true);
                        //hubContext.Clients.Client(onlineUser.ConnectionId).messagePrivate(messagePrivate, false);
                        for (int i = 0; i < listConnectionSend.Count(); i++)
                        {
                            hubContext.Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                        }

                        for (int i = 0; i < listConnectionReceive.Count; i++)
                        {
                            hubContext.Clients.Client(listConnectionReceive[i].ConnectionID).messagePrivate(messagePrivate, false);
                        }

                        AddUserMessagePrivate(id, userId, false, listConnectionReceive);
                    }
                    // Nếu user đang online nhưng không tương tác với mình.
                    else
                    {
                        //hubContext.Clients.Client(meUser.ConnectionId).messagePrivate(messagePrivate, true);
                        //hubContext.Clients.Client(onlineUser.ConnectionId).notificationMessage(fullname, message);
                        for (int i = 0; i < listConnectionSend.Count(); i++)
                        {
                            hubContext.Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                        }
                        for (int i = 0; i < listConnectionReceive.Count; i++)
                        {
                            hubContext.Clients.Client(listConnectionReceive[i].ConnectionID).notificationMessage(fullname, message);
                        }
                        AddUserMessagePrivate(id, userId, true, listConnectionReceive);
                    }
                }
                // Người mình nhắn tin đang ko online.
                else
                {
                    //hubContext.Clients.Client(meUser.ConnectionId).messagePrivate(messagePrivate, true);
                    for (int i = 0; i < listConnectionSend.Count(); i++)
                    {
                        hubContext.Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                    }
                    var user = db.UserMessagePrivates.FirstOrDefault(p => p.FromUserID == id && p.RecieveUserID == userId);
                    if (user == null)
                    {
                        db.UserMessagePrivates.Add(new UserMessagePrivate {
                            FromUserID = id, RecieveUserID = userId, NewMessage = 0
                        });
                    }
                    else
                    {
                        user.NewMessage += 1;
                    }
                }

                db.MessagePrivates.Add(messagePrivate);
                db.SaveChanges();
                GetAllMessageUser();
            }
        }
Ejemplo n.º 6
0
        public void addMessagePrivate(string userId, string message)
        {
            string id       = Context.User.Identity.GetUserId();
            string fullname = Context.User.Identity.GetUserFullName();
            string avatar   = Context.User.Identity.GetUserAvatar();

            using (var db = new OZChatDbContext())
            {
                string strDateTime    = String.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now);
                var    messagePrivate = new MessagePrivate()
                {
                    FromID       = id,
                    ReceiveID    = userId,
                    Content      = message,
                    FromFullName = fullname,
                    FromAvatar   = avatar,
                    CreatedDate  = DateTime.Now,
                    StrDateTime  = strDateTime,
                    IsFile       = false
                };

                //Lấy ra user trong list user đang online
                var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == userId);
                //Nếu user đang online
                var listConnectionReceive = db.Connection.Where(p => p.UserID == userId).ToList();
                var listConnectionSend    = db.Connection.Where(p => p.UserID == id).ToList();
                if (onlineUser != null)
                {
                    // Nếu user đang online và đang tương tác với mình
                    if (CommonStatic.Interactives.FirstOrDefault(p => p.FromID == userId && p.ReceiveID == id) != null)
                    {
                        for (int i = 0; i < listConnectionSend.Count(); i++)
                        {
                            Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                        }

                        for (int i = 0; i < listConnectionReceive.Count; i++)
                        {
                            Clients.Client(listConnectionReceive[i].ConnectionID).messagePrivate(messagePrivate, false);
                        }
                        AddUserMessagePrivate(id, userId, false, listConnectionReceive);
                    }
                    // Nếu user đang online nhưng không tương tác với mình.
                    else
                    {
                        for (int i = 0; i < listConnectionSend.Count(); i++)
                        {
                            Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                        }
                        for (int i = 0; i < listConnectionReceive.Count; i++)
                        {
                            Clients.Client(listConnectionReceive[i].ConnectionID).notificationMessage(fullname, message);
                        }
                        List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.UserID == userId).ToList();
                        for (var i = 0; i < listFcmConnection.Count; i++)
                        {
                            FcmConnection oFcmConnection = listFcmConnection[i];
                            fcmServer.pushNotificationToUser(oFcmConnection.DeviceToken, fullname, message, id);
                        }
                        AddUserMessagePrivate(id, userId, true, listConnectionReceive);
                    }
                }
                // Người mình nhắn tin đang ko online.
                else
                {
                    for (int i = 0; i < listConnectionSend.Count(); i++)
                    {
                        Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                    }

                    List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.UserID == userId).ToList();
                    for (var i = 0; i < listFcmConnection.Count; i++)
                    {
                        FcmConnection oFcmConnection = listFcmConnection[i];
                        fcmServer.pushNotificationToUser(oFcmConnection.DeviceToken, fullname, message, id);
                    }

                    var user = db.UserMessagePrivates.FirstOrDefault(p => p.FromUserID == id && p.RecieveUserID == userId);
                    if (user == null)
                    {
                        db.UserMessagePrivates.Add(new UserMessagePrivate {
                            FromUserID = id, RecieveUserID = userId, NewMessage = 0
                        });
                    }
                    else
                    {
                        user.NewMessage += 1;
                    }
                }

                db.MessagePrivates.Add(messagePrivate);
                db.SaveChanges();
                //GetAllMessageUser(userId,listConnectionReceive);
            }
        }