ProfilePage.xaml.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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.Media.Imaging;
  7. using System.Windows.Navigation;
  8. namespace MyTests.Pages
  9. {
  10. public partial class ProfilePage : Page
  11. {
  12. static Users user;
  13. public ProfilePage(Users _user)
  14. {
  15. InitializeComponent();
  16. TestsListBox.Items.Clear();
  17. user = _user;
  18. FIOLabel.Content = user.Surname + " " + user.Name + " " + user.Patronymic;
  19. ProfileImage.Source = user.Image == null ?
  20. new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute)) :
  21. ImagesFunctions.NewImage(user);
  22. EmailBox.Text = user.Email;
  23. InfoBox.Text = user.Info;
  24. if (user != Session.User)
  25. {
  26. EmailBox.IsEnabled = false;
  27. InfoBox.IsEnabled = false;
  28. SaveButton.Visibility = Visibility.Collapsed;
  29. }
  30. if (user.Post == "Преподаватель")
  31. TestsLoading();
  32. else
  33. TestsListBox.Visibility = Visibility.Collapsed;
  34. }
  35. private void EditImage_Click(object sender, RoutedEventArgs e)
  36. {
  37. if (user == Session.User)
  38. {
  39. BitmapImage image = ImagesFunctions.SelectImage();
  40. if (image != null)
  41. {
  42. ProfileImage.Source = image;
  43. Session.User.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)ProfileImage.Source);
  44. cdb.db.SaveChanges();
  45. }
  46. }
  47. }
  48. private void TestsLoading()
  49. {
  50. List<Tests> list = user != Session.User ? cdb.db.Tests.Where(item => item.IdUser == user.IdUser && item.IsVisible == true).ToList() :
  51. cdb.db.Tests.Where(item => item.IdUser == user.IdUser).ToList();
  52. List<TestsClass> testsList = new List<TestsClass>();
  53. foreach (Tests test in list)
  54. {
  55. TestsClass tc = new TestsClass();
  56. tc.test = test;
  57. tc.testImage = test.Image == null ? new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) : ImagesFunctions.NewImage(test);
  58. testsList.Add(tc);
  59. }
  60. TestsListBox.ItemsSource = testsList;
  61. }
  62. private void SaveButton_Click(object sender, RoutedEventArgs e)
  63. {
  64. if (!Functions.IsValidEmail(EmailBox.Text))
  65. new ErrorWindow("Email введен неверно.").Show();
  66. else if (Functions.IsEmailAlreadyTaken(EmailBox.Text) && EmailBox.Text != user.Email)
  67. new ErrorWindow("Данный email уже используется.").Show();
  68. else
  69. {
  70. Session.User.Email = EmailBox.Text;
  71. Session.User.Info = InfoBox.Text;
  72. cdb.db.SaveChanges();
  73. new ErrorWindow("Успешно.").ShowDialog();
  74. }
  75. }
  76. private void CheckResultsButton_Click(object sender, RoutedEventArgs e)
  77. {
  78. Button btn = (Button)sender;
  79. if (btn.DataContext is TestsClass)
  80. NavigationService.Navigate(new Pages.CheckTestResultsCatalog(((TestsClass)btn.DataContext).test));
  81. }
  82. private void EditTestButton_Click(object sender, RoutedEventArgs e)
  83. {
  84. Button btn = (Button)sender;
  85. if (btn.DataContext is TestsClass)
  86. NavigationService.Navigate(new Pages.EditTestPage(((TestsClass)btn.DataContext).test));
  87. }
  88. private void TestsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  89. {
  90. try
  91. {
  92. if (((Tests)TestsListBox.SelectedItem) != null)
  93. {
  94. Session.OpenedTest = cdb.db.Tests.Where(item => item.IdTest == ((Tests)TestsListBox.SelectedItem).IdTest).FirstOrDefault();
  95. Session.Points = 0;
  96. Session.CurQuestion = 0;
  97. Session.Quest.Content = cdb.db.Questions.Where(item => item.IdTest == Session.OpenedTest.IdTest).Select(item => item.Content).ToArray();
  98. Session.Quest.Answer = cdb.db.Questions.Where(item => item.IdTest == Session.OpenedTest.IdTest).Select(item => item.Answer).ToArray();
  99. NavigationService.Navigate(new Pages.CurTestPage());
  100. }
  101. }
  102. catch
  103. {
  104. new ErrorWindow("Ошибка открытия теста.").ShowDialog();
  105. }
  106. }
  107. private void DeleteTestButton_Click(object sender, RoutedEventArgs e)
  108. {
  109. Button btn = (Button)sender;
  110. if (btn.DataContext is TestsClass)
  111. {
  112. ConfirmationWindow confWindow = new ConfirmationWindow();
  113. confWindow.ShowDialog();
  114. if (confWindow.answer)
  115. {
  116. foreach (Answers answer in cdb.db.Answers.Where(item => item.Questions.IdTest == ((TestsClass)btn.DataContext).test.IdTest))
  117. cdb.db.Answers.Remove(answer);
  118. foreach (Questions question in cdb.db.Questions.Where(item => item.IdTest == ((TestsClass)btn.DataContext).test.IdTest))
  119. cdb.db.Questions.Remove(question);
  120. cdb.db.Tests.Remove(((TestsClass)btn.DataContext).test);
  121. cdb.db.SaveChanges();
  122. TestsLoading();
  123. }
  124. }
  125. }
  126. public class TestsClass
  127. {
  128. public Tests test { get; set; }
  129. public BitmapImage testImage { get; set; }
  130. }
  131. }
  132. }