private IActionResult Part3Or4Processing(string partName, string partAction, ReadingCombined readingCombined, bool isCheckQuestionText = true)
        {
            var view = View($"{partName}/{partAction}", readingCombined);

            // Nếu không hợp lệ
            if (!IsValidate(readingCombined, isCheckQuestionText))
            {
                return(view);
            }

            // Tiến hành thêm danh mục vào CSDL và lấy ID
            if (readingCombined.TestCategory.Id <= 0)
            {
                _TestCategoryManager.Add(readingCombined.TestCategory);
            }
            else
            {
                _TestCategoryManager.Update(readingCombined.TestCategory);
            }

            if (readingCombined.TestCategory.Id <= 0)
            {
                ModelState.AddModelError(string.Empty, "An error occurred during execution.");
                return(view);
            }

            // Cập nhật câu hỏi
            for (int i = 0; i < readingCombined.ReadingPartTwos.Count; i++)
            {
                if (readingCombined.ReadingPartTwos[i].TestCategoryId <= 0)
                {
                    readingCombined.ReadingPartTwos[i].TestCategoryId = readingCombined.TestCategory.Id;
                }
                if (readingCombined.ReadingPartTwos[i].Id <= 0)
                {
                    _ReadingPartTwoManager.Add(readingCombined.ReadingPartTwos[i]);
                }
                else
                {
                    _ReadingPartTwoManager.Update(readingCombined.ReadingPartTwos[i]);
                }
            }

            this.NotifySuccess("Update completed!");

            // Trả về
            return(RedirectToAction(partName));
        }
        private bool IsValidate(ReadingCombined readingCombined, bool isCheckQuestionText = true)
        {
            ModelState.Remove(nameof(ReadingPartTwo.Answers));
            if (!(readingCombined != null && readingCombined.TestCategory != null &&
                  readingCombined.TestCategory.Name != null && readingCombined.TestCategory.Name.Length > 0 &&
                  readingCombined.TestCategory.TypeCode != null && readingCombined.TestCategory.TypeCode.Length > 0 &&
                  readingCombined.TestCategory.PartId > 0 &&
                  readingCombined.TestCategory.WYSIWYGContent != null && readingCombined.TestCategory.WYSIWYGContent.Length > 0 &&
                  readingCombined.ReadingPartTwos.Count > 0))
            {
                return(false);
            }
            // Lấy mã người tạo
            int userId = User.Id();

            // Cập nhật mã người tạo cho category
            if (readingCombined.TestCategory.CreatorId <= 0)
            {
                readingCombined.TestCategory.CreatorId = userId;
            }
            // Tiến hành kiểm tra trong các phần câu hỏi và đặt mã người tạo + convert đối tượng thành Json và gán vào ANSWERS
            for (int i = 0; i < readingCombined.ReadingPartTwos.Count; i++)
            {
                if ((readingCombined.ReadingPartTwos[i].QuestionText == null || readingCombined.ReadingPartTwos[i].QuestionText.Length <= 0) && isCheckQuestionText)
                {
                    ModelState.AddModelError(string.Empty, $"{nameof(ReadingPartTwo.QuestionText)} of question {i + 1} is required.");
                    return(false);
                }

                string validation = readingCombined.ReadingPartTwos[i].AnswerList.BaseAnswerValidation();
                if (validation != null && validation.Length > 0)
                {
                    ModelState.AddModelError(string.Empty, $"{nameof(ReadingPartTwo.Answers)} of question {i + 1} error: {validation}.");
                    return(false);
                }

                if (readingCombined.ReadingPartTwos[i].CreatorId <= 0)
                {
                    readingCombined.ReadingPartTwos[i].CreatorId = userId;
                }

                readingCombined.ReadingPartTwos[i].Answers = readingCombined.ReadingPartTwos[i].AnswerList.ToJson();
            }
            return(true);
        }
예제 #3
0
 public IActionResult Part4Update(ReadingCombined readingCombined)
 {
     return(Part3Or4Processing(nameof(Part4), nameof(Part4Update), readingCombined, false));
 }
예제 #4
0
 public IActionResult Part3Create(ReadingCombined readingCombined)
 {
     return(Part3Or4Processing(nameof(Part3), nameof(Part3Create), readingCombined));
 }