ProfilePage.xaml.cs 5.1 KB

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