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));
        }