private bool UpdateTestCategory(ListeningBaseCombined listeningBaseCombined) { if (listeningBaseCombined.TestCategory.Id <= 0) { _TestCategoryManager.Add(listeningBaseCombined.TestCategory); } else { _TestCategoryManager.Update(listeningBaseCombined.TestCategory); } return(listeningBaseCombined.TestCategory.Id > 0); }
public bool ValidateAndCountAnswers(ListeningBaseCombined listeningBaseCombined, bool isCheckQuestionText = true, bool isCheckAnswersText = true, IFormFile[] images = null) { // Tổng số câu trả lời int sumOfAnswer = 0; // Lấy mã người tạo int userId = User.Id(); // Cập nhật mã người tạo cho category if (listeningBaseCombined.TestCategory.CreatorId <= 0) { listeningBaseCombined.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 < listeningBaseCombined.ListeningBaseQuestions.Count; i++) { if ((listeningBaseCombined.ListeningBaseQuestions[i].QuestionText == null || listeningBaseCombined.ListeningBaseQuestions[i].QuestionText.Length <= 0) && isCheckQuestionText) { ModelState.AddModelError(string.Empty, $"{nameof(ListeningBaseQuestion.QuestionText)} of question {i + 1} is required."); return(false); } // string validate = listeningBaseCombined.ListeningBaseQuestions[i].AnswerList.BaseAnswerValidation(isCheckAnswersText); if (!string.IsNullOrEmpty(validate)) { ModelState.AddModelError(string.Empty, $"{nameof(ListeningBaseQuestion.Answers)} of question {i + 1}: {validate}"); return(false); } if (listeningBaseCombined.ListeningBaseQuestions[i].CreatorId <= 0) { listeningBaseCombined.ListeningBaseQuestions[i].CreatorId = userId; } sumOfAnswer += listeningBaseCombined.ListeningBaseQuestions[i].AnswerList.Count; } if (sumOfAnswer < 0) { return(false); } // Nếu là thêm nhưng số lượng ảnh kèm theo không đủ if (images != null && listeningBaseCombined.TestCategory.CreatorId <= 0 && sumOfAnswer != images.Length) { ModelState.AddModelError(string.Empty, "Please provide full photos for the answers."); return(false); } return(true); }
//=============================================================================// public bool IsValidate(ListeningBaseCombined listeningBaseCombined, IFormFile audio) { ModelState.Remove(nameof(ListeningBaseQuestion.Answers)); if ((audio == null || audio.Length <= 0) && listeningBaseCombined.TestCategory.Id <= 0) { ModelState.AddModelError(string.Empty, $"{nameof(ListeningMedia.Audio)} is required."); return(false); } return(listeningBaseCombined != null && listeningBaseCombined.TestCategory != null && listeningBaseCombined.TestCategory != null && listeningBaseCombined.TestCategory.Name != null && listeningBaseCombined.TestCategory.Name.Length > 0 && listeningBaseCombined.TestCategory.TypeCode != null && listeningBaseCombined.TestCategory.TypeCode.Length > 0 && listeningBaseCombined.TestCategory.PartId > 0 && listeningBaseCombined.ListeningMedia != null && listeningBaseCombined.ListeningBaseQuestions != null && listeningBaseCombined.ListeningBaseQuestions.Count > 0); }
private async Task <bool> UpdateImages(ListeningBaseCombined listeningBaseCombined, IFormFile[] images) { if (listeningBaseCombined.TestCategory.Id > 0 && (images == null || images.Length <= 0)) { return(true); } if (listeningBaseCombined.TestCategory.Id <= 0 && images.Length < listeningBaseCombined.ListeningBaseQuestions.Count) { ModelState.AddModelError(string.Empty, "Missing photos for the answers."); return(false); } // Tiến hành tải các ảnh lên List <string> uploadImgePaths = new List <string>(); for (int i = 0; i < images.Length; i++) { string uploadResult = await host.UploadForTestImage(images[i], TestCategory.LISTENING, 1); if (uploadResult == null || uploadResult.Length <= 0) { uploadResult = ""; } uploadImgePaths.Add(uploadResult); } var imgPathIndex = 0; // Cập nhật các đường dẫn được tải lên vào các câu trả lời for (int i = 0; i < listeningBaseCombined.ListeningBaseQuestions.Count; i++) { for (int j = 0; j < listeningBaseCombined.ListeningBaseQuestions[i].AnswerList.Count; j++) { if (string.IsNullOrEmpty(listeningBaseCombined.ListeningBaseQuestions[i].AnswerList[j].AnswerContent)) { listeningBaseCombined.ListeningBaseQuestions[i].AnswerList[j].AnswerContent = uploadImgePaths[imgPathIndex++]; } } //listeningBaseCombined.ListeningBaseQuestions[i].Answers = JsonConvert.SerializeObject(listeningBaseCombined.ListeningBaseQuestions[i].AnswerList); } return(true); }
private async Task <bool> UpdateAudio(ListeningBaseCombined listeningBaseCombined, IFormFile audio) { if ((audio == null || audio.Length <= 0) && listeningBaseCombined.TestCategory.Id > 0) { return(true); } // Tiến hành tải audio lên string audioUploadPath = await host.UploadForTestAudio(audio, TestCategory.LISTENING, listeningBaseCombined.TestCategory.PartId); if (audioUploadPath == null || audioUploadPath.Length <= 0) { // Nếu gặp sự cố thì tiến hành xóa bỏ mục câu hỏi và trở lại trang thêm để thông báo if (listeningBaseCombined.ListeningMedia.Id <= 0) { _TestCategoryManager.Delete(listeningBaseCombined.TestCategory); } ModelState.AddModelError(string.Empty, "Cannot upload audio file."); return(false); } else { // Cập nhật đường dẫn vào listeningBaseCombined.ListeningMedia.Audio = audioUploadPath; // Cập nhật mục nó thuộc về if (listeningBaseCombined.ListeningMedia.TestCategoryId <= 0) { listeningBaseCombined.ListeningMedia.TestCategoryId = listeningBaseCombined.TestCategory.Id; listeningBaseCombined.ListeningMedia.Active = true; // Cập nhật vào CSDl _ListeningMediaManager.Add(listeningBaseCombined.ListeningMedia); } else { // Cập nhật vào CSDl _ListeningMediaManager.Update(listeningBaseCombined.ListeningMedia); } } return(true); }
public async Task <IActionResult> Part1Update(ListeningBaseCombined listeningBaseCombined, IFormFile audio, params IFormFile[] images) { return(await Processing(nameof(Part1), nameof(Part1Update), listeningBaseCombined, audio, images)); }
private async Task <IActionResult> Processing(string partName, string actionName, ListeningBaseCombined listeningBaseCombined, IFormFile audio, IFormFile[] images, bool isCheckQuestionText = true) { return(await Processing(partName, actionName, listeningBaseCombined, audio, isCheckQuestionText, true, images)); }
private async Task <IActionResult> Processing(string partName, string actionName, ListeningBaseCombined listeningBaseCombined, IFormFile audio, bool isCheckQuestionText = true, bool isUploadImages = false, IFormFile[] images = null) { var view = View($"{partName}/{actionName}", listeningBaseCombined); // Nếu mục không hợp lệ if (!IsValidate(listeningBaseCombined, audio)) { return(view); } if (isUploadImages) { // Nếu cho phép cập nhật hình ảnh, thì kiểm tra tính hợp lệ với cả ảnh if (!ValidateAndCountAnswers(listeningBaseCombined, isCheckQuestionText, false, images)) { return(view); } } else { // Nếu không cho phép cập nhật hình ảnh, chỉ kiểm tra tính hợp lệ của câu hỏi if (!ValidateAndCountAnswers(listeningBaseCombined, isCheckQuestionText)) { return(view); } } // Nếu cập nhật mục không thành công if (!UpdateTestCategory(listeningBaseCombined)) { ModelState.AddModelError(string.Empty, "An error occurred during execution."); return(view); } // Nếu up âm thanh không được if (!await UpdateAudio(listeningBaseCombined, audio)) { return(View($"{partName}/{actionName}", listeningBaseCombined)); } // Cho phép upload hình ảnh if (isUploadImages && !await UpdateImages(listeningBaseCombined, images)) { return(View($"{partName}/{actionName}", listeningBaseCombined)); } // Cập nhật người tạo câu hỏi, đồng thời thêm vào CSDL for (int i = 0; i < listeningBaseCombined.ListeningBaseQuestions.Count; i++) { // Chuyển danh sách câu trả lời thành JSON để lưu trữ listeningBaseCombined.ListeningBaseQuestions[i].Answers = JsonConvert.SerializeObject(listeningBaseCombined.ListeningBaseQuestions[i].AnswerList); if (listeningBaseCombined.ListeningBaseQuestions[i].Id <= 0) { listeningBaseCombined.ListeningBaseQuestions[i].TestCategoryId = listeningBaseCombined.TestCategory.Id; _ListeningBaseQuestionManager.Add(listeningBaseCombined.ListeningBaseQuestions[i]); } else { _ListeningBaseQuestionManager.Update(listeningBaseCombined.ListeningBaseQuestions[i]); } } this.NotifySuccess("Update completed!"); // Chuyển hướng đến hiển thị danh sách return(RedirectToAction(partName)); }
public async Task <IActionResult> Part2Update(ListeningBaseCombined listeningBaseCombined, IFormFile audio) { return(await Processing(nameof(Part2), nameof(Part2Update), listeningBaseCombined, audio)); }