コード例 #1
0
ファイル: ExamContentController.cs プロジェクト: war-man/IEE
        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));
        }
コード例 #2
0
ファイル: ExamContentController.cs プロジェクト: war-man/IEE
        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));
        }