예제 #1
0
 //Добавление нового сообщения
 private void AddNewMessage(object sender, RoutedEventArgs e)
 {
     contacts[ContactListIndex].MessageHistory.Add(new Message(sendMessage_textBox.Text, DateTime.Now.ToString("t"), true));
     chatBody_listBox.ItemsSource = null;                                      //обнуляем listbox, иначе не работает следующая строка
     chatBody_listBox.ItemsSource = contacts[ContactListIndex].MessageHistory; //обновление списка сообщений в форме
     chatBody_scroll.ScrollToEnd();
     Net.SendMessage($"NewMessage{MyContact.userName_textBlock.Text}&{contacts[ContactListIndex].userName_textBlock.Text}&{sendMessage_textBox.Text}&{DateTime.Now.ToString("d")}&{DateTime.Now.ToString("t")}", stream);
 }
예제 #2
0
        public Messanger(string login)
        {
            InitializeComponent();
            contacts = new List <Contact>();
            DBconnection dBconnection = new DBconnection();

            dBconnection.ConnectDB();
            //Заполнение данных MyContact
            string query  = $"SELECT DISTINCT * FROM Account WHERE login = '******'";
            var    result = dBconnection.SelectQuery(query);

            if (result.Read())
            {
                string name   = result.GetString(1);
                string status = result.GetString(4);
                MyContact.userName_textBlock.Text  = name;
                MyContact.userTitle_textBlock.Text = status;
            }
            dBconnection.ForceClose();
            //Заполнение ContactList
            List <string> contactsString = new List <string>();

            query = $"SELECT * FROM Messages WHERE sender = '{login}' OR recepient = '{login}'";
            dBconnection.ConnectDB();
            result = dBconnection.SelectQuery(query);
            while (result.Read())
            {
                if (result.GetString(1) == login)
                {
                    if (!contactsString.Contains(result.GetString(2)))
                    {
                        contactsString.Add(result.GetString(2));
                    }
                }
                else if (result.GetString(2) == login)
                {
                    if (!contactsString.Contains(result.GetString(1)))
                    {
                        contactsString.Add(result.GetString(1));
                    }
                }
            }
            dBconnection.ForceClose();
            //Добавление контактам сообщения
            List <Message> tempMessages = new List <Message>();

            foreach (var contactString in contactsString)
            {
                dBconnection.ConnectDB();
                query  = $"SELECT * FROM Messages WHERE (sender = '{contactString}' AND recepient = '{login}') OR (sender = '{login}' AND recepient = '{contactString}');";
                result = dBconnection.SelectQuery(query);
                while (result.Read())
                {
                    if (result.GetString(1) == contactString)
                    {
                        tempMessages.Add(new Message(result.GetString(3), result.GetString(5).Substring(0, 5), false));
                    }
                    else if (result.GetString(2) == contactString)
                    {
                        tempMessages.Add(new Message(result.GetString(3), result.GetString(5).Substring(0, 5), true));
                    }
                }
                contacts.Add(new Contact(new List <Message>(tempMessages), contactString, "")); //создание контакта с сообщениями
                tempMessages.Clear();
                dBconnection.ForceClose();
            }
            ContactList_listBox.ItemsSource = contacts; //обновление списка контактов на форме
            //Подключение к серверу и передача ему login
            client = new TcpClient();
            client.Connect(host, port);  //подключение клиента
            stream = client.GetStream(); // получаем поток
            Net.SendMessage(login, stream);
            ReceiveMessages(stream, client);
            Label_ServerConnect.Foreground = Brushes.Green;
            Label_ServerConnect.Content    = "Сервер подключен";
        }