Cats 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. Skip to content
  2. ludmila-mukhina
  3. /
  4. CatBaseProject
  5. Public
  6. Code
  7. Issues
  8. Pull requests
  9. Actions
  10. Projects
  11. Security
  12. Insights
  13. CatBaseProject/WpfApp2/Pages/CreateCatPage.xaml.cs
  14. @ludmila-mukhina
  15. ludmila-mukhina Комментарии на страницах с просмотром данных о котах, добавлением и р…
  16. 1 contributor
  17. 213 lines (186 sloc) 10.1 KB
  18. using Microsoft.Win32;
  19. using System;
  20. using System.Collections.Generic;
  21. using System.Linq;
  22. using System.Text;
  23. using System.Threading.Tasks;
  24. using System.Windows;
  25. using System.Windows.Controls;
  26. using System.Windows.Data;
  27. using System.Windows.Documents;
  28. using System.Windows.Input;
  29. using System.Windows.Media;
  30. using System.Windows.Media.Imaging;
  31. using System.Windows.Navigation;
  32. using System.Windows.Shapes;
  33. namespace WpfApp2
  34. {
  35. /// <summary>
  36. /// Логика взаимодействия для CreateCatPage.xaml
  37. /// </summary>
  38. public partial class CreateCatPage : Page
  39. {
  40. CatTable CAT; // объект, в котором будет хранится данные о новом или отредактированном коте
  41. bool flagUpdate = false; // для определения, создаем мы новый объект или редактируем старый
  42. string path; // путь к картинке
  43. public void uploadFields() // метод для заполнения списков
  44. {
  45. cmbBreed.ItemsSource = BaseClass.tBE.BreedTable.ToList();
  46. cmbBreed.SelectedValuePath = "idBreed";
  47. cmbBreed.DisplayMemberPath = "Breed";
  48. cmbGender.ItemsSource = BaseClass.tBE.GenderTable.ToList();
  49. cmbGender.SelectedValuePath = "idGender";
  50. cmbGender.DisplayMemberPath = "Gender";
  51. lbTraits.ItemsSource = BaseClass.tBE.TraitTable.ToList();
  52. lbTraits.SelectedValuePath = "idTrait";
  53. lbTraits.DisplayMemberPath = "Trait";
  54. lbFeed.ItemsSource = BaseClass.tBE.FeedTable.ToList();
  55. }
  56. // конструктор для редактирования данных о коте ( с аргументом, который хранит информацию о коте, которого хотим отредактировать)
  57. public CreateCatPage(CatTable cat)
  58. {
  59. InitializeComponent();
  60. uploadFields(); // заполняем списки
  61. flagUpdate = true; // отметка о том, что кота редактируем
  62. CAT = cat; // ассоциируем выше созданный глобавльный объект с объектом в кострукторе для дальнейшего редактирования этих данных
  63. tbName.Text = cat.CatName; // вывод имени кота
  64. cmbBreed.SelectedIndex = cat.idBreed - 1; // вывод породы кота
  65. dpBirthday.SelectedDate = cat.Birthday; // вывод даты рождения
  66. cmbGender.SelectedIndex = cat.idGender - 1; // вывод пола
  67. tbPassport.Text = cat.PassportTable.UniqueNumber; // вывод паспорта
  68. tbColor.Text = cat.PassportTable.ColorCat; // вывод окраса
  69. // находим черты характера того кота, которого мы редактируем:
  70. List<TraitCat> tC = BaseClass.tBE.TraitCat.Where(x => x.idCat == cat.idCat).ToList();
  71. // цикл для выделения черт характера кота в общем списке:
  72. foreach (TraitTable t in lbTraits.Items)
  73. {
  74. if (tC.FirstOrDefault(x => x.idTrait == t.idTrait) != null)
  75. {
  76. lbTraits.SelectedItems.Add(t);
  77. }
  78. }
  79. // находим корма для того кота, которого мы редактируем
  80. List<FeedCatTable> fct = BaseClass.tBE.FeedCatTable.Where(x => x.idCat == cat.idCat).ToList();
  81. // цикл для отображения кормов и их количества для кота:
  82. foreach (FeedTable t in lbFeed.Items)
  83. {
  84. if (fct.FirstOrDefault(x => x.idFeed == t.idFeed) != null)
  85. {
  86. t.QM = fct.Count;
  87. }
  88. }
  89. // вывод картинки
  90. if (cat.Photo != null)
  91. {
  92. BitmapImage img = new BitmapImage(new Uri(cat.Photo, UriKind.RelativeOrAbsolute));
  93. photoCat.Source = img;
  94. }
  95. }
  96. // конструктор для создания нового кота (без аргументов)
  97. public CreateCatPage()
  98. {
  99. InitializeComponent();
  100. uploadFields(); // заполняем списки
  101. }
  102. private void btnAdd_Click(object sender, RoutedEventArgs e)
  103. {
  104. try
  105. {
  106. // если флаг равен false, то создаем объект для добавления кота
  107. if (flagUpdate == false)
  108. {
  109. CAT = new CatTable();
  110. }
  111. // заполняем поля таблицы CatTable
  112. CAT.CatName = tbName.Text;
  113. CAT.idBreed = cmbBreed.SelectedIndex + 1;
  114. CAT.Birthday = Convert.ToDateTime(dpBirthday.SelectedDate);
  115. CAT.idGender = cmbGender.SelectedIndex + 1;
  116. CAT.Photo = path;
  117. // если флаг равен false, то добавляем объект в базу
  118. if (flagUpdate == false)
  119. {
  120. BaseClass.tBE.CatTable.Add(CAT);
  121. }
  122. // BaseClass.tBE.SaveChanges();
  123. // Заполнение таблицы PassportTable
  124. PassportTable pas = new PassportTable()
  125. {
  126. idCat = CAT.idCat,
  127. UniqueNumber = tbPassport.Text,
  128. ColorCat = tbColor.Text
  129. };
  130. // если флаг равен false, то добавляем объект в базу
  131. if (flagUpdate == false)
  132. {
  133. BaseClass.tBE.PassportTable.Add(pas);
  134. }
  135. // BaseClass.tBE.SaveChanges();
  136. // Для заполнения таблицы TraitsCats нужно организовать цикл, так как черт характера у кота может быть несколько
  137. // Цикл будет организовывать по чертам характера, которые выделены в списке
  138. // находим список черт характера кота:
  139. List<TraitCat> traits = BaseClass.tBE.TraitCat.Where(x => CAT.idCat == x.idCat).ToList();
  140. // если список не пустой, удаляем из него все черты характера этого кота
  141. if (traits.Count > 0)
  142. {
  143. foreach (TraitCat t in traits)
  144. {
  145. BaseClass.tBE.TraitCat.Remove(t);
  146. }
  147. }
  148. // перезаписываем черты кота (или добавляем черты для нового кота)
  149. foreach (TraitTable t in lbTraits.SelectedItems)
  150. {
  151. TraitCat TC = new TraitCat() // объект для записи в таблицу TraitsCat
  152. {
  153. idCat = CAT.idCat,
  154. idTrait = t.idTrait
  155. };
  156. BaseClass.tBE.TraitCat.Add(TC);
  157. }
  158. // BaseClass.tBE.SaveChanges();
  159. // Для заполнения таблицы Diets нужно организовать цикл, так как кормов у кота может быть несколько
  160. // Цикл будет организовывать по всем кормам, которые есть в списке
  161. // находим список с кормами для кота
  162. List<FeedCatTable> feed = BaseClass.tBE.FeedCatTable.Where(x => CAT.idCat == x.idCat).ToList();
  163. // если список не пустой, удаляем из него все корма для этого кота
  164. if (feed.Count > 0)
  165. {
  166. foreach (FeedCatTable t in feed)
  167. {
  168. BaseClass.tBE.FeedCatTable.Remove(t);
  169. }
  170. }
  171. // перезаписываем корма для кота (или добавляем корма для нового кота)
  172. foreach (FeedTable f in lbFeed.Items)
  173. {
  174. if (f.QM > 0)
  175. {
  176. FeedCatTable FCT = new FeedCatTable() // объект для записи в таблицу FeedCatTable
  177. {
  178. idCat = CAT.idCat,
  179. idFeed = f.idFeed,
  180. Count = f.QM
  181. };
  182. BaseClass.tBE.FeedCatTable.Add(FCT);
  183. }
  184. }
  185. BaseClass.tBE.SaveChanges();
  186. MessageBox.Show("Информация добавлена");
  187. }
  188. catch
  189. {
  190. MessageBox.Show("Что-то пошло не по плану");
  191. }
  192. }
  193. private void btnPhto_Click(object sender, RoutedEventArgs e) // добавление фото кота с помощью диалогового окна
  194. {
  195. OpenFileDialog OFD = new OpenFileDialog(); // создаем объект диалогового окна
  196. OFD.ShowDialog(); // открываем диалоговое окно
  197. path = OFD.FileName; // извлекаем полный путь к картинке
  198. string[] arrayPath = path.Split('\\'); // разделяем путь к картинке в массив
  199. path = "\\" + arrayPath[arrayPath.Length - 2] + "\\" + arrayPath[arrayPath.Length - 1]; // записываем в бд путь, начиная с имени папки
  200. // MessageBox.Show(path);
  201. }
  202. }
  203. }
  204. Footer
  205. © 2023 GitHub, Inc.
  206. Footer navigation
  207. Terms
  208. Privacy
  209. Security
  210. Status
  211. Docs
  212. Contact GitHub
  213. Pricing
  214. API
  215. Training
  216. Blog
  217. About
  218. CatBaseProject/CreateCatPage.xaml.cs at master · ludmila-mukhina/CatBaseProjectя данные о новнов