using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace HelpHelf.Pages
{
///
/// Логика взаимодействия для TestPage.xaml
///
public partial class TestPage : Page
{
LoginedTable loginedTable;
List answerList;//лист для записи вопосов и ответов
public TestPage(LoginedTable logined)
{
InitializeComponent();
loginedTable = logined;
List questions = Classes.DateBase.connect.QuestionTable.ToList();// запись вопросов в лист
listTest.ItemsSource = questions;// данные с вопросами
answerList = new List();// вопросы с ответами
foreach (QuestionTable question in questions)
{
answerList.Add(new Classes.AnswerClass() { Question = question.ID });// запись ID вопросов в лист
}
}
///
/// Проверка выбора ответа
///
/// Объект кнопки
/// Индекс ответа
void CheckRadioButton(object sender, int i)
{
RadioButton radio = sender as RadioButton;
int id = Convert.ToInt32(radio.Uid);// берем id вопроса
int index = answerList.FindLastIndex(x => x.Question == id);// ищем индекс в листе по id
answerList[index].Aswer = i;// записываем ответ
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
if(Classes.CheckFields.CheckAnswer(answerList))
{
try
{
SessionTestTable session = new SessionTestTable()
{
IdUser = loginedTable.ID,
Date = DateTime.Now,
UserTable = loginedTable.UserTable
};
Classes.DateBase.connect.SessionTestTable.Add(session);// добавление в бд
List questions = new List();
foreach (Classes.AnswerClass answer in answerList)
{
if (answer.Aswer == 1)// поисо ответа "часто"
{
questions.Add(answer.Question);// запись вопроса
}
}
if(questions.Count > 0)
{
List disaeses = Classes.DateBase.connect.DiseaseQuestionTable.Where(x=> questions.Contains(x.IdQuestion)).Select(x=> x.IdDisease).ToList();// поиск заполевания по вопросу(id)
disaeses = disaeses.Distinct().ToList();// дропаем совподения
foreach(int disaese in disaeses)
{
SessionDiseaseTable diseaseTable = new SessionDiseaseTable()
{
IdDisease = disaese,
IdSession = session.ID
};
Classes.DateBase.connect.SessionDiseaseTable.Add(diseaseTable);
}
}
else// человек здоров
{
SessionDiseaseTable diseaseTable = new SessionDiseaseTable()
{
IdSession = session.ID,
IdDisease = 9
};
Classes.DateBase.connect.SessionDiseaseTable.Add(diseaseTable);
}
Classes.DateBase.connect.SaveChanges();
MessageBox.Show("Тестирование завершено","Информация",MessageBoxButton.OK, MessageBoxImage.Information);
Classes.DebugClass.diagWrite("Переход на страницу результата теста");
Classes.FrameClass.frmMain.Navigate(new ResultPage(session.ID));
}
catch (Exception ex)
{
Classes.DebugClass.diagWrite(ex.Message);
MessageBox.Show("Ошибка", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
Classes.DebugClass.diagWrite("Переход на страницу главного меню");
Classes.FrameClass.frmMain.Navigate(new MainPage(loginedTable));
}
private void rbAlways_Checked(object sender, RoutedEventArgs e)
{
CheckRadioButton(sender, 1);
}
private void rbSometimes_Checked(object sender, RoutedEventArgs e)
{
CheckRadioButton(sender, 2);
}
private void rbRarely_Checked(object sender, RoutedEventArgs e)
{
CheckRadioButton(sender, 3);
}
private void rbNever_Checked(object sender, RoutedEventArgs e)
{
CheckRadioButton(sender, 4);
}
}
}