|
@@ -8,6 +8,7 @@ using System.Windows.Navigation;
|
|
|
|
|
|
namespace MyTests.Pages
|
|
namespace MyTests.Pages
|
|
{
|
|
{
|
|
|
|
+ // Страница с редактированием/созданием теста
|
|
public partial class EditTestPage : Page
|
|
public partial class EditTestPage : Page
|
|
{
|
|
{
|
|
Tests test;
|
|
Tests test;
|
|
@@ -15,11 +16,15 @@ namespace MyTests.Pages
|
|
public EditTestPage(Tests _test = null)
|
|
public EditTestPage(Tests _test = null)
|
|
{
|
|
{
|
|
InitializeComponent();
|
|
InitializeComponent();
|
|
- if (_test == null)
|
|
|
|
|
|
+
|
|
|
|
+ if (_test == null) // Создание теста
|
|
{
|
|
{
|
|
try
|
|
try
|
|
{
|
|
{
|
|
|
|
+ // Получение максимального id теста и добавления к нему 1
|
|
int testId = cdb.db.Tests.Select(p => p.IdTest).DefaultIfEmpty(0).Max() + 1;
|
|
int testId = cdb.db.Tests.Select(p => p.IdTest).DefaultIfEmpty(0).Max() + 1;
|
|
|
|
+
|
|
|
|
+ // Создание теста
|
|
Tests newTest = new Tests()
|
|
Tests newTest = new Tests()
|
|
{
|
|
{
|
|
IdTest = testId,
|
|
IdTest = testId,
|
|
@@ -29,8 +34,12 @@ namespace MyTests.Pages
|
|
IsVisible = false,
|
|
IsVisible = false,
|
|
CanAgain = false
|
|
CanAgain = false
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+ // Добавление теста в базу данных
|
|
cdb.db.Tests.Add(newTest);
|
|
cdb.db.Tests.Add(newTest);
|
|
cdb.db.SaveChanges();
|
|
cdb.db.SaveChanges();
|
|
|
|
+
|
|
|
|
+ // Выбор созданного теста
|
|
test = cdb.db.Tests.Where(item => item.IdTest == testId).FirstOrDefault();
|
|
test = cdb.db.Tests.Where(item => item.IdTest == testId).FirstOrDefault();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
@@ -38,88 +47,101 @@ namespace MyTests.Pages
|
|
new ErrorWindow(ex.Message);
|
|
new ErrorWindow(ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ else // Редактирование теста
|
|
{
|
|
{
|
|
- test = _test;
|
|
|
|
|
|
+ test = _test; // Выбор теста
|
|
|
|
+
|
|
|
|
+ // Замена состояний CheckBox
|
|
IsVisibleCB.IsChecked = test.IsVisible;
|
|
IsVisibleCB.IsChecked = test.IsVisible;
|
|
IsAnswersVisibleCB.IsChecked = test.IsAnswersVisible;
|
|
IsAnswersVisibleCB.IsChecked = test.IsAnswersVisible;
|
|
CanAgainCB.IsChecked = test.CanAgain;
|
|
CanAgainCB.IsChecked = test.CanAgain;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // Заполнение верхней панели
|
|
|
|
+ TestNameBox.Text = test.Name; // Заполнение названия теста
|
|
|
|
+ TestImg.Source = test.Image == null ? // Проверка на существование картинки у теста
|
|
|
|
+ new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) : // в базе данных. Если существует, то устанавливается на ту, что в базе данных
|
|
|
|
+ ImagesFunctions.NewImage(_test); // Если не существует, то устанавливается стандартная
|
|
|
|
|
|
- TestNameBox.Text = test.Name;
|
|
|
|
- TestImg.Source = test.Image == null ?
|
|
|
|
- new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) :
|
|
|
|
- ImagesFunctions.NewImage(_test);
|
|
|
|
-
|
|
|
|
|
|
+ // Очистка списка с вопросами
|
|
QuestionsListBox.Items.Clear();
|
|
QuestionsListBox.Items.Clear();
|
|
|
|
+ // Вызов метода с обновлением вопросов
|
|
QuestionsUpdate();
|
|
QuestionsUpdate();
|
|
}
|
|
}
|
|
private void QuestionsUpdate()
|
|
private void QuestionsUpdate()
|
|
{
|
|
{
|
|
|
|
+ // Заполнение списка с вопросами данными из базы данных
|
|
QuestionsListBox.ItemsSource = cdb.db.Questions.Where(item => item.IdTest == test.IdTest).ToList();
|
|
QuestionsListBox.ItemsSource = cdb.db.Questions.Where(item => item.IdTest == test.IdTest).ToList();
|
|
}
|
|
}
|
|
|
|
|
|
private void QuestionsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
private void QuestionsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
{
|
|
- selected = ((Questions)QuestionsListBox.SelectedItem);
|
|
|
|
|
|
+ // Заполнение выбранного элемента списка с вопросамми
|
|
|
|
+ selected = (Questions)QuestionsListBox.SelectedItem;
|
|
}
|
|
}
|
|
|
|
|
|
private void AddQuestionButton_Click(object sender, RoutedEventArgs e)
|
|
private void AddQuestionButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
{
|
|
|
|
+ // Открытие окна с добавлением вопроса
|
|
new QuestionAddToTestWindow(test).ShowDialog();
|
|
new QuestionAddToTestWindow(test).ShowDialog();
|
|
|
|
+ // Вызов метода с обновлением вопросов
|
|
QuestionsUpdate();
|
|
QuestionsUpdate();
|
|
}
|
|
}
|
|
private void DeleteQuestionButton_Click(object sender, RoutedEventArgs e)
|
|
private void DeleteQuestionButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
{
|
|
- if (selected != null)
|
|
|
|
|
|
+ if (selected != null) // Проверка, выбран ли элемент списка с вопросами
|
|
{
|
|
{
|
|
|
|
+ // Открытие окна с подтверждением действия
|
|
ConfirmationWindow confWindow = new ConfirmationWindow();
|
|
ConfirmationWindow confWindow = new ConfirmationWindow();
|
|
confWindow.ShowDialog();
|
|
confWindow.ShowDialog();
|
|
- if (confWindow.answer)
|
|
|
|
|
|
+ if (confWindow.answer) // Если ответ "Да"
|
|
{
|
|
{
|
|
try
|
|
try
|
|
{
|
|
{
|
|
|
|
+ // Проход по всем ответам пользователей выбранного вопроса
|
|
foreach (Answers answer in cdb.db.Answers.Where(item => item.IdQuestion == selected.IdQuestion))
|
|
foreach (Answers answer in cdb.db.Answers.Where(item => item.IdQuestion == selected.IdQuestion))
|
|
- cdb.db.Answers.Remove(answer);
|
|
|
|
- cdb.db.Questions.Remove(selected);
|
|
|
|
- cdb.db.SaveChanges();
|
|
|
|
|
|
+ cdb.db.Answers.Remove(answer); // Удаление всех ответов пользователей, которые прошли этот вопрос.
|
|
|
|
+ cdb.db.Questions.Remove(selected); // Удаление вопроса
|
|
|
|
+ cdb.db.SaveChanges(); // Сохранение
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
{
|
|
{
|
|
- new ErrorWindow(ex.Message);
|
|
|
|
|
|
+ new ErrorWindow(ex.Message); // Вывод ошибки, если она есть
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ // Вызов метода с обновлением вопросов
|
|
QuestionsUpdate();
|
|
QuestionsUpdate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private void BackButton_Click(object sender, RoutedEventArgs e)
|
|
private void BackButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
{
|
|
|
|
+ // Возврат на прошлую страницу
|
|
NavigationService.GoBack();
|
|
NavigationService.GoBack();
|
|
}
|
|
}
|
|
|
|
|
|
private void TestImg_MouseDown(object sender, MouseButtonEventArgs e)
|
|
private void TestImg_MouseDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
{
|
|
|
|
+ // Выбор картинки с компьютера пользователя
|
|
BitmapImage image = ImagesFunctions.SelectImage();
|
|
BitmapImage image = ImagesFunctions.SelectImage();
|
|
- if (image != null)
|
|
|
|
|
|
+ if (image != null) // Если картинка выбрана
|
|
{
|
|
{
|
|
- TestImg.Source = image;
|
|
|
|
- test.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)TestImg.Source);
|
|
|
|
- cdb.db.SaveChanges();
|
|
|
|
|
|
+ TestImg.Source = image; // Замена картинки теста на выбранную
|
|
|
|
+ test.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)TestImg.Source); // Замена картинки в базе данных в виде varbinary
|
|
|
|
+ cdb.db.SaveChanges(); // Сохранение
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private void TestNameBox_LostFocus(object sender, RoutedEventArgs e)
|
|
private void TestNameBox_LostFocus(object sender, RoutedEventArgs e)
|
|
{
|
|
{
|
|
- test.Name = TestNameBox.Text;
|
|
|
|
|
|
+ test.Name = TestNameBox.Text; // Замена названия теста в базе данных на содержимое TestNameBox
|
|
}
|
|
}
|
|
|
|
|
|
private void SaveInfoCB(object sender, RoutedEventArgs e)
|
|
private void SaveInfoCB(object sender, RoutedEventArgs e)
|
|
{
|
|
{
|
|
- test.IsVisible = IsVisibleCB.IsChecked == true;
|
|
|
|
- test.IsAnswersVisible = IsAnswersVisibleCB.IsChecked == true;
|
|
|
|
- test.CanAgain = CanAgainCB.IsChecked == true;
|
|
|
|
- cdb.db.SaveChanges();
|
|
|
|
|
|
+ test.IsVisible = IsVisibleCB.IsChecked == true; // замена IsVisible в базе данных на содержимое IsVisibleCB
|
|
|
|
+ test.IsAnswersVisible = IsAnswersVisibleCB.IsChecked == true; // замена IsAnswersVisible в базе данных на содержимое IsAnswersVisibleCB
|
|
|
|
+ test.CanAgain = CanAgainCB.IsChecked == true; // замена CanAgain в базе данных на содержимое CanAgainCB
|
|
|
|
+ cdb.db.SaveChanges(); // сохранение данных
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|