// GET: Вопросы/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Вопросы вопросы = await db.Вопросы.FindAsync(id); if (вопросы == null) { return(HttpNotFound()); } ViewBag.аздел = вопросы.Тесты.Id_Раздела; return(View(вопросы)); }
public async Task <ActionResult> DeleteConfirmed(int id) { Вопросы вопросы = await db.Вопросы.FindAsync(id); string id_Topic = вопросы.id_Теста.ToString(); var answDelete = await(from answ in db.Ответы where answ.id_Вопроса == вопросы.id_вопроса select answ).ToListAsync(); //ответы к вопросам foreach (var aD in answDelete) { db.Ответы.Remove(aD); //удаляем ответы к вопросам } db.Вопросы.Remove(вопросы); //удаляем вопрос Тесты тесты = await db.Тесты.FindAsync(вопросы.id_Теста); тесты.Количество_вопросов = тесты.Количество_вопросов - 1; await db.SaveChangesAsync(); return(RedirectToAction("Index", new { topic = id_Topic, redactor = "redactor" })); }
public async Task <ActionResult> Index(FormCollection form) //обработка результатов по тесту { var k = form.Keys; List <string> ResultQuestion = new List <string>(k.Count); //для хранения результатов верно/неверно List <string> QuestionAnswer = new List <string>(k.Count); //для хранения вопросов и ответов Dictionary <string, string> resultA = new Dictionary <string, string>(k.Count); //для хранения первичных результатов var temp = form.ToValueProvider(); //получаем все данные string kD = ""; // для ключа словаря string valD = ""; //для значения словаря int id_Test = 0; // для id теста int flagS = 0; // для количества вопросов в соотношений int tempIdQ = 0; //для получения id вопроса типа "соотношение" string tempStrQ = ""; int id_User = 0; string data = ""; foreach (var val in k) { kD = val.ToString().Replace(" ", ""); if (resultA.ContainsKey(kD)) //если есть запись в словаре под таким ключом, то удаляем, по идеи ее быть не должно, но мало ли { resultA.Remove(kD); } if (kD == "id_test") //если получили id_теста, сохраняем в отдельной переменной { id_Test = Convert.ToInt32(temp.GetValue(kD).AttemptedValue); } else if (kD == "id_user") //если получили id_пользователя, сохраняем в отдельной переменной { id_User = Convert.ToInt32(temp.GetValue(kD).AttemptedValue); ViewBag.Id_user = id_User; } else if (kD == "Data") //если получили дату прохождения теста, сохраняем в отдельной переменной { data = temp.GetValue(kD).AttemptedValue; ViewBag.Data = data; } else { valD = temp.GetValue(kD).AttemptedValue.Replace(" ", ""); // если получили ответы пользователя, то сохраняем в словарь string[] mystringSootn = kD.Split('-'); if (mystringSootn.Count() == 2) // пришел ответ типа соотношение { kD = "О " + mystringSootn[0]; // помечаем ответы из соотношения буквой "О" перед ключом } string[] mystring = valD.Split(','); //обработка результатов из checkbox List <string> ls = new List <string>(mystring.Count()); if (mystring.Count() > 1) //значит пришел результат со множетсвенным выбором, обрабатываем его { for (int i = 0; i < mystring.Count(); i++) { ls.Add(mystring[i]); if (mystring[i] == "true") { i++; //если пользователь отметил checkbox, то придет два значения - true и false, false пропускаем } } valD = ""; foreach (var l in ls) { valD = valD + l + " "; } } kD = kD.Replace("/", ""); resultA.Add(kD, valD); } } string textQ = ""; string textA = ""; var AllQuestion = (from question in db.Вопросы where question.id_Теста == id_Test select question).ToList(); //получаем все вопросы из теста int nQ = 1; // для перечисления вопросов int Answ = 0; //число правильных ответов int QuestC = AllQuestion.Count(); //число вопросов тесте Dictionary <string, string> resultAnswerUser = new Dictionary <string, string>(QuestC); //для хранения конечных результатов пользователя string tempAnsw = ""; foreach (var qList in AllQuestion) //получаем вопросы и верные к ним ответы { textQ = qList.Текст_вопроса.Replace(" ", ""); if ((qList.Тип_ответа.Replace(" ", "") == "Выбор") || (qList.Тип_ответа.Replace(" ", "") == "Ввод")) { textA = ""; foreach (var aList in qList.Ответы) { if (aList.Флаг_правильного_ответа == true) { textA = aList.Текст_ответа.Replace(" ", ""); QuestionAnswer.Add("Вопрос: " + textQ + "\n" + "Правильный ответ: " + textA + "\n"); break; } } } else if (qList.Тип_ответа.Replace(" ", "") == "Несколько") { textA = ""; foreach (var aList in qList.Ответы) { if (aList.Флаг_правильного_ответа == true) { textA = textA + aList.Текст_ответа.Replace(" ", "") + " "; } } QuestionAnswer.Add("Вопрос: " + textQ + "\n" + "Правильный ответ: " + textA + "\n"); } else if (qList.Тип_ответа.Replace(" ", "") == "Соотношение") { textA = ""; var tempSelectA = (from answ in db.Ответы where answ.id_Вопроса == qList.id_вопроса select answ).ToList(); foreach (var tempL in tempSelectA) { if (tempL.Флаг_подвопроса == true) //получаем подвопросы и ответы к ним { textA = textA + tempL.Текст_ответа.Replace(" ", "") + "-" + tempL.Правильный_ответ.Replace(" ", "") + ","; } } QuestionAnswer.Add("Вопрос: " + textQ + "\n" + "Правильный ответ: " + textA + "\n"); } else if (qList.Тип_ответа.Replace(" ", "") == "Разрыв") { var tempSelectR = (from answ in db.Ответы where answ.id_Вопроса == qList.id_вопроса && answ.Флаг_правильного_ответа == true select answ).ToList(); QuestionAnswer.Add("Вопрос: " + textQ + "\n" + "Правильный ответ: " + tempSelectR[0].Текст_ответа.Replace(" ", "") + "\n"); } } foreach (var q1 in AllQuestion) //проверка на пустые поля в ответах { if ((!(resultA.ContainsKey(q1.id_вопроса.ToString()))) && (q1.Тип_ответа.Replace(" ", "") != "Соотношение")) //если нет записи в словаре под таким ключом, то пользователь не ответил на этот вопрос, фиксируем это { resultA.Add(q1.id_вопроса.ToString(), ""); resultAnswerUser[q1.id_вопроса.ToString()] = resultA[q1.id_вопроса.ToString()]; } else if (q1.Тип_ответа.Replace(" ", "") == "Соотношение") //ищем вопрос на соотношение в словаре { tempAnsw = ""; foreach (var sootnosh in resultA) { if ((sootnosh.Key)[0] == 'О') { int id_Ans = Convert.ToInt32(sootnosh.Key.Replace("О ", "")); Ответы ответы = await db.Ответы.FindAsync(id_Ans); if (ответы.id_Вопроса == q1.id_вопроса) //такой вопрос на соотношение в словаре есть { tempAnsw = tempAnsw + sootnosh.Key.Replace("О ", "") + " " + sootnosh.Value + ","; } } } if (resultA.ContainsKey(q1.id_вопроса.ToString())) //если есть запись в словаре под таким ключом, то удаляем, по идеи ее быть не должно, но мало ли { resultA.Remove(q1.id_вопроса.ToString()); } resultA.Add(q1.id_вопроса.ToString(), tempAnsw); resultAnswerUser[q1.id_вопроса.ToString()] = resultA[q1.id_вопроса.ToString()]; } else { resultAnswerUser[q1.id_вопроса.ToString()] = resultA[q1.id_вопроса.ToString()]; } } int key = 0; int iTemp = 0; foreach (var id_q in resultAnswerUser) //проверяем правильно ли ответил пользователь { key = Convert.ToInt32(id_q.Key); var tempSelect = (from answ in db.Ответы where answ.id_Вопроса == key select answ).ToList(); //выбор всех ответов текущего вопроса foreach (var answR in tempSelect) { if (id_q.Value != "") //если ответ заполнен/выбран { Вопросы вопросы = await db.Вопросы.FindAsync(Convert.ToInt32(id_q.Key)); if ((вопросы.Тип_ответа.Replace(" ", "") == "Выбор") || (вопросы.Тип_ответа.Replace(" ", "") == "Ввод")) //если тип вопроса выбор или ввод { var TextAnsw = (from textAnsw in tempSelect where textAnsw.Текст_ответа.Replace(" ", "") == id_q.Value select textAnsw).ToList(); //получаем текст ответа if (TextAnsw.Count() != 0) //если нашли текст ответа, то смотрим на его флаг { foreach (var aT in TextAnsw) { if (aT.Флаг_правильного_ответа) { // ResultQuestion.Add(nQ.ToString() + " " + "Верно"); QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + id_q.Value + " - " + "ВЕРНО"; QuestionAnswer[iTemp].Replace("\n", "<br />"); Answ++; nQ++; iTemp++; break; } else { QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + id_q.Value + " - " + "НЕВЕРНО"; QuestionAnswer[iTemp].Replace("\n", "<br />"); iTemp++; // ResultQuestion.Add(nQ.ToString() + " " + "Неверно"); nQ++; break; } } } else { QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + id_q.Value + " - " + "НЕВЕРНО"; iTemp++; // ResultQuestion.Add(nQ.ToString() + " " + "Неверно"); nQ++; break; } } else if (вопросы.Тип_ответа.Replace(" ", "") == "Несколько") //если вопрос имеет несколько правильных ответов { int CountAns = 0; int countChec = 0; int idA = Convert.ToInt32(id_q.Key); var TextAnsw = (from textAnsw in db.Ответы where textAnsw.id_Вопроса == idA select textAnsw).ToList();//получаем все варианты для данного вопроса int countAnswerCheckboxList = TextAnsw.Count(); string[] mystringCheck = id_q.Value.Split(' '); List <bool> checkboxl = new List <bool>(mystringCheck.Count()); string VariatUser = ""; foreach (var str in mystringCheck) { if (str == "true") { checkboxl.Add(true); } if (str == "false") { checkboxl.Add(false); } } foreach (var check in TextAnsw) { if (check.Флаг_правильного_ответа == checkboxl[countChec]) { CountAns++; } if (checkboxl[countChec]) { VariatUser = VariatUser + check.Текст_ответа.Replace(" ", "") + " "; } countChec++; } if (CountAns >= countAnswerCheckboxList) { // ResultQuestion.Add(nQ.ToString() + " " + "Верно"); QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + VariatUser + " - " + "ВЕРНО"; iTemp++; Answ++; nQ++; } else { // ResultQuestion.Add(nQ.ToString() + " " + "Неверно"); QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + VariatUser + " - " + "НЕВЕРНО"; iTemp++; nQ++; break; } break; } else if (вопросы.Тип_ответа.Replace(" ", "") == "Соотношение") { string VariatUserS = ""; string[] mystringTemp = id_q.Value.Split(','); var result = mystringTemp.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); //убираем нулевые и пустые элементы int flagCorrect = 0; string[] tempStrForSoothosh = new string[2]; //для хранения id_ответа и выбора пользователя string AnswUser = ""; string strResult = ""; int strC = 1; // strResult = string.Join(",", result); foreach (var str in result) { tempStrForSoothosh = str.Split(' '); if (tempStrForSoothosh[1] != "") { foreach (var valueSootnosh in tempSelect) //ищем значение под выбранным вариантом { Ответы ответ = await db.Ответы.FindAsync(Convert.ToInt32(tempStrForSoothosh[1])); if ((valueSootnosh.Флаг_подвопроса == false) && (valueSootnosh.Текст_ответа.Replace(" ", "") == (ответ.Текст_ответа.Replace(" ", "")))) { if ((tempStrForSoothosh[0] != "") && ((tempStrForSoothosh[1] != ""))) { AnswUser = ответ.Текст_ответа.Replace(" ", ""); //записываем вариант ответа Ответы ответы = await db.Ответы.FindAsync(Convert.ToInt32(tempStrForSoothosh[0])); if (AnswUser.Replace(" ", "") == ответы.Правильный_ответ.Replace(" ", "")) //сраниваем вариант ответа подвопроса и того значения, что под буквой { flagCorrect++; } strResult = strResult + strC.ToString() + "." + ответы.Текст_ответа.Replace(" ", "") + "-" + (ответ.Текст_ответа.Replace(" ", "")) + " "; } } } } else { Ответы ответы = await db.Ответы.FindAsync(Convert.ToInt32(tempStrForSoothosh[0])); strResult = strResult + strC.ToString() + ". " + ответы.Текст_ответа.Replace(" ", "") + "-" + " "; } strC++; } if (flagCorrect == result.Count()) { // ResultQuestion.Add(nQ.ToString() + " " + "Верно"); QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + strResult + " - " + "ВЕРНО"; iTemp++; Answ++; nQ++; } else { // ResultQuestion.Add(nQ.ToString() + " " + "Неверно"); QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + strResult + " - " + "НЕВЕРНО"; iTemp++; nQ++; break; } break; } else if (вопросы.Тип_ответа.Replace(" ", "") == "Разрыв") { string VariatUserR = ""; string[] mystringTempR = id_q.Value.Split(' '); // ответы пользователя в виде id ответов var resultR = mystringTempR.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); //убираем нулевые и пустые элементы var AnswRstring = (from textAnsw in tempSelect where textAnsw.id_Вопроса == Convert.ToInt32(id_q.Key) && textAnsw.Флаг_правильного_ответа == true select textAnsw).ToList(); //правильные ответы в виде текста string[] stringAnswTempR = AnswRstring[0].Текст_ответа.Split(','); var AnswR = stringAnswTempR.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); int flagA = 0; string strR = ""; List <string> templsR = new List <string>(AnswR.Count()); var TextQ = QuestionAnswer[iTemp].Replace(" ", "").Split(new string[] { "..." }, StringSplitOptions.RemoveEmptyEntries); if (AnswR.Count() == resultR.Count()) // если пользователь вставил ответы во все разрывы { for (int i = 0; i < AnswR.Count(); i++) { var answ = db.Ответы.Find(Convert.ToInt32(mystringTempR[i])); //получаем по id ответа его текст strR = strR + " " + answ.Текст_ответа.Replace(" ", "") + ", "; if (answ.Текст_ответа.Replace(" ", "") == AnswR[i].Replace(" ", "")) { flagA++; } } } if (flagA >= AnswR.Count()) { QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + " " + "\nВаш ответ: " + strR + " - " + "ВЕРНО"; iTemp++; Answ++; nQ++; break; } else { QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + " " + "\nВаш ответ: " + strR + " - " + "НЕВЕРНО"; iTemp++; nQ++; break; } } } else { // ResultQuestion.Add(nQ.ToString() + " " + "Неверно"); QuestionAnswer[iTemp] = nQ.ToString() + " " + QuestionAnswer[iTemp] + "\nВаш ответ: " + " " + " - " + "НЕВЕРНО"; iTemp++; nQ++; break; } break; } } double resulProcentTheory = Math.Round((((double)Answ / (double)(QuestC)) * 100.0), 2); //результат теста в процентах ViewBag.ResultProcent = Convert.ToInt32(resulProcentTheory); //передаем результат в % в представление ViewBag.ResultQuestion = ResultQuestion; // передаем в представление список , где указано , что верно, а что нет ViewBag.QuestionAnswer = QuestionAnswer; nQ = 0; var usTestResult = await(from u in db.езультат_теста where u.id_User == id_User && u.id_Теста == id_Test select u).ToListAsync(); //Проверяем проходил ли пользователь этот тест if (usTestResult.Count > 0) //если проходил, то обновляем инфу { езультат_теста результат_Теста = db.езультат_теста.Find(usTestResult.First().id_результата_теста); результат_Теста.id_User = id_User; результат_Теста.id_Теста = id_Test; результат_Теста.Дата_сдачи_теории = Convert.ToDateTime(data); результат_Теста.Оценка_за_теорию = Convert.ToInt32(resulProcentTheory); db.Entry(результат_Теста).State = EntityState.Modified; await db.SaveChangesAsync(); } else //если нет, то добавляем новую запись в бд { езультат_теста результат_Теста = new езультат_теста(); результат_Теста.id_User = id_User; результат_Теста.id_Теста = id_Test; результат_Теста.Дата_сдачи_теории = Convert.ToDateTime(data); результат_Теста.Оценка_за_теорию = Convert.ToInt32(resulProcentTheory); db.езультат_теста.Add(результат_Теста); await db.SaveChangesAsync(); } var результат_вопроса = db.езультат_теста.Include(р => р.Пользователи); return(View(await результат_вопроса.ToListAsync())); }
// метод добавления ответов к вопросу public void ProcessingTypeAnswer(Вопросы вопросы, string func, string variant = "", string def = "", string correct = "") { try { if (вопросы.Тип_ответа.Replace(" ", "") == "Выбор") { string[] stringTempList = (variant.Replace(" ", "")).Split(';'); var resulttemp = stringTempList.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); stringTempList = resulttemp; foreach (var t in stringTempList) { Ответы ответы = new Ответы(); ответы.Текст_ответа = t; if (t.Replace(" ", "").ToLower() == correct.Replace(" ", "").ToLower()) { ответы.Флаг_правильного_ответа = true; } else { ответы.Флаг_правильного_ответа = false; } if (func == "create") { ответы.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы); // db.SaveChanges(); } } } else if (вопросы.Тип_ответа.Replace(" ", "") == "Несколько") { string[] stringTempListVar = (variant.Replace(" ", "")).Split(';'); //разделяем варианты ответов var resulttemp = stringTempListVar.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); stringTempListVar = resulttemp; string[] stringTempListCor = (correct.Replace(" ", "")).Split(';'); resulttemp = stringTempListCor.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); stringTempListCor = resulttemp; int flag = 0; foreach (var t in stringTempListVar) { flag = 0; Ответы ответы = new Ответы(); ответы.Текст_ответа = t; foreach (var t2 in stringTempListCor) { if (t.Replace(" ", "").ToLower() == t2.Replace(" ", "").ToLower()) { flag = 1; break; } } if (flag == 1) { ответы.Флаг_правильного_ответа = true; } else { ответы.Флаг_правильного_ответа = false; } if (func == "create") { ответы.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы); db.SaveChanges(); } } } else if (вопросы.Тип_ответа.Replace(" ", "") == "Ввод") { Ответы ответы = new Ответы(); ответы.Текст_ответа = correct.Replace(" ", ""); ответы.Флаг_правильного_ответа = true; if (func == "create") { ответы.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы); db.SaveChanges(); } } else if (вопросы.Тип_ответа.Replace(" ", "") == "Соотношение") { string[] stringTempListCor = (correct.Replace(" ", "")).Split(';');//разделяем корректные варианты ответов var resulttemp = stringTempListCor.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); stringTempListCor = resulttemp; string[] stringTempListDef = (def.Replace(" ", "")).Split(';');//разделяем понятия resulttemp = stringTempListDef.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); stringTempListDef = resulttemp; int countCor = 0; foreach (var deftemp in stringTempListDef) //вносим понятия в бд { Ответы ответы = new Ответы(); ответы.Текст_ответа = deftemp.Replace(" ", ""); ответы.Флаг_правильного_ответа = true; ответы.Флаг_подвопроса = true; ответы.Правильный_ответ = stringTempListCor[countCor]; countCor++; if (func == "create") { ответы.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы); db.SaveChanges(); } } string[] stringTempListVar = stringTempListCor; //для вариантов ответов Random rand = new Random(); for (int i = stringTempListVar.Length - 1; i >= 1; i--) //генерируем варианты ответов в случайном порядке { int j = rand.Next(i + 1); string tmp = stringTempListVar[j]; stringTempListVar[j] = stringTempListVar[i]; stringTempListVar[i] = tmp; } foreach (var vartemp in stringTempListVar) //вносим варианты ответов в бд { Ответы ответы = new Ответы(); ответы.Текст_ответа = vartemp.Replace(" ", ""); ответы.Флаг_правильного_ответа = true; ответы.Флаг_подвопроса = false; ответы.Правильный_ответ = null; if (func == "create") { ответы.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы); db.SaveChanges(); } } } else if (вопросы.Тип_ответа.Replace(" ", "") == "Разрыв") { Ответы ответы = new Ответы(); ответы.Текст_ответа = correct.Replace(" ", ""); ответы.Флаг_правильного_ответа = true; if (func == "create") { ответы.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы); db.SaveChanges(); } string[] stringTempListVar = (correct.Replace(" ", "")).Split(';');//подготавливаем для составления списка с вариантами ответов var resulttemp = stringTempListVar.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); stringTempListVar = resulttemp; Random rand = new Random(); for (int i = stringTempListVar.Length - 1; i >= 1; i--) //генерируем варианты ответов в случайном порядке { int j = rand.Next(i + 1); string tmp = stringTempListVar[j]; stringTempListVar[j] = stringTempListVar[i]; stringTempListVar[i] = tmp; } foreach (var vartemp in stringTempListVar) //вносим варианты ответов в БД { Ответы ответы1 = new Ответы(); ответы1.Текст_ответа = vartemp.Replace(" ", ""); ответы1.Флаг_правильного_ответа = false; if (func == "create") { ответы1.id_Вопроса = вопросы.id_вопроса; db.Ответы.Add(ответы1); db.SaveChanges(); } else { вопросы.Ответы.Add(ответы1); db.SaveChanges(); } } } } catch (DbEntityValidationException ex) { foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { Response.Write("Object: " + validationError.Entry.Entity.ToString()); Response.Write(" "); foreach (DbValidationError err in validationError.ValidationErrors) { Response.Write(err.ErrorMessage + " "); } } } }
public async Task <ActionResult> Edit(ВопросОтветРедактор вопросОтветРедактор, string Тип_ответа, int id_Теста) { string variant = "", def = "", correct = ""; if (вопросОтветРедактор.Варианты_ответов != null) { variant = вопросОтветРедактор.Варианты_ответов.Replace("\r\n", " "); variant = вопросОтветРедактор.Варианты_ответов.Replace(" ", ""); variant = вопросОтветРедактор.Варианты_ответов.TrimEnd(' '); } correct = вопросОтветРедактор.Правильный_ответ.Replace("\r\n", " "); correct = вопросОтветРедактор.Правильный_ответ.Replace(" ", ""); correct = вопросОтветРедактор.Правильный_ответ.TrimEnd(' '); if (вопросОтветРедактор.Понятия != null) { def = вопросОтветРедактор.Понятия.Replace("\r\n", " "); def = вопросОтветРедактор.Понятия.Replace(" ", ""); def = вопросОтветРедактор.Понятия.TrimEnd(' '); } if (Тип_ответа != null) { вопросОтветРедактор.вопросыРедактор.Тип_ответа = Тип_ответа.Replace(" ", ""); } if ((вопросОтветРедактор.Правильный_ответ != null) && (вопросОтветРедактор.вопросыРедактор.Текст_вопроса != null) && (вопросОтветРедактор.вопросыРедактор.Тип_ответа != null)) { try { Вопросы editВопрос = await(db.Вопросы.FindAsync(вопросОтветРедактор.вопросыРедактор.id_вопроса)); editВопрос.Текст_вопроса = вопросОтветРедактор.вопросыРедактор.Текст_вопроса.Replace("\r\n", " "); editВопрос.Текст_вопроса = вопросОтветРедактор.вопросыРедактор.Текст_вопроса.Replace(" ", ""); editВопрос.Текст_вопроса = вопросОтветРедактор.вопросыРедактор.Текст_вопроса.Trim(' '); editВопрос.Тип_ответа = вопросОтветРедактор.вопросыРедактор.Тип_ответа; editВопрос.id_Теста = id_Теста; var answerDelete = from a in db.Ответы where a.id_Вопроса == editВопрос.id_вопроса select a; foreach (var aDelete in answerDelete) { db.Ответы.Remove(aDelete); } // editВопрос.Ответы.Clear(); ProcessingTypeAnswer(editВопрос, "edit", variant, def, correct); //добавляем новые ответы db.Entry(editВопрос).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index", new { topic = editВопрос.id_Теста.ToString(), redactor = "redactor" })); } catch (DbEntityValidationException ex) { foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { Response.Write("Object: " + validationError.Entry.Entity.ToString()); Response.Write(" "); foreach (DbValidationError err in validationError.ValidationErrors) { Response.Write(err.ErrorMessage + " "); } } } } ViewBag.id_Теста = new SelectList(db.Тесты, "id_теста", "Название_темы_теста", вопросОтветРедактор.вопросыРедактор.id_Теста); return(View(вопросОтветРедактор.вопросыРедактор)); }
// GET: Вопросы/Edit/5 public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Вопросы вопросы = await db.Вопросы.FindAsync(id); if (вопросы == null) { return(HttpNotFound()); } ВопросОтветРедактор вопросОтветРедактор = new ВопросОтветРедактор(); ViewBag.аздел = вопросы.Тесты.Id_Раздела; ViewBag.Тема = вопросы.id_Теста; int selected = вопросы.id_Теста; ViewBag.id_Теста = new SelectList(db.Тесты.Where(a => a.id_теста == вопросы.id_Теста), "id_теста", "Название_темы_теста", selected); ViewBag.ТипОтвета = вопросы.Тип_ответа.Replace(" ", ""); if ((вопросы.Тип_ответа.Replace(" ", "") == "Ввод") || (вопросы.Тип_ответа.Replace(" ", "") == "Разрыв")) { var answerCorrect = from v in db.Ответы where v.id_Вопроса == вопросы.id_вопроса select v; foreach (var t in answerCorrect) { if (t.Флаг_правильного_ответа) { вопросОтветРедактор.Правильный_ответ = t.Текст_ответа.Replace(" ", "").TrimStart(' ').TrimEnd(' '); ViewBag.ВерныйОтвет = вопросОтветРедактор.Правильный_ответ; break; } } } else if ((вопросы.Тип_ответа.Replace(" ", "") == "Выбор") || (вопросы.Тип_ответа.Replace(" ", "") == "Несколько")) { string variantStr = ""; string correctStr = ""; var answer = from v in db.Ответы where v.id_Вопроса == вопросы.id_вопроса select v; foreach (var variant in answer) { variantStr = variantStr + variant.Текст_ответа.Replace(" ", "").TrimStart(' ').TrimEnd(' ') + ", "; if (variant.Флаг_правильного_ответа) { correctStr = correctStr + variant.Текст_ответа.Replace(" ", "").TrimStart(' ').TrimEnd(' ') + ", "; } } variantStr = variantStr.Substring(0, variantStr.Length - 2); correctStr = correctStr.Substring(0, correctStr.Length - 2); //убираем лишнюю запятую ViewBag.Варианты = variantStr; вопросОтветРедактор.Варианты_ответов = variantStr; вопросОтветРедактор.Правильный_ответ = correctStr; ViewBag.ВерныйОтвет = correctStr; } else if (вопросы.Тип_ответа.Replace(" ", "") == "Соотношение") { string Def = ""; string CorrectAnsw = ""; var answerS = from v in db.Ответы where (v.id_Вопроса == вопросы.id_вопроса && v.Флаг_подвопроса == true) select v; foreach (var variant in answerS) { Def = Def + variant.Текст_ответа.Replace(" ", "").TrimStart(' ').TrimEnd(' ') + ", "; CorrectAnsw = CorrectAnsw + variant.Правильный_ответ.Replace(" ", "").TrimStart(' ').TrimEnd(' ') + ", "; } Def = Def.Substring(0, Def.Length - 2); CorrectAnsw = CorrectAnsw.Substring(0, CorrectAnsw.Length - 2); //убираем лишнюю запятую вопросОтветРедактор.Понятия = Def; ViewBag.Понятия = Def; вопросОтветРедактор.Правильный_ответ = CorrectAnsw; ViewBag.ВерныйОтвет = CorrectAnsw; } вопросОтветРедактор.вопросыРедактор = вопросы; return(View(вопросОтветРедактор)); }
public async Task <ActionResult> Create(string[] InputVariant, string RadioB, string [] Checkbox, int id_Теста, ВопросОтветРедактор вопросОтветРедактор, string Тип_ответа) { if (Тип_ответа != null) { вопросОтветРедактор.вопросыРедактор.Тип_ответа = Тип_ответа.Replace(" ", ""); } Вопросы вопросы = вопросОтветРедактор.вопросыРедактор; string variant = "", def = "", correct = ""; if (Тип_ответа.Replace(" ", "") != "Несколько" && Тип_ответа.Replace(" ", "") != "Выбор") { correct = вопросОтветРедактор.Правильный_ответ.Replace("\r\n", " "); correct = вопросОтветРедактор.Правильный_ответ.Replace(" ", ""); correct = вопросОтветРедактор.Правильный_ответ.TrimEnd(' '); } else if (Тип_ответа.Replace(" ", "") == "Выбор") { correct = InputVariant[Convert.ToInt32(RadioB)].Replace("\r\n", " ").Replace(" ", "").TrimEnd(' '); foreach (var variantInput in InputVariant) { variant += variantInput + ";"; } } else if (Тип_ответа.Replace(" ", "") == "Несколько") { List <string> VariantMin = new List <string>(); foreach (var variantInput in InputVariant) { variant += variantInput + ";"; } for (int i = 0; i < Checkbox.Count(); i++) { VariantMin.Add(Checkbox[i]); if (Checkbox[i] == "true") { i++; //убрали лишние false } } for (int i = 0; i < VariantMin.Count(); i++) { if (VariantMin[i] == "true") { correct += InputVariant[i] + ";"; } } correct = correct.Replace("\r\n", " ").Replace(" ", "").TrimEnd(' '); } if (вопросОтветРедактор.Понятия != null) { def = вопросОтветРедактор.Понятия.Replace("\r\n", " "); def = вопросОтветРедактор.Понятия.Replace(" ", ""); def = вопросОтветРедактор.Понятия.TrimEnd(' '); } if (вопросОтветРедактор.вопросыРедактор.Текст_вопроса != null && вопросОтветРедактор.вопросыРедактор.Тип_ответа != null) { try { вопросы.id_Теста = id_Теста; Ответы ответы = new Ответы(); вопросы.Тип_ответа = вопросы.Тип_ответа.Replace(" ", ""); вопросы.Текст_вопроса = вопросы.Текст_вопроса.Replace("\r\n", " "); вопросы.Текст_вопроса = вопросы.Текст_вопроса.Replace(" ", ""); вопросы.Текст_вопроса = вопросы.Текст_вопроса.TrimEnd(' '); db.Вопросы.Add(вопросы); Тесты тесты = await db.Тесты.FindAsync(вопросы.id_Теста); тесты.Количество_вопросов = тесты.Количество_вопросов + 1; await db.SaveChangesAsync(); ProcessingTypeAnswer(вопросы, "create", variant, def, correct); return(RedirectToAction("Index", new { topic = вопросы.id_Теста.ToString(), redactor = "redactor" })); } catch (DbEntityValidationException ex) { foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { Response.Write("Object: " + validationError.Entry.Entity.ToString()); Response.Write(" "); foreach (DbValidationError err in validationError.ValidationErrors) { Response.Write(err.ErrorMessage + " "); } } } } ViewBag.id_Теста = new SelectList(db.Тесты, "id_теста", "Название_темы_теста", вопросы.id_Теста); return(View(вопросы)); }