EditTestPage.xaml.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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 MyTests.Pages
  9. {
  10. public partial class EditTestPage : Page
  11. {
  12. Tests test;
  13. Questions selected;
  14. public EditTestPage(Tests _test = null)
  15. {
  16. InitializeComponent();
  17. if (_test == null)
  18. {
  19. try
  20. {
  21. int testId = cdb.db.Tests.Select(p => p.IdTest).DefaultIfEmpty(0).Max() + 1;
  22. Tests newTest = new Tests()
  23. {
  24. IdTest = testId,
  25. IdUser = Session.User.IdUser,
  26. Name = $"Новый тест {cdb.db.Tests.Where(item => item.IdUser == Session.User.IdUser).Count() + 1}",
  27. IsAnswersVisible = false,
  28. IsVisible = false,
  29. CanAgain = false
  30. };
  31. cdb.db.Tests.Add(newTest);
  32. cdb.db.SaveChanges();
  33. test = cdb.db.Tests.Where(item => item.IdTest == testId).FirstOrDefault();
  34. }
  35. catch (Exception ex)
  36. {
  37. new ErrorWindow(ex.Message);
  38. }
  39. }
  40. else
  41. {
  42. test = _test;
  43. IsVisibleCB.IsChecked = test.IsVisible;
  44. IsAnswersVisibleCB.IsChecked = test.IsAnswersVisible;
  45. CanAgainCB.IsChecked = test.CanAgain;
  46. }
  47. TestNameBox.Text = test.Name;
  48. TestImg.Source = test.Image == null ?
  49. new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) :
  50. ImagesFunctions.NewImage(_test);
  51. QuestionsListBox.Items.Clear();
  52. QuestionsUpdate();
  53. }
  54. private void QuestionsUpdate()
  55. {
  56. QuestionsListBox.ItemsSource = cdb.db.Questions.Where(item => item.IdTest == test.IdTest).ToList();
  57. }
  58. private void QuestionsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  59. {
  60. selected = ((Questions)QuestionsListBox.SelectedItem);
  61. }
  62. private void AddQuestionButton_Click(object sender, RoutedEventArgs e)
  63. {
  64. new QuestionAddToTestWindow(test).ShowDialog();
  65. QuestionsUpdate();
  66. }
  67. private void DeleteQuestionButton_Click(object sender, RoutedEventArgs e)
  68. {
  69. if (selected != null)
  70. {
  71. ConfirmationWindow confWindow = new ConfirmationWindow();
  72. confWindow.ShowDialog();
  73. if (confWindow.answer)
  74. {
  75. try
  76. {
  77. foreach (Answers answer in cdb.db.Answers.Where(item => item.IdQuestion == selected.IdQuestion))
  78. cdb.db.Answers.Remove(answer);
  79. cdb.db.Questions.Remove(selected);
  80. cdb.db.SaveChanges();
  81. }
  82. catch (Exception ex)
  83. {
  84. new ErrorWindow(ex.Message);
  85. }
  86. }
  87. QuestionsUpdate();
  88. }
  89. }
  90. private void BackButton_Click(object sender, RoutedEventArgs e)
  91. {
  92. NavigationService.GoBack();
  93. }
  94. private void TestImg_MouseDown(object sender, MouseButtonEventArgs e)
  95. {
  96. BitmapImage image = ImagesFunctions.SelectImage();
  97. if (image != null)
  98. {
  99. TestImg.Source = image;
  100. test.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)TestImg.Source);
  101. cdb.db.SaveChanges();
  102. }
  103. }
  104. private void TestNameBox_LostFocus(object sender, RoutedEventArgs e)
  105. {
  106. test.Name = TestNameBox.Text;
  107. }
  108. private void SaveInfoCB(object sender, RoutedEventArgs e)
  109. {
  110. test.IsVisible = IsVisibleCB.IsChecked == true;
  111. test.IsAnswersVisible = IsAnswersVisibleCB.IsChecked == true;
  112. test.CanAgain = CanAgainCB.IsChecked == true;
  113. cdb.db.SaveChanges();
  114. }
  115. }
  116. }