PageEditProduct.xaml.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity.Migrations;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Text.RegularExpressions;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using System.Windows.Controls;
  11. using System.Windows.Data;
  12. using System.Windows.Documents;
  13. using System.Windows.Input;
  14. using System.Windows.Media;
  15. using System.Windows.Media.Imaging;
  16. using System.Windows.Navigation;
  17. using System.Windows.Shapes;
  18. using WriteErase.ClassBase;
  19. using WriteErase.ClassData;
  20. namespace WriteErase.ClassPages
  21. {
  22. /// <summary>
  23. /// Логика взаимодействия для PageEditProduct.xaml
  24. /// </summary>
  25. public partial class PageEditProduct : Page
  26. {
  27. Product product = new Product();
  28. bool edit = false;
  29. public PageEditProduct()
  30. {
  31. InitializeComponent();
  32. init();
  33. }
  34. public PageEditProduct(string article)
  35. {
  36. InitializeComponent();
  37. product = BaseConnection.kotBase.Product.First(tb => tb.ProductArticleNumber == article);
  38. edit = true;
  39. init();
  40. }
  41. private void init()
  42. {
  43. cbCategory.ItemsSource = BaseConnection.kotBase.ProductCategory.Select(tb => tb.CategoryName).ToList();
  44. cbManufactured.ItemsSource = BaseConnection.kotBase.ProductManufacturer.Select(tb => tb.ManufacturerName).ToList();
  45. cbSuplier.ItemsSource = BaseConnection.kotBase.ProductSuplier.Select(tb => tb.SuplierName).ToList();
  46. if (edit)
  47. {
  48. tbkHeader.Text = "Редактирование товара";
  49. tbxArticle.Text = product.ProductArticleNumber;
  50. tbxName.Text = product.ProductName;
  51. btnGenerate.IsEnabled = false;
  52. tbxDescription.Text = product.ProductDescription;
  53. tbxCost.Text = product.ProductCost.ToString();
  54. tbxDiscount.Text = product.ProductDiscountMax.ToString();
  55. tbxCount.Text = product.ProductQuantityInStock.ToString();
  56. cbCategory.SelectedItem = product.ProductCategory.CategoryName;
  57. cbManufactured.SelectedItem = product.ProductManufacturer.ManufacturerName;
  58. cbSuplier.SelectedItem = product.ProductSuplier.SuplierName;
  59. }
  60. else
  61. {
  62. tbkHeader.Text = "Добавление товара";
  63. GenerateClick(null, null);
  64. }
  65. }
  66. private void btnBackClick(object sender, RoutedEventArgs e)
  67. {
  68. switch (MessageBox.Show("При выходе ввыеденные вами данные не сохраняться, Вы действительно хотите выйти?", "Выход из приложения", MessageBoxButton.YesNo, MessageBoxImage.Question))
  69. {
  70. case MessageBoxResult.Yes:
  71. {
  72. MainFrame.mainFrame.Navigate(new PageMain());
  73. break;
  74. }
  75. case MessageBoxResult.No:
  76. {
  77. break;
  78. }
  79. }
  80. }
  81. private void btnSaveClick(object sender, RoutedEventArgs e)
  82. {
  83. string mess = check();
  84. if(mess == "")
  85. {
  86. try
  87. {
  88. if (!edit)
  89. {
  90. product.ProductArticleNumber = tbxArticle.Text;
  91. product.ProductStatus = "1";
  92. product.ProductPhoto = null;
  93. }
  94. product.ProductName = tbxName.Text;
  95. product.ProductDescription = tbxDescription.Text;
  96. product.ProductCost = Convert.ToDecimal(tbxCost.Text);
  97. product.ProductDiscountMax = Convert.ToDouble(tbxDiscount.Text);
  98. product.ProductQuantityInStock = int.Parse(tbxCount.Text);
  99. product.CategoryId = BaseConnection.kotBase.ProductCategory.
  100. First(tb => tb.CategoryName == cbCategory.SelectedValue.ToString()).CategoryId;
  101. product.ManufacturerId = BaseConnection.kotBase.ProductManufacturer.
  102. First(tb => tb.ManufacturerName == cbManufactured.SelectedValue.ToString()).ManufacturerID;
  103. product.SuplierId = BaseConnection.kotBase.ProductSuplier.
  104. First(tb => tb.SuplierName == cbSuplier.SelectedValue.ToString()).SuplierId;
  105. if(edit)
  106. BaseConnection.kotBase.Product.AddOrUpdate(product);
  107. else
  108. BaseConnection.kotBase.Product.Add(product);
  109. BaseConnection.kotBase.SaveChanges();
  110. MessageBox.Show("Изменения сохранены");
  111. MainFrame.mainFrame.Navigate(new PageMain());
  112. }
  113. catch(Exception ex)
  114. {
  115. Debug.WriteLine(ex.Message);
  116. }
  117. }
  118. else
  119. {
  120. MessageBox.Show(mess, "Ошибки заполнения формы");
  121. }
  122. }
  123. private string check()
  124. {
  125. string mess = "";
  126. Regex number = new Regex("^\\d{1,}$");
  127. Regex cost = new Regex("^\\d{1,}([\\.\\,]\\d{1,})?$");
  128. if (string.IsNullOrWhiteSpace(tbxName.Text))
  129. mess += "Поле Наименование не может быть пустым\n";
  130. if (string.IsNullOrWhiteSpace(tbxDescription.Text))
  131. mess += "Поле Описание не может быть пустым\n";
  132. if (!cost.IsMatch(tbxCost.Text.Trim()) || string.IsNullOrWhiteSpace(tbxCost.Text))
  133. mess += "Поле Цена должно бать числом\n";
  134. if (!number.IsMatch(tbxDiscount.Text.Trim()) || string.IsNullOrWhiteSpace(tbxDiscount.Text))
  135. mess += "Поле Скидка должно бать числом\n";
  136. if (!number.IsMatch(tbxCount.Text.Trim()) || string.IsNullOrWhiteSpace(tbxCount.Text))
  137. mess += "Поле Количество должно бать числом\n";
  138. if (cbCategory.SelectedIndex < 0)
  139. mess += "Неоходимо выбрать Категорию\n";
  140. if (cbManufactured.SelectedIndex < 0)
  141. mess += "Неоходимо выбрать Производителя\n";
  142. if (cbSuplier.SelectedIndex < 0)
  143. mess += "Неоходимо выбрать Постовщика";
  144. return mess;
  145. }
  146. private void GenerateClick(object sender, RoutedEventArgs e)
  147. {
  148. //A297U6
  149. string article = "";
  150. Random rnd = new Random();
  151. while (true)
  152. {
  153. article = ((char)rnd.Next(65, 81)).ToString() +
  154. rnd.Next(0, 10) + rnd.Next(0, 10) + rnd.Next(0, 10) +
  155. ((char)rnd.Next(65, 81)).ToString() + rnd.Next(0, 10);
  156. if (BaseConnection.kotBase.Product.Where(tb => tb.ProductArticleNumber == article).Count() == 0)
  157. break;
  158. article = "";
  159. }
  160. tbxArticle.Text = article;
  161. }
  162. }
  163. }