CheckTestResultsCatalog.xaml.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. public partial class CheckTestResultsCatalog : Page
  9. {
  10. Tests test;
  11. public CheckTestResultsCatalog(Tests _test)
  12. {
  13. InitializeComponent();
  14. test = _test;
  15. AnswersListBox.Items.Clear();
  16. List<AnswerClass> answerList = new List<AnswerClass>();
  17. foreach (Users user in cdb.db.Users.Where(item => item.Answers.Count() > 0))
  18. {
  19. if (cdb.db.Answers.Select(item => item.Questions.IdTest + " " + item.IdUser).Contains(_test.IdTest + " " + user.IdUser))
  20. {
  21. AnswerClass newUserAnswer = new AnswerClass();
  22. newUserAnswer.User = user;
  23. newUserAnswer.Correct = CorrectAnswersCounter(_test, user);
  24. newUserAnswer.Count = cdb.db.Questions.Where(item => item.IdTest == _test.IdTest).Count();
  25. answerList.Add(newUserAnswer);
  26. }
  27. }
  28. AnswersListBox.ItemsSource = answerList;
  29. if (AnswersListBox.Items.Count == 0)
  30. ResultLabel.Content = "На данный момент тест еще никто не прошел.";
  31. }
  32. public int CorrectAnswersCounter(Tests test, Users user)
  33. {
  34. Quest.Answer = cdb.db.Questions.Where(item => item.IdTest == test.IdTest).Select(it => it.Answer).ToArray();
  35. Quest.UserAnswer = cdb.db.Answers.Where(item => item.Users.IdUser == user.IdUser && item.Questions.IdTest == test.IdTest).Select(it => it.Answer).ToArray();
  36. int value = 0;
  37. if (Quest.Answer.Length == Quest.UserAnswer.Length)
  38. for (int i = 0; i < Quest.Answer.Length; i++)
  39. if (Quest.Answer[i] == Quest.UserAnswer[i])
  40. value++;
  41. return value;
  42. }
  43. private void AnswersListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  44. {
  45. if (((AnswerClass)AnswersListBox.SelectedItem) != null)
  46. {
  47. NavigationService.Navigate(new Pages.CheckTestResults(test,
  48. cdb.db.Users.Where(item => item.IdUser == ((AnswerClass)AnswersListBox.SelectedItem).User.IdUser).FirstOrDefault()));
  49. }
  50. }
  51. private void BackButton_Click(object sender, RoutedEventArgs e)
  52. {
  53. NavigationService.GoBack();
  54. }
  55. public static class Quest
  56. {
  57. public static string[] Answer;
  58. public static string[] UserAnswer;
  59. }
  60. public class AnswerClass
  61. {
  62. public Users User { get; set; }
  63. public int Correct { get; set; }
  64. public int Count { get; set; }
  65. }
  66. }
  67. }