MainWindow.xaml.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15. namespace Eight
  16. {
  17. /// <summary>
  18. /// Логика взаимодействия для MainWindow.xaml
  19. /// </summary>
  20. public partial class MainWindow : Window
  21. {
  22. private List<string> _sort = new List<string>()
  23. {
  24. "Наименование (по возрастанию)","Наименование (по убыванию)",
  25. "Номер производственного цеха (по возрастанию)","Номер производственного цеха (по убыванию)",
  26. "Минимальная стоимость для агента (по возрастанию)", "Минимальная стоимость для агента (по убыванию)"
  27. };
  28. private int _pagesIndex = 1;
  29. private int _totalPages = 0;
  30. private int _takesProducts = 20;
  31. public MainWindow()
  32. {
  33. InitializeComponent();
  34. ProductsList.ItemsSource = Helper.GetContext().Product.ToList();
  35. CmbSort.ItemsSource = _sort;
  36. var filterCollection = Helper.GetContext().ProductType.ToList();
  37. filterCollection.Insert(0, new ProductType() { ID = 0, Title = "Все типы" });
  38. CmbFilter.ItemsSource = filterCollection;
  39. }
  40. private void SetNumbers(List<Product> products)
  41. {
  42. NumbersList.Items.Clear();
  43. _totalPages = products.Count % 20 == 0 ? products.Count / 20 : products.Count / 20 + 1;
  44. for (int i = 1; i <= _totalPages; i++)
  45. {
  46. NumbersList.Items.Add(i);
  47. }
  48. }
  49. private void LoadData()
  50. {
  51. var products = Helper.GetContext().Product.ToList();
  52. switch (CmbSort.SelectedIndex)
  53. {
  54. case 0:
  55. products = products.OrderBy(x => x.Title).ToList();
  56. break;
  57. case 1:
  58. products = products.OrderByDescending(x => x.Title).ToList();
  59. break;
  60. case 2:
  61. products = products.OrderBy(x => x.ProductionWorkshopNumber).ToList();
  62. break;
  63. case 3:
  64. products = products.OrderByDescending(x => x.ProductionWorkshopNumber).ToList();
  65. break;
  66. case 4:
  67. products = products.OrderBy(x => x.MinCostForAgent).ToList();
  68. break;
  69. case 5:
  70. products = products.OrderByDescending(x => x.MinCostForAgent).ToList();
  71. break;
  72. }
  73. if (CmbFilter.SelectedItem is ProductType productType)
  74. {
  75. products = products
  76. .Where(x =>
  77. (x.ProductType == productType || productType.ID == 0) &&
  78. (x.Title.Contains(TbSearch.Text) || x.NDescription.Contains(TbSearch.Text)))
  79. .ToList();
  80. }
  81. SetNumbers(products);
  82. products = products.Skip((_pagesIndex - 1) * 20).Take(_takesProducts).ToList();
  83. ProductsList.ItemsSource = products;
  84. }
  85. private void ProductsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
  86. {
  87. if (ProductsList.SelectedItems.Count > 1)
  88. {
  89. BtnUpdate.Visibility = Visibility.Visible;
  90. }
  91. else
  92. {
  93. BtnUpdate.Visibility = Visibility.Collapsed;
  94. }
  95. }
  96. private void TbSearch_SelectionChanged(object sender, RoutedEventArgs e)
  97. {
  98. LoadData();
  99. }
  100. private void CmbSort_SelectionChanged(object sender, SelectionChangedEventArgs e)
  101. {
  102. LoadData();
  103. }
  104. private void CmbFilter_SelectionChanged(object sender, SelectionChangedEventArgs e)
  105. {
  106. LoadData();
  107. }
  108. private void TbDown_MouseDown(object sender, MouseButtonEventArgs e)
  109. {
  110. if (_pagesIndex > 1)
  111. {
  112. _pagesIndex -= 1;
  113. LoadData();
  114. }
  115. }
  116. private void TbNext_MouseDown(object sender, MouseButtonEventArgs e)
  117. {
  118. if (_pagesIndex < _totalPages)
  119. {
  120. _pagesIndex += 1;
  121. LoadData();
  122. }
  123. }
  124. private void TbNumber_MouseDown(object sender, MouseButtonEventArgs e)
  125. {
  126. _pagesIndex = Convert.ToInt32((sender as TextBlock).Text);
  127. LoadData();
  128. }
  129. private void BtnUpdate_Click(object sender, RoutedEventArgs e)
  130. {
  131. var products=ProductsList.SelectedItems.Cast<Product>().ToList();
  132. new UpdateWindow(products).ShowDialog();
  133. LoadData();
  134. }
  135. private void BtnAddProduct_Click(object sender, RoutedEventArgs e)
  136. {
  137. new AddWindow().ShowDialog();
  138. LoadData();
  139. }
  140. private void BtnUpdateProduct_Click(object sender, RoutedEventArgs e)
  141. {
  142. if (ProductsList.SelectedItem is Product product)
  143. {
  144. UpdateProductWindow updateProduct = new UpdateProductWindow(product);
  145. updateProduct.ShowDialog();
  146. LoadData();
  147. }
  148. }
  149. }
  150. }