CheckTestResultsCatalog.xaml.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15. namespace MyTests.Pages
  16. {
  17. /// <summary>
  18. /// Логика взаимодействия для CheckTestResultsCatalog.xaml
  19. /// </summary>
  20. public partial class CheckTestResultsCatalog : Page
  21. {
  22. Tests test;
  23. public CheckTestResultsCatalog(Tests _test)
  24. {
  25. InitializeComponent();
  26. test = _test;
  27. AnswersListBox.Items.Clear();
  28. List<AnswerClass> answerList = new List<AnswerClass>();
  29. foreach (Users user in cnt.db.Users.Where(item => item.Answers.Count() > 0))
  30. {
  31. if (cnt.db.Answers.Select(item => item.Questions.IdTest + " " + item.IdUser).Contains(_test.IdTest + " " + user.IdUser))
  32. {
  33. AnswerClass newUserAnswer = new AnswerClass();
  34. newUserAnswer.User = user;
  35. newUserAnswer.Correct = CorrectAnswersCounter(_test, user);
  36. newUserAnswer.Count = cnt.db.Questions.Where(item => item.IdTest == _test.IdTest).Count();
  37. answerList.Add(newUserAnswer);
  38. }
  39. }
  40. AnswersListBox.ItemsSource = answerList;
  41. if (AnswersListBox.Items.Count == 0)
  42. ResultLabel.Content = "На данный момент тест еще никто не прошел.";
  43. }
  44. public int CorrectAnswersCounter(Tests test, Users user)
  45. {
  46. Quest.Answer = cnt.db.Questions.Where(item => item.IdTest == test.IdTest).Select(it => it.Answer).ToArray();
  47. Quest.UserAnswer = cnt.db.Answers.Where(item => item.Users.IdUser == user.IdUser && item.Questions.IdTest == test.IdTest).Select(it => it.Answer).ToArray();
  48. int value = 0;
  49. if (Quest.Answer.Length == Quest.UserAnswer.Length)
  50. for (int i = 0; i < Quest.Answer.Length; i++)
  51. if (Quest.Answer[i] == Quest.UserAnswer[i])
  52. value++;
  53. return value;
  54. }
  55. private void AnswersListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  56. {
  57. if (((AnswerClass)AnswersListBox.SelectedItem) != null)
  58. {
  59. NavigationService.Navigate(new Pages.CheckTestResults(test,
  60. cnt.db.Users.Where(item => item.IdUser == ((AnswerClass)AnswersListBox.SelectedItem).User.IdUser).FirstOrDefault()));
  61. }
  62. }
  63. private void BackButton_Click(object sender, RoutedEventArgs e)
  64. {
  65. NavigationService.GoBack();
  66. }
  67. public static class Quest
  68. {
  69. public static string[] Answer;
  70. public static string[] UserAnswer;
  71. }
  72. public class AnswerClass
  73. {
  74. public Users User { get; set; }
  75. public int Correct { get; set; }
  76. public int Count { get; set; }
  77. }
  78. }
  79. }