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 Eight { /// /// Логика взаимодействия для MainWindow.xaml /// public partial class MainWindow : Window { private List _sort = new List() { "Наименование (по возрастанию)","Наименование (по убыванию)", "Номер производственного цеха (по возрастанию)","Номер производственного цеха (по убыванию)", "Минимальная стоимость для агента (по возрастанию)", "Минимальная стоимость для агента (по убыванию)" }; private int _pagesIndex = 1; private int _totalPages = 0; private int _takesProducts = 20; public MainWindow() { InitializeComponent(); ProductsList.ItemsSource = Helper.GetContext().Product.ToList(); CmbSort.ItemsSource = _sort; var filterCollection = Helper.GetContext().ProductType.ToList(); filterCollection.Insert(0, new ProductType() { ID = 0, Title = "Все типы" }); CmbFilter.ItemsSource = filterCollection; } private void SetNumbers(List products) { NumbersList.Items.Clear(); _totalPages = products.Count % 20 == 0 ? products.Count / 20 : products.Count / 20 + 1; for (int i = 1; i <= _totalPages; i++) { NumbersList.Items.Add(i); } } private void LoadData() { var products = Helper.GetContext().Product.ToList(); switch (CmbSort.SelectedIndex) { case 0: products = products.OrderBy(x => x.Title).ToList(); break; case 1: products = products.OrderByDescending(x => x.Title).ToList(); break; case 2: products = products.OrderBy(x => x.ProductionWorkshopNumber).ToList(); break; case 3: products = products.OrderByDescending(x => x.ProductionWorkshopNumber).ToList(); break; case 4: products = products.OrderBy(x => x.MinCostForAgent).ToList(); break; case 5: products = products.OrderByDescending(x => x.MinCostForAgent).ToList(); break; } if (CmbFilter.SelectedItem is ProductType productType) { products = products .Where(x => (x.ProductType == productType || productType.ID == 0) && (x.Title.Contains(TbSearch.Text) || x.NDescription.Contains(TbSearch.Text))) .ToList(); } SetNumbers(products); products = products.Skip((_pagesIndex - 1) * 20).Take(_takesProducts).ToList(); ProductsList.ItemsSource = products; } private void ProductsList_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (ProductsList.SelectedItems.Count > 1) { BtnUpdate.Visibility = Visibility.Visible; } else { BtnUpdate.Visibility = Visibility.Collapsed; } } private void TbSearch_SelectionChanged(object sender, RoutedEventArgs e) { LoadData(); } private void CmbSort_SelectionChanged(object sender, SelectionChangedEventArgs e) { LoadData(); } private void CmbFilter_SelectionChanged(object sender, SelectionChangedEventArgs e) { LoadData(); } private void TbDown_MouseDown(object sender, MouseButtonEventArgs e) { if (_pagesIndex > 1) { _pagesIndex -= 1; LoadData(); } } private void TbNext_MouseDown(object sender, MouseButtonEventArgs e) { if (_pagesIndex < _totalPages) { _pagesIndex += 1; LoadData(); } } private void TbNumber_MouseDown(object sender, MouseButtonEventArgs e) { _pagesIndex = Convert.ToInt32((sender as TextBlock).Text); LoadData(); } private void BtnUpdate_Click(object sender, RoutedEventArgs e) { var products=ProductsList.SelectedItems.Cast().ToList(); new UpdateWindow(products).ShowDialog(); LoadData(); } private void BtnAddProduct_Click(object sender, RoutedEventArgs e) { new AddWindow().ShowDialog(); LoadData(); } private void BtnUpdateProduct_Click(object sender, RoutedEventArgs e) { if (ProductsList.SelectedItem is Product product) { UpdateProductWindow updateProduct = new UpdateProductWindow(product); updateProduct.ShowDialog(); LoadData(); } } } }