//заполнение таблица UserTest на основе отвеченных вопросов void Result(bool flag1) { if (flag1) { foreach (var item in ListAnswer) { if (item.IsAnswer == 1) { res += 1; } } } //результат прохождения userTest.Result = $"{res}/{countQuestion}"; userTest.EndDate = DateTime.Now; using (Tests_DBContainer db = new Tests_DBContainer()) { //в переменную получаем данных о сохраненых даных в таблицу UserTest var userTestNeedId = db.UserTest.Add(userTest); //сохраняем изменения db.SaveChanges(); //получаем ID сохраненной записи и передеме её в метод для заполнения таблицы UserTestAnswer AddUserTestAnswer(userTestNeedId.Id); } }
public Edit_Test(int testId, int questionId, Select_Question_To_Edit parent) { InitializeComponent(); this.testId = testId; this.questionId = questionId; this.parent = parent; //наследуемый метод base.Top_Button(bunifuImageButton1_Min, bunifuImageButton1_Max, bunifuImageButton2_Norm); this.bunifuImageButton1_Close.Click += BunifuImageButton1_Close_Click; using (Tests_DBContainer tests = new Tests_DBContainer()) { if (questionId == 0) { var question = new TestQuestion() { Question = "Новый вопрос", TestId = this.testId, IsActual = 1, }; tests.TestQuestion.Add(question); tests.SaveChanges(); this.questionId = question.Id; this.parent.renderQuestionList(); } var rowQuestion = tests.TestQuestion.FirstOrDefault(t => t.Id == this.questionId); if (rowQuestion != null) { textBox_AddQuestion.Text = rowQuestion.Question; } renderAnswerList(); } }
/// <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); //выводим сообщение об ошибке } } } } }
private void button_AddNewQuestion_Click(object sender, EventArgs e) { if (!this.saveAnswers(true)) { return; } if (textBox_AddQuestion.Text == "") { MessageBox.Show("Вопрос не может быть пустым", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } using (Tests_DBContainer tests = new Tests_DBContainer()) { var question = tests.TestQuestion.FirstOrDefault(t => t.Id == questionId); if (question != null) { question.Question = textBox_AddQuestion.Text; tests.SaveChanges(); this.parent.renderQuestionList(); } } MessageBox.Show("Изменения сохранены", "Изменения", MessageBoxButtons.OK, MessageBoxIcon.Information); }
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(); }
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(); }
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 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); }
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; } } }
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 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(); } }
//заполнение таблица UserTestAnswer на основе отвеченных вопросов void AddUserTestAnswer(int id) { using (Tests_DBContainer db = new Tests_DBContainer()) { foreach (var item in ListAnswer) { //проверка не остался ли вопрос без ответа, если вопрос без ответа == 0 то пропускаем его if (item.IdAnswer != 0) { UserTestAnswer uta = new UserTestAnswer { UserTestId = id, TestQuestionId = item.Id, UserTestQuestionAnswerId = item.IdAnswer, AnswerDate = item.date }; db.UserTestAnswer.Add(uta); } } //сохраняем изменения db.SaveChanges(); } }
private void button_FinishAddTest_Click(object sender, EventArgs e) { using (Tests_DBContainer tests = new Tests_DBContainer()) { if (tests.TestQuestion.Where(t => t.TestId == this.testId).Count() == 0) { MessageBox.Show("Добавьте вопрос"); } else if (tests.TestQuestionAnswer.Where(t => t.TestQuestion.TestId == this.testId).Count() == 0) { MessageBox.Show("Добавьте ответы"); } else { Test test = tests.Test.FirstOrDefault(t => t.Id == this.testId); if (test != null) { test.IsActual = 1; tests.SaveChanges(); this.DialogResult = DialogResult.OK; } } } }
private void button_AddNewQuestion_Click(object sender, EventArgs e) { bool error = false; using (Tests_DBContainer tests = new Tests_DBContainer()) { if (textBox_AddQuestion.Text == "") { MessageBox.Show("Введите вопрос"); error = true; } if (checkedListBox_QuestionVariants.Items.Count == 0) { MessageBox.Show("Добавьте ответы"); error = true; } if (checkedListBox_QuestionVariants.SelectedItem == null || checkedListBox_QuestionVariants.CheckedItems.Count == 0) { MessageBox.Show("Выберите верный ответ"); error = true; } if (tests.TestQuestion.Where(t => t.TestId == this.testId && t.Question == textBox_AddQuestion.Text).ToList().Count > 0) { MessageBox.Show("Есть такой вопрос"); error = true; } if (!error) { TestQuestion testquestion = new TestQuestion(); testquestion.Question = textBox_AddQuestion.Text; testquestion.IsActual = 0; if (checkBox_QuestionTrue.Checked) { testquestion.IsActual = 1; } testquestion.TestId = this.testId; tests.TestQuestion.Add(testquestion); int i; for (i = 0; i <= (checkedListBox_QuestionVariants.Items.Count - 1); i++) { TestQuestionAnswer answer = new TestQuestionAnswer(); answer.Answer = checkedListBox_QuestionVariants.Items[i].ToString(); if (checkedListBox_QuestionVariants.GetItemChecked(i)) { answer.IsAnswer = Convert.ToByte(true); } answer.TestQuestion = testquestion; tests.TestQuestionAnswer.Add(answer); } tests.SaveChanges(); checkedListBox_QuestionVariants.Items.Clear(); textBox_AddQuestion.Text = ""; checkBox_QuestionTrue.Checked = true; renderListQuestions((comboBox_SelectQuestion.Items.Count)); } } }
private void Button1_Registration_DB_Click(object sender, EventArgs e) { if (textBox1_Adres.Text == "" || textBox1_LastName.Text == "" || textBox1_Phone.Text == "" || textBox1_Login_Registr.Text == "" || textBox1_Middle_name.Text == "" || textBox1_Password_Registr.Text == "" || textBox1_Name.Text == "" || textBox1_Povtor_password.Text == "") { label14_Null.Text = "Заполните все поля!"; label14_Null.Visible = true; return; } string rLog = @"(?m)^.[a-zA-Z\d\s-_]{2,30}(?=\r?$)"; if (!Regex.IsMatch(textBox1_Login_Registr.Text, rLog))//проверка по регулярному выражению Логина { label14_Null.Text = "Логин - только латинские символы!"; label14_Null.Visible = true; return; } //Проверка регулярным выражением имени string rFIO = @"^[а-яА-ЯіІїЇ-]{2,30}$"; if (!Regex.IsMatch(textBox1_Name.Text, rFIO)) { label14_Null.Text = "Имя - недопустисые символы!"; label14_Null.Visible = true; return; } //Проверка регулярным выражением фамилии if (!Regex.IsMatch(textBox1_LastName.Text, rFIO)) { label14_Null.Text = "Фамилия - недопустисые символы!"; label14_Null.Visible = true; return; } //Проверка регулярным выражением отчества if (!Regex.IsMatch(textBox1_Middle_name.Text, rFIO)) { label14_Null.Text = "Отчество - недопустисые символы!"; label14_Null.Visible = true; return; } string phoneNumber = @"^380\d{9}$"; if (!Regex.IsMatch(textBox1_Phone.Text, phoneNumber, RegexOptions.IgnoreCase))//проверка на правильность написания телефона { label14_Null.Text = "Телефон не соответствует формату 380000000000"; label14_Null.Visible = true; return; } string rPas = @"(?=.*\d).{6,}"; if (!Regex.IsMatch(textBox1_Password_Registr.Text, rPas, RegexOptions.IgnoreCase)) //проверка на пароль { label14_Null.Text = "Пароль не менише 6 символов и одна цифра!"; label14_Null.Visible = true; return; } string rAddress = @"^[а-яА-Я\d\s\/-]{2,}$"; if (!Regex.IsMatch(textBox1_Adres.Text, rAddress, RegexOptions.IgnoreCase))//проверка адреса { label14_Null.Text = "Не верный формат адреса!"; label14_Null.Visible = true; return; } //Проверка введенных паролей if (textBox1_Password_Registr.Text != textBox1_Povtor_password.Text) { label14_Null.Text = "Введеные пароли не совпадают!"; label14_Null.Visible = true; textBox1_Povtor_password.Text = null; return; } try //Отлавливание ошибок при подключении БД { using (Tests_DBContainer tests = new Tests_DBContainer()) { string login = textBox1_Login_Registr.Text; var log = tests.User.FirstOrDefault(z => z.Login == login); if (log != null)//проверка на логин есть или нет его в БД { label14_Null.Text = "Такой логин уже занят другим пользователем!"; label14_Null.Visible = true; return; } string ph = textBox1_Phone.Text; var phone = tests.User.FirstOrDefault(z => z.Phone == ph); if (phone != null)//проверка на телефона есть или нет его в БД { label14_Null.Text = "Такой телефон уже занят другим пользователем!"; label14_Null.Visible = true; return; } var id = tests.Role.FirstOrDefault(z => z.Title == "Студент"); //роль if (id == null) //проверка роли есть она в БД { return; } //Создаем пользователя User rUser = new User { Address = textBox1_Adres.Text, FirstName = textBox1_Name.Text, Login = textBox1_Login_Registr.Text, LastName = textBox1_LastName.Text, MiddleName = textBox1_Middle_name.Text, Password = textBox1_Password_Registr.Text.GetHashCode().ToString(), //хеширование пароля Phone = textBox1_Phone.Text, RoleId = id.Id }; tests.User.Add(rUser); tests.SaveChanges(); } //все происходят манипуляции this.label16_Log_Opov.Text = textBox1_Login_Registr.Text; bunifuTransition3.ShowSync(this.panel12_Opovesh); timer1.Start(); this.textBox1_Adres.Text = null; this.textBox1_LastName.Text = null; this.textBox1_Login_Registr.Text = null; this.textBox1_Middle_name.Text = null; this.textBox1_Password_Registr.Text = null; this.textBox1_Name.Text = null; this.textBox1_Phone.Text = null; this.textBox1_Povtor_password.Text = null; } catch (Exception) { MessageBox.Show("Возникла не предвиденная ошибка с подключением к базе даных!\n Проверте подключение!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }