public ActionResult Edit(ExamContentEditViewModel viewModel, int id, FormCollection collection) { var contentLines = collection.GetValues("inputLine") != null?collection.GetValues("inputLine").ToList() : new List <string>(); ViewBag.ContentLines = contentLines; ViewBag.ExamFormID = new SelectList(db.SATExamForms, "ID", "Title", viewModel.ExamContent.ExamFormID); var listUnSetExamContentIDQuestion = new SelectList(db.SATQuestions.Where(q => q.ExamContentID == null && q.SATWritingUnderlineTexts.Any(u => u.QuestionID == q.ID) == false).ToList(), "ID", "Title"); ViewBag.ListQuestion = listUnSetExamContentIDQuestion; if (ModelState.IsValid) { using (var dbTransaction = db.Database.BeginTransaction()) { try { if (viewModel.ContentLines == null && contentLines.Count > 0) { //delete old lines var oldLines = db.SATContentLines.Where(l => l.ExamContentID == id); db.SATContentLines.RemoveRange(oldLines); db.SaveChanges(); //add new lines var index = 0; foreach (var item in contentLines) { var line = new SATContentLine(); line.LineIndex = index; index = (index + 1); line.LineText = item; line.ExamContentID = id; line.rowguid = Guid.NewGuid(); db.SATContentLines.Add(line); db.SaveChanges(); } } else if (viewModel.ContentLines != null) { var index = 0; foreach (var item in viewModel.ContentLines) { item.LineIndex = index; index = (index + 1); db.Entry(item).State = EntityState.Modified; db.SaveChanges(); } } db.Entry(viewModel.ExamContent).State = EntityState.Modified; db.SaveChanges(); dbTransaction.Commit(); return(RedirectToAction("Index")); } catch (Exception ex) { dbTransaction.Rollback(); ViewBag.ExamFormID = new SelectList(db.SATExamForms.Where(ef => ef.Status == true), "ID", "Title", viewModel.ExamContent.ExamFormID); ViewBag.ContentLines = contentLines; return(View(viewModel)); } } } return(View(viewModel)); }
public ActionResult Create([Bind(Include = "ID,ExamContentIndex,AttachImage,Contents,Status,ExamFormID,Title,Intro")] SATExamContent sATExamContent, FormCollection collection) { var contentLines = collection.GetValues("inputLine") != null?collection.GetValues("inputLine").ToList() : new List <string>(); var questionToAdd = collection.GetValues("questionToAdd") != null?collection.GetValues("questionToAdd").ToList() : new List <string>(); if (ModelState.IsValid) { using (var dbTransaction = db.Database.BeginTransaction()) { try { //add exam content sATExamContent.rowguid = Guid.NewGuid(); db.SATExamContents.Add(sATExamContent); if (db.SaveChanges() > 0) { //add conten lines var newId = db.SATExamContents.FirstOrDefault(e => e.rowguid == sATExamContent.rowguid); if (newId != null) { var index = 1; foreach (var item in contentLines) { var line = new SATContentLine(); line.LineIndex = index; index = index++; line.LineText = item; line.ExamContentID = newId.ID; line.rowguid = Guid.NewGuid(); db.SATContentLines.Add(line); db.SaveChanges(); } } //update question's ExamContentID foreach (var item in questionToAdd) { if (!string.IsNullOrEmpty(item)) { var questionID = int.Parse(item); var question = db.SATQuestions.Find(questionID); question.ExamContentID = newId.ID; db.Entry(question).State = EntityState.Modified; db.SaveChanges(); } } } // db.SaveChanges(); dbTransaction.Commit(); return(RedirectToAction("Index")); } catch (Exception) { dbTransaction.Rollback(); ViewBag.ExamFormID = new SelectList(db.SATExamForms.Where(ef => ef.Status == true), "ID", "Title", sATExamContent.ExamFormID); ViewBag.ContentLines = contentLines; var listUnSetExamContentIDQuestion = new SelectList(db.SATQuestions.Where(q => q.ExamContentID == null && q.SATWritingUnderlineTexts.Any(u => u.QuestionID == q.ID) == false).ToList(), "ID", "Title"); ViewBag.ListQuestion = listUnSetExamContentIDQuestion; ViewBag.ListInputHidden = questionToAdd; return(View(sATExamContent)); } } } ViewBag.ExamFormID = new SelectList(db.SATExamForms.Where(ef => ef.Status == true), "ID", "Title", sATExamContent.ExamFormID); ViewBag.ContentLines = contentLines; return(View(sATExamContent)); }