PartInfoPage.xaml.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using System.Windows.Input;
  6. using System.Windows.Media.Imaging;
  7. using System.Windows.Navigation;
  8. namespace PartsWarehouse
  9. {
  10. public partial class PartInfoPage : Page
  11. {
  12. Parts part;
  13. bool newPart;
  14. public PartInfoPage(int partId)
  15. {
  16. InitializeComponent();
  17. if (cnt.db.Parts.Select(item => item.IdPart).Contains(partId))
  18. {
  19. newPart = false;
  20. part = cnt.db.Parts.Where(item => item.IdPart == partId).FirstOrDefault();
  21. if (part.Image == null)
  22. PartImage.Source = new BitmapImage(new Uri("../Resources/NotFound.png", UriKind.RelativeOrAbsolute));
  23. else
  24. PartImage.Source = ImagesManip.NewImage(part);
  25. PartName.Text = part.Name;
  26. PartDesc.Text = part.Description;
  27. PartPrice.Text = part.Price.ToString();
  28. PartRemain.Text = part.Remain.ToString();
  29. PartNum.Text = part.PartNum.ToString();
  30. PartCar.Text = $"{part.Car.Company} {part.Car.Name}";
  31. PartType.Text = part.Type;
  32. PartIsOriginal.Text = part.Original;
  33. PartManufacturer.Text = part.Manufacturer;
  34. }
  35. else
  36. {
  37. newPart = true;
  38. PartImage.Source = new BitmapImage(new Uri("../Resources/Plus.png", UriKind.RelativeOrAbsolute));
  39. }
  40. }
  41. private void PartNameManufacturer_PreviewMouseDown(object sender, MouseButtonEventArgs e)
  42. {
  43. }
  44. private void PartNameManufacturer_LostFocus(object sender, RoutedEventArgs e)
  45. {
  46. }
  47. private void PartDesc_PreviewMouseDown(object sender, MouseButtonEventArgs e)
  48. {
  49. }
  50. private void PartDesc_LostFocus(object sender, RoutedEventArgs e)
  51. {
  52. }
  53. private void PartManufacturer_PreviewMouseDown(object sender, MouseButtonEventArgs e)
  54. {
  55. }
  56. private void PartManufacturer_LostFocus(object sender, RoutedEventArgs e)
  57. {
  58. }
  59. private void PartImage_MouseDown(object sender, MouseButtonEventArgs e)
  60. {
  61. try
  62. {
  63. BitmapImage image = ImagesManip.SelectImage();
  64. if (image != null)
  65. PartImage.Source = image;
  66. }
  67. catch (Exception ex)
  68. {
  69. new ErrorWindow(ex.ToString()).ShowDialog();
  70. }
  71. }
  72. private void BackButton(object sender, RoutedEventArgs e)
  73. {
  74. NavigationService.Navigate(new СatalogPage());
  75. }
  76. private void DeleteButton(object sender, RoutedEventArgs e)
  77. {
  78. try
  79. {
  80. ConfirmationWindow confWindow = new ConfirmationWindow();
  81. confWindow.ShowDialog();
  82. if (confWindow.answer)
  83. {
  84. cnt.db.Parts.Remove(part);
  85. cnt.db.SaveChanges();
  86. NavigationService.Navigate(new СatalogPage());
  87. }
  88. }
  89. catch
  90. {
  91. MessageBox.Show("Ошибка удаления записи.");
  92. }
  93. }
  94. private void SaveButton(object sender, RoutedEventArgs e)
  95. {
  96. if (!newPart)
  97. {
  98. try
  99. {
  100. part.Image = ImagesManip.BitmapSourceToByteArray((BitmapSource)PartImage.Source);
  101. part.Name = PartName.Text;
  102. part.Remain = Convert.ToInt32(PartRemain.Text);
  103. part.Price = Convert.ToDouble(PartPrice.Text);
  104. part.PartNum = Convert.ToInt32(PartNum.Text);
  105. part.Description = PartDesc.Text;
  106. part.Manufacturer = PartManufacturer.Text;
  107. string manufacturer = PartCar.Text.Substring(0, PartCar.Text.IndexOf(' ')),
  108. name = PartCar.Text.Substring(PartCar.Text.IndexOf(' ') + 1, PartCar.Text.Length - PartCar.Text.IndexOf(' ') - 1);
  109. part.IdCar = cnt.db.Parts.Where(item => item.Car.Company == manufacturer && item.Car.Name == name).Select(item => item.IdCar).FirstOrDefault();
  110. part.Type = PartType.Text;
  111. part.Original = PartIsOriginal.Text;
  112. cnt.db.SaveChanges();
  113. NavigationService.Navigate(new СatalogPage());
  114. }
  115. catch (Exception ex)
  116. {
  117. MessageBox.Show(ex.ToString());
  118. }
  119. }
  120. else
  121. {
  122. try
  123. {
  124. string manufacturer = PartCar.Text.Substring(0, PartCar.Text.IndexOf(' ')),
  125. name = PartCar.Text.Substring(PartCar.Text.IndexOf(' ') + 1, PartCar.Text.Length - PartCar.Text.IndexOf(' ') - 1);
  126. Parts part = new Parts()
  127. {
  128. IdPart = cnt.db.Parts.Select(p => p.IdPart).DefaultIfEmpty(0).Max() + 1,
  129. IdCar = cnt.db.Parts.Where(item => item.Car.Company == manufacturer && item.Car.Name == name).Select(item => item.Car.IdCar).FirstOrDefault(),
  130. Type = PartType.Text,
  131. Name = PartName.Text,
  132. Manufacturer = PartManufacturer.Text,
  133. Description = PartDesc.Text,
  134. Image = PartImage.Source != null ? ImagesManip.BitmapSourceToByteArray((BitmapSource)PartImage.Source) : null,
  135. Remain = Convert.ToInt32(PartRemain.Text),
  136. Price = Convert.ToDouble(PartPrice.Text),
  137. PartNum = Convert.ToInt32(PartNum.Text),
  138. Original = PartIsOriginal.Text
  139. };
  140. cnt.db.Parts.Add(part);
  141. cnt.db.SaveChanges();
  142. NavigationService.Navigate(new СatalogPage());
  143. }
  144. catch (Exception ex)
  145. {
  146. MessageBox.Show(ex.ToString());
  147. }
  148. }
  149. }
  150. }
  151. }