public IActionResult AssessmentQuestionLevelDescriptor(LevelDescriptor levelDescriptor, int frameworkId, int level, int assessmentQuestionId = 0, int frameworkCompetencyId = 0) { var sessionAssessmentQuestion = multiPageFormService.GetMultiPageFormData <SessionAssessmentQuestion>( MultiPageFormDataFeature.EditAssessmentQuestion, TempData ); if (!ModelState.IsValid) { ModelState.Remove(nameof(LevelDescriptor.LevelLabel)); ModelState.AddModelError(nameof(LevelDescriptor.LevelLabel), $"Please enter a valid option {level} label (between 3 and 255 characters)"); if (sessionAssessmentQuestion == null) { return(StatusCode(404)); } var model = new AssessmentQuestionLevelDescriptorViewModel() { FrameworkId = frameworkId, FrameworkCompetencyId = frameworkCompetencyId, Name = sessionAssessmentQuestion.AssessmentQuestionDetail.Question, AssessmentQuestionDetail = sessionAssessmentQuestion.AssessmentQuestionDetail, LevelDescriptor = levelDescriptor, }; return(View("Developer/AssessmentQuestionLevelDescriptor", model)); } if (sessionAssessmentQuestion == null) { return(StatusCode(404)); } var existingDescriptor = sessionAssessmentQuestion.LevelDescriptors.Find(x => x.LevelValue == level); if (existingDescriptor != null) { sessionAssessmentQuestion.LevelDescriptors.Remove(existingDescriptor); } sessionAssessmentQuestion.LevelDescriptors.Add(levelDescriptor); multiPageFormService.SetMultiPageFormData( sessionAssessmentQuestion, MultiPageFormDataFeature.EditAssessmentQuestion, TempData ); var assessmentQuestionDetail = sessionAssessmentQuestion.AssessmentQuestionDetail; if (level >= assessmentQuestionDetail.MaxValue) { return(RedirectToAction( "EditAssessmentQuestionOptions", "Frameworks", new { frameworkId, assessmentQuestionId, frameworkCompetencyId } )); } var nextLevel = level + 1; return(RedirectToAction( "AssessmentQuestionLevelDescriptor", "Frameworks", new { frameworkId, level = nextLevel, assessmentQuestionId, frameworkCompetencyId } )); }
public IActionResult AssessmentQuestionLevelDescriptor(int frameworkId, int level, int assessmentQuestionId = 0, int frameworkCompetencyId = 0) { var userRole = frameworkService.GetAdminUserRoleForFrameworkId(GetAdminId(), frameworkId); if (userRole < 2) { return(StatusCode(403)); } var sessionAssessmentQuestion = multiPageFormService.GetMultiPageFormData <SessionAssessmentQuestion>( MultiPageFormDataFeature.EditAssessmentQuestion, TempData ); if (sessionAssessmentQuestion == null) { return(StatusCode(404)); } var assessmentQuestionDetail = sessionAssessmentQuestion.AssessmentQuestionDetail; multiPageFormService.SetMultiPageFormData( sessionAssessmentQuestion, MultiPageFormDataFeature.EditAssessmentQuestion, TempData ); if (level < assessmentQuestionDetail.MinValue) { return(RedirectToAction("EditAssessmentQuestionScoring", "Frameworks", new { frameworkId, assessmentQuestionId, frameworkCompetencyId })); } else if (level > assessmentQuestionDetail.MaxValue) { return(RedirectToAction("EditAssessmentQuestionOptions", "Frameworks", new { frameworkId, assessmentQuestionId, frameworkCompetencyId })); } var levelDescriptor = sessionAssessmentQuestion.LevelDescriptors.Find(x => x.LevelValue == level) ?? new LevelDescriptor() { LevelValue = level, UpdatedByAdminID = GetAdminId() }; var frameworkConfig = frameworkService.GetFrameworkConfigForFrameworkId(frameworkId); var model = new AssessmentQuestionLevelDescriptorViewModel() { FrameworkId = frameworkId, FrameworkCompetencyId = frameworkCompetencyId, Name = assessmentQuestionDetail.Question, AssessmentQuestionDetail = assessmentQuestionDetail, LevelDescriptor = levelDescriptor, FrameworkConfig = frameworkConfig, }; return(View("Developer/AssessmentQuestionLevelDescriptor", model)); }