//Поиск пользователей private void User_Search_Changed(object sender, RoutedEventArgs e) { try { //Предварительно очищаем список User_List.Items.Clear(); //Открываем соединение connection.Open(); //Строка запроса на поиск пользователей в БД string sql_cmd = "SELECT server_chats.users.ID, server_chats.users.User_Name, server_chats.users.User_Nickname FROM server_chats.users WHERE server_chats.users.User_Name=@NAME"; //Создаём команду для запроса в БД MySqlCommand cmd = connection.CreateCommand(); cmd.CommandText = sql_cmd; //Добавляем параметры в команду MySqlParameter name_parameter = new MySqlParameter("@NAME", MySqlDbType.VarChar); name_parameter.Value = User_Search.Text; cmd.Parameters.Add(name_parameter); //... using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { //Создаём кастомизированный item для списка пользователей и добавляем ему свойства Chat_List user = new Chat_List(); IDFriend = int.Parse(reader.GetString(0)); user.Name = reader.GetString(1); user.ID_Friend = IDFriend; user.Nickname = "@" + reader.GetString(2); User_List.Items.Add(user); Friend_Nick = reader.GetString(2); } } } } catch (Exception ex) { //Выводим сообщения об ошибке MessageBox.Show(ex.ToString()); } finally { //Закрываем соединение connection.Close(); if (User_List.Items.Count == 0) { IDFriend = -1; Friend_Nick = "null"; } } }
//Метод обновления списка чатов public void Update_Dialog_List() { try { //Открываем соединение connection.Open(); //Команда для БД string sql_cmd = "SELECT * FROM server_chats.chats WHERE (ID_User_1=@ID OR ID_User_2=@ID);"; //Создаём команду запроса MySqlCommand cmd = connection.CreateCommand(); cmd.CommandText = sql_cmd; //Добавляем параметры MySqlParameter id_parameter = new MySqlParameter("@ID", MySqlDbType.Int32); id_parameter.Value = IDuser; cmd.Parameters.Add(id_parameter); //Вот это обязательно Chat_list.Items.Clear(); //... using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { Chat_List list = new Chat_List(); list.ID = int.Parse(reader.GetString(0)); list.Name = reader.GetString(1); if (int.Parse(reader.GetString(2)) == IDuser) { list.ID_Friend = int.Parse(reader.GetString(3)); } else { list.ID_Friend = int.Parse(reader.GetString(2)); } Chat_list.Items.Add(list); } } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { //Закрываем соединение connection.Close(); } }
//Добавление пользователя в друзья private void AddToFriend_Click(object sender, RoutedEventArgs e) { try { //Объект item'а, но только первого (если будут с одинаковыми именами, тогда будут проблемы) //Нужно изменить функцию поиска с имени на никнейм Chat_List user = (Chat_List)User_List.Items[0]; //Открываем соединение connection.Open(); //Строка запроса на добавление пользователя в список друзей string sql_cmd = "INSERT INTO server_chats.friend VALUES (@MYID, @IDFRIEND, @FRIENDNAME);"; //Команда запроса MySqlCommand cmd = connection.CreateCommand(); cmd.CommandText = sql_cmd; //Добавляем параметры MySqlParameter myID = new MySqlParameter("@MYID", MySqlDbType.Int32); myID.Value = IDuser; cmd.Parameters.Add(myID); MySqlParameter friendID = new MySqlParameter("@IDFRIEND", MySqlDbType.Int32); friendID.Value = user.ID_Friend; cmd.Parameters.Add(friendID); MySqlParameter name = new MySqlParameter("@FRIENDNAME", MySqlDbType.VarChar); name.Value = user.Name; cmd.Parameters.Add(name); //Запускаем команду cmd.ExecuteNonQuery(); //После успешного выполнения команды, будет дополнен список друзей Friend_List.Items.Add(user); Pop_Up_Notification(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { //Закрываем соединение connection.Close(); } }
public void Update_Friend_List() { try { //Предварительно очищаем список Friend_List.Items.Clear(); //Открываем соединение connection.Open(); //Строка запроса для выборки друзей авторизованного пользователя string sql_cmd = "SELECT * FROM server_chats.friend WHERE ID_User = @MYID;"; //Команда запроса MySqlCommand cmd = connection.CreateCommand(); cmd.CommandText = sql_cmd; //Добавляем параметры MySqlParameter myID = new MySqlParameter("@MYID", MySqlDbType.Int32); myID.Value = IDuser; cmd.Parameters.Add(myID); using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { Chat_List user = new Chat_List(); user.ID_Friend = int.Parse(reader.GetString(1)); user.Name = reader.GetString(2); Friend_List.Items.Add(user); } } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { //Закрываем соединение connection.Close(); } }
//Удаление пользователя из друзей private void DeleteFromFriend_Click(object sender, RoutedEventArgs e) { try { Button btn = sender as Button; //Открываем соединение connection.Open(); //Получаем объект нашего пользователя (произойдёт только при выборе элемента сначала ) //значит нужно кнопку сделать недоступной, пока не выбирут его Chat_List user = (Chat_List)Friend_List.SelectedItem; //Строка запроса на удаление пользователя из друзей string sql_cmd = "DELETE FROM server_chats.friend WHERE ID_User = @MYID AND ID_Friend = @IDFRIEND"; //Создаём команду запроса MySqlCommand cmd = connection.CreateCommand(); cmd.CommandText = sql_cmd; //Добавляем параметры MySqlParameter myID = new MySqlParameter("@MYID", MySqlDbType.Int32); myID.Value = IDuser; cmd.Parameters.Add(myID); MySqlParameter friendID = new MySqlParameter("@IDFRIEND", MySqlDbType.Int32); friendID.Value = int.Parse(btn.Content.ToString()); cmd.Parameters.Add(friendID); cmd.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { //Закрываем соединение connection.Close(); //Обновляем список друзей Update_Friend_List(); } }
//Открытие диалога private async void Chat_list_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { IDFriend = -1; Chat_List item = (Chat_List)Dispatcher.Invoke(() => Chat_list.SelectedItem); await Task.Run(() => OpenChat(item.ID_Friend)); }