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); } } }