TestsCatalog.xaml.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. using System.Windows.Input;
  7. using System.Windows.Media.Imaging;
  8. using System.Windows.Navigation;
  9. namespace MyTests.Pages
  10. {
  11. public partial class TestsCatalog : Page
  12. {
  13. public TestsCatalog()
  14. {
  15. InitializeComponent();
  16. TestsListBox.Items.Clear();
  17. if (Session.User.Post == "Преподаватель")
  18. AddTestButton.Visibility = Visibility.Visible;
  19. LoadingTests();
  20. }
  21. private void AddTest_Click(object sender, RoutedEventArgs e)
  22. {
  23. NavigationService.Navigate(new EditTestPage());
  24. }
  25. void LoadingTests()
  26. {
  27. List<Tests> list = cdb.db.Tests.Where(item => item.IsVisible == true && item.Questions.Count > 0).ToList();
  28. if (TestNameBox.Text != "Название теста")
  29. list = list.Where(item => item.Name.StartsWith(TestNameBox.Text)).ToList();
  30. if (AuthorTestBox.Text != "Преподаватель")
  31. list = list.Where(item => item.Users.Surname.StartsWith(AuthorTestBox.Text)
  32. || item.Users.Name.StartsWith(AuthorTestBox.Text)
  33. || item.Users.Patronymic.StartsWith(AuthorTestBox.Text)).ToList();
  34. List<TestsClass> testsList = new List<TestsClass>();
  35. foreach (Tests test in list)
  36. {
  37. TestsClass tc = new TestsClass();
  38. tc.test = test;
  39. tc.testImage = test.Image == null ? new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) : ImagesFunctions.NewImage(test);
  40. testsList.Add(tc);
  41. }
  42. TestsListBox.ItemsSource = testsList;
  43. }
  44. private void FindTests_Click(object sender, RoutedEventArgs e)
  45. {
  46. LoadingTests();
  47. }
  48. private void TestNameBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
  49. {
  50. ((TextBox)sender).Text = String.Empty;
  51. }
  52. private void TestNameBox_LostFocus(object sender, RoutedEventArgs e)
  53. {
  54. if (TestNameBox.Text.Trim() == "")
  55. TestNameBox.Text = "Название теста";
  56. }
  57. private void AuthorTestBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
  58. {
  59. ((TextBox)sender).Text = String.Empty;
  60. }
  61. private void AuthorTestBox_LostFocus(object sender, RoutedEventArgs e)
  62. {
  63. if (AuthorTestBox.Text.Trim() == "")
  64. AuthorTestBox.Text = "Преподаватель";
  65. }
  66. private void TestsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  67. {
  68. try
  69. {
  70. if (((TestsClass)TestsListBox.SelectedItem) != null)
  71. {
  72. Tests thisTest = cdb.db.Tests.Where(item => item.IdTest == ((TestsClass)TestsListBox.SelectedItem).test.IdTest).FirstOrDefault();
  73. if (!thisTest.CanAgain && cdb.db.Answers.Where(item => item.Questions.Tests.IdTest == thisTest.IdTest).Select(item => item.IdUser).Contains(Session.User.IdUser) && Session.User.IdUser != thisTest.IdUser)
  74. new ErrorWindow("Этот тест не может быть пройден повторно.").ShowDialog();
  75. else
  76. {
  77. Session.OpenedTest = thisTest;
  78. Session.Points = 0;
  79. Session.CurQuestion = 0;
  80. Session.Quest.Content = cdb.db.Questions.Where(item => item.IdTest == Session.OpenedTest.IdTest).Select(item => item.Content).ToArray();
  81. Session.Quest.Answer = cdb.db.Questions.Where(item => item.IdTest == Session.OpenedTest.IdTest).Select(item => item.Answer).ToArray();
  82. NavigationService.Navigate(new Pages.CurTestPage());
  83. }
  84. }
  85. }
  86. catch
  87. {
  88. new ErrorWindow("Ошибка открытия теста.").ShowDialog();
  89. }
  90. }
  91. public class TestsClass
  92. {
  93. public Tests test { get; set; }
  94. public BitmapImage testImage { get; set; }
  95. }
  96. }
  97. }