CheckTestResultsCatalog.xaml.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using System.Windows.Navigation;
  6. namespace MyTests.Pages
  7. {
  8. // Страница с каталогом результатов пользователей
  9. public partial class CheckTestResultsCatalog : Page
  10. {
  11. Tests test;
  12. public CheckTestResultsCatalog(Tests _test)
  13. {
  14. InitializeComponent();
  15. test = _test;
  16. //Очистка списка ответов в программе (ListBox)
  17. AnswersListBox.Items.Clear();
  18. // Создание переменной(списка), хранящей пользователя, список правильных ответов и количество вопросов в тесте
  19. List<AnswerClass> answerList = new List<AnswerClass>();
  20. // Заполнение переменной данными из базы данных
  21. foreach (Users user in cdb.db.Users.Where(item => item.Answers.Count() > 0))
  22. {
  23. if (cdb.db.Answers.Select(item => item.Questions.IdTest + " " + item.IdUser).Contains(_test.IdTest + " " + user.IdUser))
  24. {
  25. AnswerClass newUserAnswer = new AnswerClass();
  26. newUserAnswer.User = user;
  27. newUserAnswer.Correct = Functions.CorrectAnswersCounter(_test, user);
  28. newUserAnswer.Count = cdb.db.Questions.Where(item => item.IdTest == _test.IdTest).Count();
  29. // Добавление данных в переменную(список), хранящей пользователя, список правильных ответов и количество вопросов в тесте
  30. answerList.Add(newUserAnswer);
  31. }
  32. }
  33. // Заполнение списка для отображение, хранящего пользователя и его баллы за тест
  34. AnswersListBox.ItemsSource = answerList;
  35. // Если количество ответов на этот тест = 0, то появится надпись "На данный момент тест еще никто не прошел."
  36. if (AnswersListBox.Items.Count == 0)
  37. ResultLabel.Content = "На данный момент тест еще никто не прошел.";
  38. }
  39. private void AnswersListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  40. {
  41. // Если выбран элемент списка
  42. if (((AnswerClass)AnswersListBox.SelectedItem) != null)
  43. {
  44. // переход на страницу с проверкой результатов у конкретного пользователя
  45. NavigationService.Navigate(new Pages.CheckTestResults(test,
  46. cdb.db.Users.Where(item => item.IdUser == ((AnswerClass)AnswersListBox.SelectedItem).User.IdUser).FirstOrDefault()));
  47. }
  48. }
  49. private void BackButton_Click(object sender, RoutedEventArgs e)
  50. {
  51. // Возврат на прошлую страницу
  52. NavigationService.GoBack();
  53. }
  54. // Класс, хранящий пользователя, список правильных ответов и количество вопросов в тесте
  55. public class AnswerClass
  56. {
  57. public Users User { get; set; }
  58. public int Correct { get; set; }
  59. public int Count { get; set; }
  60. }
  61. }
  62. }