123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- 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
- {
- /// <summary>
- /// Логика взаимодействия для TestPage.xaml
- /// </summary>
- public partial class TestPage : Page
- {
- LoginedTable loginedTable;
- List<Classes.AnswerClass> answerList;//лист для записи вопосов и ответов
- public TestPage(LoginedTable logined)
- {
- InitializeComponent();
- loginedTable = logined;
- List<QuestionTable> questions = Classes.DateBase.connect.QuestionTable.ToList();// запись вопросов в лист
- listTest.ItemsSource = questions;// данные с вопросами
- answerList = new List<Classes.AnswerClass>();// вопросы с ответами
- foreach (QuestionTable question in questions)
- {
- answerList.Add(new Classes.AnswerClass() { Question = question.ID });// запись ID вопросов в лист
- }
- }
- /// <summary>
- /// Проверка выбора ответа
- /// </summary>
- /// <param name="sender">Объект кнопки</param>
- /// <param name="i">Индекс ответа</param>
- 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<int> questions = new List<int>();
- foreach (Classes.AnswerClass answer in answerList)
- {
- if (answer.Aswer == 1)// поисо ответа "часто"
- {
- questions.Add(answer.Question);// запись вопроса
- }
- }
- if(questions.Count > 0)
- {
- List<int> 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);
- }
- }
- }
|