public ActionResult New(Evaluation model) { if (model.Questions.Where(q => q.SelectedAnswer == null && q.Required == "Y").Count() > 0) { throw new Exception("尚有*字號題目未填寫!!"); } if (ModelState.IsValid) { QuestMain main = new QuestMain(); main.Docid = model.Docid; main.YYYYmm = model.YYYYmm; main.Rtt = DateTime.Now; main.CustId = model.CustId; main.CustNam = _context.Departments.Find(model.CustId).Name_C; main.Qtitle = _context.QuestionnaireMs.Find(model.Id).Qname; _context.QuestMains.Add(main); // List <QuestAnswer> at = _context.QuestAnswers.Where(a => a.Docid == model.Docid).ToList(); QuestAnswer ar; foreach (QuestAnswer w in at) { if (w != null) { _context.QuestAnswers.Remove(w); } } foreach (var q in model.Questions) { // Save the data ar = new QuestAnswer(); ar.Docid = model.Docid; ar.VerId = q.ID; ar.Qid = q.QID; ar.Answer = q.SelectedAnswer; _context.QuestAnswers.Add(ar); } try { _context.SaveChanges(); } catch (Exception e) { throw new Exception(e.Message); } return(new JsonResult(at) { Value = new { success = true, error = "" } }); } else { string msg = ""; foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors)) { msg += error.ErrorMessage + Environment.NewLine; } throw new Exception(msg); } }
/// <summary> /// /// </summary> /// <param name="currentTests"></param> /// <param name="currentAnswers"></param> /// <param name="currentQuests"></param> /// <param name="excelTests"></param> private void SetBindings(Dictionary <string, Test> currentTests, Dictionary <string, Answer> currentAnswers, Dictionary <string, Question> currentQuests, IGrouping <string, QuestRow>[] excelTests) { // сообщения об ошибках const string errMessageTest = "Ошибка сохранения теста \"{0}\""; const string errMessageQuest = "Ошибка сохранения вопроса \"{0}\""; const string errMessageAnswer = "Ошибка сохранения ответа \"{0}\""; // сохранение привязок // список вопрос-ответ var questAnswers = new List <QuestAnswer>(); // список тест-вопрос var testQuestions = new List <TestQuestion>(); // разбор ексель-файла foreach (var excelTest in excelTests) { string testTitle = excelTest.Key; Test test; if (!currentTests.TryGetValue(testTitle, out test)) { throw new ApplicationException(string.Format(errMessageTest, testTitle)); } foreach (var questRow in excelTest) { Question quest; if (!currentQuests.TryGetValue(questRow.QuestTitle, out quest)) { throw new ApplicationException(string.Format(errMessageQuest, questRow.QuestTitle)); } foreach (var answerDescription in questRow.Answers) { string answerLiteral = GetLiteral(answerDescription); string answerTitle = GetTitle(answerDescription); Answer answer; if (!currentAnswers.TryGetValue(answerTitle, out answer)) { throw new ApplicationException(string.Format(errMessageAnswer, answerTitle)); } var questAnswer = new QuestAnswer { QuestId = quest.Questid, AnswerId = answer.AnswerId }; questAnswers.Add(questAnswer); } // сформировать связь тест-вопрос var testQuestion = new TestQuestion { TestId = test.TestId, QuestId = quest.Questid, QuestNum = questRow.QuestNum }; testQuestions.Add(testQuestion); } } // сохранить полученные данные в базу _testDao.SaveQuestAnswers(questAnswers); _testDao.SaveTestQuestions(testQuestions); }