public Pupil(User user) { this.user = user; //заполняем название теста IdUser = user.Id; InitializeComponent(); label1_Name.Text = $"{user.LastName} {user.FirstName} {user.MiddleName}"; //наследуемый метод base.Top_Button(bunifuImageButton1_Min, bunifuImageButton1_Max, bunifuImageButton2_Norm); this.panel14_Opoves.Visible = false; this.label16_Log_Opov.Text = user.Login; //выводит на несколько секунд сообщение timer1.Tick += Timer1_Tick; timer1.Start(); this.button1_Close.Click += Button1_Close_Click; bunifuImageButton1_Close.Click += Button1_Close_Click; this.button1_Statistika.Click += Button1_Statistika_Click; //добавляем названия предметов из базы using (Tests_DBContainer db = new Tests_DBContainer()) { var category = db.Category.ToList(); foreach (var item in category) { comboBox1_Predmet.Items.Add(item.Title.ToString()); } } //изменения предмета comboBox1_Predmet.TextChanged += ComboBox1_Predmet_TextChanged; comboBox1_Predmet.Click += ComboBox1_Predmet_Click; //кнопка запуска теста button1_Start.Click += Button1_Start_Click; //выбор и изменения значений в listView listView1_Name_Test.SelectedIndexChanged += ListView1_Name_Test_SelectedIndexChanged; }
public void Combobox_Selected_Test() { var categori = Lcategor.Find(z => z.Title == this.comboBox_SelectCategory.SelectedItem.ToString()); //находим по выбраному из комбобокса селект this.comboBox_Select_Test.Items.Clear(); //всегда очишаем комбобокс тестов using (Tests_DBContainer db = new Tests_DBContainer()) { var test = db.Test.Where(z => z.CategoryId == categori.Id && z.IsActual == 1).ToList();//люмбда выражение для нахождения id лист Test Ltest = test; foreach (Test VARIABLE in test) { this.comboBox_Select_Test.Items.Add(VARIABLE.Title);//заполняем комбобокс тестов } if (test.Count != 0) { this.comboBox_Select_Test.SelectedIndex = 0;//ставим первый айтем как выбранный } else { this.comboBox_Select_Test.Items.Add(""); this.comboBox_Select_Test.SelectedIndex = 0; } } }
private void Button1_Start_Click(object sender, EventArgs e) { using (Tests_DBContainer db = new Tests_DBContainer()) { //выборка вопросов из базы var test = db.Test.Join( db.TestQuestion, t => t.Id, tq => tq.TestId, (t, tq) => new { testTitle = t.Title }).Where(t => t.testTitle == nameTest).ToList(); //Проверка на наличие вопросов в данном тесте if (test.Count > 0) { //переход на страницу прохождения теста Pupil_Test form3 = new Pupil_Test(IdUser, nameTest); form3.ShowDialog(); } else { //вывод ошибки MessageBox.Show($"Тест {nameTest} не содержит вопросов!", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); } button1_Start.Enabled = false; //убираем все выбранные элементы listView foreach (var i in listView1_Name_Test.SelectedIndices) { listView1_Name_Test.Items[Convert.ToInt32(i)].Selected = false; } } }
/// <summary> /// Обработка нажатия кнопи"Отмена" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_cancel_Click(object sender, EventArgs e) { //Вывод сообщения для пользователя DialogResult res = MessageBox.Show("Вы действительно хотите отменить создание теста?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question); //Если пользователь подвердил отмену создания теста if (res == DialogResult.Yes) { using (Tests_DBContainer tests = new Tests_DBContainer()) { using (var transaction = tests.Database.BeginTransaction()) { try { Test test = tests.Test.FirstOrDefault(t => t.Id == this.testId); if (test != null) { tests.Test.Remove(test); //Удаляем тест tests.SaveChanges(); //Сохраняем вопросы transaction.Commit(); //подтверждаем транзакцию this.DialogResult = DialogResult.OK; //закрываем окно } } catch (Exception ex) { transaction.Rollback(); //отменяем все изменения в БД MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); //выводим сообщение об ошибке } } } } }
public void renderTestList() { using (Tests_DBContainer tests = new Tests_DBContainer()) { var ds = tests.Test .Join(tests.TestCreator, t => t.Id, tc => tc.TestId, (t, tc) => new { t, tc }) .Where(ttc => ttc.t.Id == ttc.tc.TestId && ttc.tc.UserId == this.user.Id && ttc.t.CategoryId == currentCategory) .Select(ttc => ttc.t) .ToList(); listBox_SelectTestToEdit.DataSource = ds; listBox_SelectTestToEdit.DisplayMember = "Title"; listBox_SelectTestToEdit.ValueMember = "Id"; if (listBox_SelectTestToEdit.Items.Count > 0) { button_EditTest.Enabled = true; button_TurnOn_OffTest.Enabled = true; button_Delete_Test.Enabled = true; } else { button_EditTest.Enabled = false; button_TurnOn_OffTest.Enabled = false; button_Delete_Test.Enabled = false; } } }
private void ComboBox1_Predmet_TextChanged(object sender, EventArgs e) { //отчистка listView listView1_Name_Test.Items.Clear(); //убираем все выбранные элементы listView foreach (var i in listView1_Name_Test.SelectedIndices) { listView1_Name_Test.Items[Convert.ToInt32(i)].Selected = false; } var namePredmet = comboBox1_Predmet.SelectedItem.ToString(); using (Tests_DBContainer db = new Tests_DBContainer()) { //выор тестов из базы var tests = db.Test.Join( db.Category, t => t.CategoryId, c => c.Id, (t, c) => new { TitleTest = t.Title, TitleCategory = c.Title }).Where(n => n.TitleCategory.ToString() == namePredmet).ToList(); //запись тестов по заданной категории и запись в listView foreach (var item in tests) { ListViewItem list = new ListViewItem(item.TitleTest.ToString()); listView1_Name_Test.Items.Add(list); } } }
public void Show_user() { this.listBox_ShowStatistic.Items.Clear(); //очистка лист бокса var test = Ltest.Find(z => z.Title == this.comboBox_Select_Test.SelectedItem.ToString()); //находим выбранный тест using (Tests_DBContainer db = new Tests_DBContainer()) { var userTest = db.UserTest .Where(z => z.TestId == test.Id && z.UserId == user.Id) .OrderByDescending(item => item.StartDate) .ToList();//по айдишнику теста находим пользователей которые его проходили if (userTest.Count != 0) { this.listBox_ShowStatistic.Items.Add( $"[ {user.LastName.ToUpper()} { user.FirstName.ToUpper()} {user.MiddleName.ToUpper()} ]"); foreach (var VARIABLE in userTest) { //для расчета времени прохождения теста TimeSpan span = (VARIABLE.EndDate - VARIABLE.StartDate); //выводим в лист бокс информацию this.listBox_ShowStatistic.Items.Add( $"Дата прохождения: {VARIABLE.StartDate.ToString("d")} Результат: {VARIABLE.Result} Время прохождения: {FormatedTime(span)}"); } } } }
private void ListBox_SelectQuestion_SelectedIndexChanged(object sender, EventArgs e) { //проверка на выбор отета RadioButton и переход к следующему вопросу //запись выбранного ответа RecordSelectedAnswer(); //очистка panel_ShowAnswer для добавления новых RadioButton panel_ShowAnswer.Controls.Clear(); //проверка на выбранный элемент списка if (listBox_SelectQuestion.SelectedIndex != -1) { //названия выбранного элемента списка var text = listBox_SelectQuestion.SelectedItem.ToString(); using (Tests_DBContainer db = new Tests_DBContainer()) { //получение из базы ответов на выбранный вопрос var answer = db.TestQuestion.Join( db.TestQuestionAnswer, tq => tq.Id, tqa => tqa.TestQuestionId, (tq, tqa) => new { id = tq.Id, idAns = tqa.Id, textQuestion = tq.Question, tqa.Answer }).Where(t => t.textQuestion == text).ToList(); //переменная для определения отступа RadioButton по Y int num = 0; for (int i = 0; i < answer.Count; i++) { //запись во временную переменую id вопроса tempidQues = answer[i].id; //создание RadioButton RadioButton RB = new RadioButton { Margin = new Padding(10, 5, 5, 5), Text = answer[i].Answer.ToString(), Location = new Point(10, num += 30), AutoSize = true, Tag = i.ToString() }; //проверка на уже отмеченный RadioButton if (ListAnswer.FirstOrDefault(ee => ee.Id == tempidQues).IdAnswer == answer[i].idAns) { RB.Checked = true; } //добавляем к каждому RadioButton событие на изменения RB.CheckedChanged += RB_CheckedChanged; //добавляем RadioButton в panel_ShowAnswer panel_ShowAnswer.Controls.Add(RB); } } } else { //если ни чего не выбранно то отчистить panel_ShowAnswer от RadioButton panel_ShowAnswer.Controls.Clear(); } }
private void renderCategoryList() { using (Tests_DBContainer tests = new Tests_DBContainer()) { comboBox_SelectCategory.DataSource = tests.Category.ToList(); comboBox_SelectCategory.ValueMember = "Id"; comboBox_SelectCategory.DisplayMember = "Title"; } }
private void Button1_Vkhod_Click(object sender, EventArgs e) { if (textBox1_Login.Text == "" || textBox1_Password.Text == "") { label15_Vhod_Null.Visible = true; return; } try //Отлавливание ошибок при подключении БД { using (Tests_DBContainer tests = new Tests_DBContainer()) { string pass = textBox1_Password.Text.GetHashCode().ToString(); //получение хеш кода введенного пароля User user = tests.User.FirstOrDefault(z => z.Login == textBox1_Login.Text && z.Password == pass); if (user == null) { this.label6_Error.Visible = true; return; } if (user.Role.Title == "Студент") { Pupil pupil = new Pupil(user); textBox1_Login.Text = null; textBox1_Password.Text = null; this.ShowInTaskbar = false; Opacity = 0; if (pupil.ShowDialog() == DialogResult.OK) { Opacity = 1; this.ShowInTaskbar = true; } } else if (user.Role.Title == "Преподаватель") { Teacher teacher = new Teacher(user); textBox1_Login.Text = null; textBox1_Password.Text = null; this.ShowInTaskbar = false; Opacity = 0; if (teacher.ShowDialog() == DialogResult.OK) { Opacity = 1; this.ShowInTaskbar = true; } } } } catch (Exception ex) { MessageBox.Show($"Возникла не предвиденная ошибка с подключением к базе даных!\n Проверте подключение!{ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void renderQuestionList() { using (Tests_DBContainer tests = new Tests_DBContainer()) { var ds = tests.TestQuestion.Where(t => t.TestId == testId).ToList(); listBox_SelectQuestionToEdit.DataSource = ds; listBox_SelectQuestionToEdit.DisplayMember = "Question"; listBox_SelectQuestionToEdit.ValueMember = "Id"; } }
private void renderListAnswers() { textBox_EnterdQuestions.Text = ""; int id = Convert.ToInt32(comboBox_SelectQuestion.SelectedValue); using (Tests_DBContainer tests = new Tests_DBContainer()) { foreach (TestQuestionAnswer tqa in tests.TestQuestionAnswer.Where(t => t.TestQuestionId == id)) { textBox_EnterdQuestions.Text += tqa.Answer + Environment.NewLine; } } }
private void button_Delete_Question_Click(object sender, EventArgs e) { using (Tests_DBContainer tests = new Tests_DBContainer()) { var row = tests.TestQuestion.FirstOrDefault(t => t.Id == currentQuestion); if (row != null) { tests.TestQuestion.Remove(row); tests.SaveChanges(); } } this.renderQuestionList(); }
public void renderTestList() { using (Tests_DBContainer tests = new Tests_DBContainer()) { var ds = tests.Test .Join(tests.TestCreator, t => t.Id, tc => tc.TestId, (t, tc) => new { t, tc }) .Where(ttc => ttc.t.Id == ttc.tc.TestId && ttc.tc.UserId == this.user.Id && ttc.t.CategoryId == currentCategory) .Select(ttc => ttc.t) .ToList(); listBox_SelectTestToEdit.DataSource = ds; listBox_SelectTestToEdit.DisplayMember = "Title"; listBox_SelectTestToEdit.ValueMember = "Id"; } }
private void renderListQuestions(int ind = 0) { using (Tests_DBContainer tests = new Tests_DBContainer()) { comboBox_SelectQuestion.DataSource = tests.TestQuestion.Where(t => t.TestId == this.testId).ToList(); comboBox_SelectQuestion.ValueMember = "Id"; comboBox_SelectQuestion.DisplayMember = "Question"; if (comboBox_SelectQuestion.Items.Count > 0) { comboBox_SelectQuestion.SelectedIndex = ind; renderListAnswers(); } } }
private void button_TurnOn_OffQuestion_Click(object sender, EventArgs e) { using (Tests_DBContainer tests = new Tests_DBContainer()) { var row = tests.TestQuestion.FirstOrDefault(t => t.Id == currentQuestion); if (row != null) { byte reverse = questionIsActual != (byte)0 ? (byte)0 : (byte)1; row.IsActual = reverse; tests.SaveChanges(); } } this.renderQuestionList(); }
public Pupil_Test(int idUser, string nameTest) { InitializeComponent(); //наследуемый метод bunifuImageButton1_Min.Click += BunifuImageButton1_Min_Click; bunifuImageButton1_Close.Click += BunifuImageButton1_Close_Click; FormClosing += Pupil_Test_FormClosing; //изменяем название теста WindowState = FormWindowState.Maximized; label1_Name.Text = nameTest; using (Tests_DBContainer db = new Tests_DBContainer()) { //определения пользователя var User = db.User.FirstOrDefault(u => u.Id == idUser); //выборка вопросов из базы var test = db.Test.Join( db.TestQuestion, t => t.Id, tq => tq.TestId, (t, tq) => new { id = tq.Id, idTest = t.Id, testTitle = t.Title, testQuestion = tq.Question }).Where(t => t.testTitle == nameTest).ToList(); //заполняем объект userTest начальными данными userTest = new UserTest { UserId = idUser, StartDate = DateTime.Now, }; countQuestion = test.Count; foreach (var item in test) { //добавления вопросов в listBox listBox_SelectQuestion.Items.Add(item.testQuestion); //добавления id вопросов в массив ответов Answer newAnswer = new Answer(); newAnswer.Id = item.id; ListAnswer.Add(newAnswer); userTest.TestId = item.idTest; } } listBox_SelectQuestion.SelectedIndexChanged += ListBox_SelectQuestion_SelectedIndexChanged; button_CancelTest.Click += Button_CancelTest_Click; button1_EndTest.Click += Button1_EndTest_Click; }
private void button1_Categiri_Click(object sender, EventArgs e) { if (textBox_AddNewCategory.Text != "") { using (Tests_DBContainer tests = new Tests_DBContainer()) { Category category = new Category(); category.Title = textBox_AddNewCategory.Text; tests.Category.Add(category); tests.SaveChanges(); this.renderCategoryList(); } } }
private void RB_CheckedChanged(object sender, EventArgs e) { //изменения в RadioButton RadioButton r = sender as RadioButton; //запись значения RadioButton во временную переменую using (Tests_DBContainer db = new Tests_DBContainer()) { var ansv = db.TestQuestionAnswer.FirstOrDefault(a => a.Answer == r.Text); tempAnswer = ansv.Id; tempIsAnswer = ansv.IsAnswer; } tempDate = DateTime.Now; //изменяем значение флага flag = false; }
private bool saveAnswers(bool checkAnswersCount = false) { int isAnswerCnt = 0; using (Tests_DBContainer tests = new Tests_DBContainer()) { foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells["Answer"].Value.ToString() == "") { MessageBox.Show("Ответ не может быть пустым", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } if (Convert.ToByte(row.Cells["IsAnswer"].Value) == 1) { isAnswerCnt++; } if (isAnswerCnt > 1) { MessageBox.Show("Нельзя указывать больше одного правильного ответа", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } int aId; int.TryParse(row.Cells["Id"].Value.ToString(), out aId); var answer = tests.TestQuestionAnswer.FirstOrDefault(t => t.Id == aId); if (answer != null) { answer.Answer = row.Cells["Answer"].Value.ToString(); answer.IsAnswer = Convert.ToByte(row.Cells["IsAnswer"].Value); tests.SaveChanges(); } } } if (checkAnswersCount && isAnswerCnt == 0) { MessageBox.Show("Укажите один правильный ответ", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(true); }
public void ComboBox_SelectCategory_Show() { using (Tests_DBContainer db = new Tests_DBContainer()) { Lcategor = db.Category.ToList();//заполняем лист категории для долнейшего использования } foreach (Category VARIABLE in Lcategor) { this.comboBox_SelectCategory.Items.Add(VARIABLE.Title);//заполняем комбобокс категориями } if (Lcategor.Count != 0) { this.comboBox_SelectCategory.SelectedIndex = 0;//ставим первый айтем по умолчанию как выбраный } }
private void button__Add_Click(object sender, EventArgs e) { if (!this.saveAnswers(false)) { return; } using (Tests_DBContainer tests = new Tests_DBContainer()) { var answer = new TestQuestionAnswer() { Answer = "", TestQuestionId = questionId, IsAnswer = 0 }; tests.TestQuestionAnswer.Add(answer); tests.SaveChanges(); renderAnswerList(); } }
private void button1_Categiri_Click(object sender, EventArgs e) { if (textBox_AddNewCategory.Text != "") { using (Tests_DBContainer tests = new Tests_DBContainer()) { Category category = new Category(); category.Title = textBox_AddNewCategory.Text; tests.Category.Add(category); tests.SaveChanges(); this.bunifuTransition2.HideSync(this.panel_AddNewCategory); this.renderCategoryList(); comboBox_SelectCategory.SelectedIndex = comboBox_SelectCategory.Items.Count - 1; } } }
public void Show_user() { this.listBox_Test_Results_For_Teacher.Items.Clear(); //очистка лист бокса var test = Ltest.Find(z => z.Title == this.comboBox_Select_Test.SelectedItem.ToString()); //находим выбранный тест if (test != null) { using (Tests_DBContainer db = new Tests_DBContainer()) { //по айдишнику теста находим пользователей которые его проходили: и группируем по пользователю var userTest = db.UserTest .Where(z => z.TestId == test.Id) .OrderBy(item => item.User.LastName) .ThenBy(item => item.User.FirstName) .ThenBy(item => item.User.MiddleName) .ThenByDescending(item => item.StartDate) .GroupBy(item => item.User.LastName) .ToList(); //userTest = userTest.GroupBy(item => item.User.LastName); foreach (var VARIABLE in userTest) { bool needUser = true; foreach (UserTest item in VARIABLE) { //для расчета времени прохождения теста TimeSpan span = (item.EndDate - item.StartDate); if (needUser) { listBox_Test_Results_For_Teacher.Items.Add($"{item.User.FirstName} {item.User.LastName} {item.User.MiddleName}"); needUser = false; } // //выводим в лист бокс информацию // listBox_Test_Results_For_Teacher.Items.Add( $"Дата прохождения теста: {item.StartDate.ToString("d")} Результат: {item.Result} Потрачено времени: {FormatedTime(span)}"); } } } } }
private void button_AddNewQuestion_Click(object sender, EventArgs e) { if (textBox_AddTestTitle.Text == "") { label_ErrorAddTest.Text = "Введите название"; } else if (textBox_AddTestTitle.Text.Length > 255) { label_ErrorAddTest.Text = "Название не должно превышать 255 символов"; } else { using (Tests_DBContainer tests = new Tests_DBContainer()) { Test test = new Test(); test.Title = textBox_AddTestTitle.Text; test.IsActual = 0; int idCat = Convert.ToInt32(comboBox_SelectCategory.SelectedValue.ToString()); test.Category = tests.Category.FirstOrDefault(cat => cat.Id == idCat); tests.Test.Add(test); TestCreator testcreator = new TestCreator(); testcreator.TestId = test.Id; testcreator.UserId = user.Id; tests.TestCreator.Add(testcreator); tests.SaveChanges(); textBox_AddTestTitle.Text = ""; Add_Test2 add_test2 = new Add_Test2(test.Id); Opacity = 0; this.ShowInTaskbar = false; if (add_test2.ShowDialog() == DialogResult.OK) { Close(); } } } }
private void button_DeleteAnswer_Click(object sender, EventArgs e) { int rowindex = dataGridView1.CurrentRow.Index; var row = dataGridView1.Rows[rowindex]; int aId; int.TryParse(row.Cells["Id"].Value.ToString(), out aId); using (Tests_DBContainer tests = new Tests_DBContainer()) { var rowDb = tests.TestQuestionAnswer.FirstOrDefault(t => t.Id == aId); if (rowDb != null) { tests.TestQuestionAnswer.Remove(rowDb); tests.SaveChanges(); renderAnswerList(); } } }
private void renderAnswerList() { using (Tests_DBContainer tests = new Tests_DBContainer()) { dataGridView1.Rows.Clear(); dataGridView1.Refresh(); var answersList = tests.TestQuestionAnswer.Where(t => t.TestQuestionId == questionId).ToList(); foreach (var row in answersList) { dataGridView1.Rows.Add( new object[] { row.Answer, row.IsAnswer == 1 ? true : false, row.Id } ); } } }
public Select_Question_To_Edit(int testId, Select_Test_To_Edit parent) { InitializeComponent(); this.testId = testId; this.parent = parent; //наследуемый метод base.Top_Button(bunifuImageButton1_Min, bunifuImageButton1_Max, bunifuImageButton2_Norm); this.button_EditQuestion.Click += Button_EditQuestion_Click; this.bunifuImageButton1_Close.Click += button_CancelEditQuestion_Click; using (Tests_DBContainer tests = new Tests_DBContainer()) { var row = tests.Test.FirstOrDefault(t => t.Id == testId); if (row != null) { textBox_AddEditTestTitle.Text = row.Title; renderQuestionList(); } } }
private void renderListAnswers() { textBox_EnterdQuestions.Text = ""; int id = Convert.ToInt32(comboBox_SelectQuestion.SelectedValue); using (Tests_DBContainer tests = new Tests_DBContainer()) { StringBuilder answer = new StringBuilder(); foreach (TestQuestionAnswer tqa in tests.TestQuestionAnswer.Where(t => t.TestQuestionId == id)) { if (tqa.IsAnswer == 1) { answer.AppendLine("+ " + tqa.Answer); } else { answer.AppendLine(" " + tqa.Answer); } } textBox_EnterdQuestions.Text = answer.ToString(); } }
private void button_SaveChangeTitleQuestion_Click(object sender, EventArgs e) { if (textBox_AddEditTestTitle.Text == "") { MessageBox.Show("Название теста не может быть пустым", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } using (Tests_DBContainer tests = new Tests_DBContainer()) { var row = tests.Test.FirstOrDefault(t => t.Id == testId); if (row != null) { row.Title = textBox_AddEditTestTitle.Text; tests.SaveChanges(); MessageBox.Show("Название было изменено", "Изменения", MessageBoxButtons.OK, MessageBoxIcon.Information); } this.parent.renderTestList(); } }