123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace CatProject
- {
- /// <summary>
- /// Логика взаимодействия для CatViewPage.xaml
- /// </summary>
- public partial class CatViewPage : Page
- {
- public CatViewPage()
- {
- InitializeComponent();
- CatList.ItemsSource = BaseClass.BaseConnect.CatTable.ToList(); // передаем записи из таблицы БД ListView
- List<BreedTable> breedList = BaseClass.BaseConnect.BreedTable.ToList();
- // программное заполнение выпадающего списка
- CBFilterBreed.Items.Add("Все породы"); // первый элемент выпадающего списка, который сбрасывает фильтрацию
- foreach (BreedTable breed in breedList) // цикл для записи в выпадающий список всех пород котов из БД
- {
- CBFilterBreed.Items.Add(breed.Breed); // выбранное по умолчанию значение в списке с породами котов ("Все породы")
- }
- CBFilterBreed.SelectedIndex = 0;
- }
- void Filter() // метод для одновременной фильтрации, поиска и сортировки
- {
- List<CatTable> catFilter = new List<CatTable>(); // пустой список, который далее будет заполнять элементами, удавлетворяющими условиям фильтрации, поиска и сортировки
- string breed = CBFilterBreed.SelectedValue.ToString(); // выбранное пользователем название породы
- // поиск значений, удовлетворяющих условия фильтра
- if (CBFilterBreed.SelectedIndex!=0)
- {
-
- catFilter = BaseClass.BaseConnect.CatTable.Where(x => x.BreedTable.Breed == breed).ToList();
- }
- else
- {
- catFilter = BaseClass.BaseConnect.CatTable.ToList(); // если выбран пункт "Все породы", то сбрасываем фильтрацию:
- }
- // поиск совпадений по именам котов
- if (!string.IsNullOrWhiteSpace(TBSearch.Text)) // если строка не пустая и если она не состоит из пробелов
- {
- catFilter =catFilter.Where(x => x.CatName.ToLower().Contains(TBSearch.Text.ToLower())).ToList();
- }
- // выбор только котов-мальчиков
- if (CBOnly.IsChecked==true)
- {
- catFilter = catFilter.Where(x => x.idGender == 1).ToList();
- }
- // сортировка
- if (RBUp.IsChecked==true) // позрастанию имени
- {
- catFilter.Sort((x,y)=>x.CatName.CompareTo(y.CatName));
- }
- if (RBDown.IsChecked==true) // по убыванию имени
- {
- catFilter.Sort((x, y) => x.CatName.CompareTo(y.CatName));
- catFilter.Reverse();
- }
- CatList.ItemsSource = catFilter;
- }
- private void TextBlock_Loaded(object sender, RoutedEventArgs e) // загрузка черт характера
- {
- TextBlock tb = (TextBlock)sender; // получаем доступ к TextBlock из шаблона
- int index = Convert.ToInt32(tb.Uid); // получаем числовой Uid элемента списка (в разметке предварительно нужно связать номер ячейки с номером кота в базе данных)
- // ищем в таблице, где хранятся черты характера котов те записи, которые соответсвуют определенному коту
- List<TraitCatTable> TCT = BaseClass.BaseConnect.TraitCatTable.Where(x => x.idCat == index).ToList();
- string str = "";
- // выписывам все черты характера в переменную
- foreach (TraitCatTable t in TCT)
- {
- str += t.TraitTable.Trait + ", ";
- }
- if (str!="")
- tb.Text = str.Substring(0, str.Length - 2);
- }
- private void TextBlock_Loaded_1(object sender, RoutedEventArgs e) // загрузка информации о том, сколько будет денег тратиться на кота
- {
- TextBlock tb = (TextBlock)sender; // получаем доступ к TextBlock из шаблона
- int index = Convert.ToInt32(tb.Uid); // получаем числовой Uid элемента списка (в разметке предварительно нужно связать номер ячейки с номером кота в базе данных)
- // ищем в таблице, где хранятится информация о кормах для кота, которые соответсвуют определенному коту
- List<feedCatTable> FCT = BaseClass.BaseConnect.feedCatTable.Where(x => x.idCat == index).ToList();
- int sum = 0;
- // вычисляем общее количестов денег на кота, для этого умножаем количество корма на цену корма
- foreach (feedCatTable t in FCT)
- {
- sum += t.Feedtable.Price * t.Count;
- }
- tb.Text = "Трата на кота: " + sum.ToString();
- }
- private void AddCat_Click(object sender, RoutedEventArgs e)
- {
- FrameClass.MainFrame.Navigate(new AddPage());
- }
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- Button tb = (Button)sender; // получаем доступ к TextBlock из шаблона
- int index = Convert.ToInt32(tb.Uid); // получаем числовой Uid элемента списка (в разметке предварительно нужно связать номер ячейки с номером кота в базе данных)
- FrameClass.MainFrame.Navigate(new AddPage(index));
- }
- private void Button_Click_1(object sender, RoutedEventArgs e) // удаление кота
- {
- Button tb = (Button)sender; // получаем доступ к TextBlock из шаблона
- int index = Convert.ToInt32(tb.Uid); // получаем числовой Uid элемента списка (в разметке предварительно нужно связать номер ячейки с номером кота в базе данных)
- CatTable catRemove = BaseClass.BaseConnect.CatTable.FirstOrDefault(x=>x.idCat == index);
- switch(MessageBox.Show("Удалить кота???", "RemoveCat", MessageBoxButton.YesNo, MessageBoxImage.Question))
- {
- case MessageBoxResult.Yes:
- BaseClass.BaseConnect.CatTable.Remove(catRemove);
- MessageBox.Show("Кот удален");
- BaseClass.BaseConnect.SaveChanges();
- FrameClass.MainFrame.Navigate(new CatViewPage());
- break;
- case MessageBoxResult.No:
- MessageBox.Show("Кот не удален");
- break;
- }
- }
- // далее во всех обработчиках событий применяем один и тот же метод Filter, который позволяет находить условия, удовлетворяющие всем сразу выбранным параметрам
- private void TBSearch_TextChanged(object sender, TextChangedEventArgs e)
- {
- Filter();
- }
- private void CBFilterBreed_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- Filter();
- }
- private void CBOnly_Checked(object sender, RoutedEventArgs e)
- {
- Filter();
- }
- private void CBOnly_Unchecked(object sender, RoutedEventArgs e)
- {
- Filter();
- }
- private void RBUp_Checked(object sender, RoutedEventArgs e)
- {
- Filter();
- }
- private void BtnAuto_Click(object sender, RoutedEventArgs e) // авторизация
- {
- WindowAuto windowAuto = new WindowAuto();
- windowAuto.ShowDialog();
- }
- }
- }
|