88 using DigitalLearningSolutions . Web . Helpers ;
99 using DigitalLearningSolutions . Web . Models . Enums ;
1010 using DigitalLearningSolutions . Web . ViewModels . CompetencyAssessments ;
11+ using GDS . MultiPageFormData . Enums ;
1112 using Microsoft . AspNetCore . Mvc ;
1213 using Microsoft . AspNetCore . Mvc . Rendering ;
1314 using Microsoft . Extensions . Logging ;
@@ -82,7 +83,6 @@ public IActionResult ViewCompetencyAssessments(string tabname, string? searchStr
8283 isWorkforceManager
8384 ) ;
8485 }
85-
8686 var currentTab = tabname == "All" ? CompetencyAssessmentsTab . AllCompetencyAssessments : CompetencyAssessmentsTab . MyCompetencyAssessments ;
8787 CompetencyAssessmentsViewModel ? model = new CompetencyAssessmentsViewModel (
8888 isWorkforceManager ,
@@ -96,12 +96,18 @@ public IActionResult ViewCompetencyAssessments(string tabname, string? searchStr
9696
9797 [ Route ( "/CompetencyAssessments/{actionName}/Name/{competencyAssessmentId}" ) ]
9898 [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{actionName}/Name" ) ]
99+ [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/{actionName}/Name" ) ]
99100 [ Route ( "/CompetencyAssessments/{actionName}/Name" ) ]
100101 [ SetSelectedTab ( nameof ( NavMenuTab . CompetencyAssessments ) ) ]
101102 public IActionResult CompetencyAssessmentName ( string actionName , int competencyAssessmentId = 0 , int ? frameworkId = null )
102103 {
103104 var adminId = GetAdminID ( ) ;
104105 var competencyAssessmentBase = new CompetencyAssessmentBase ( ) ;
106+ if ( ( frameworkId . HasValue && frameworkId . Value != 0 && actionName == "New" ) )
107+ {
108+ var data = new CompetencyAssessmentFeaturesViewModel ( ) ;
109+ SetcompetencyAssessmentFeaturesData ( data ) ;
110+ }
105111 if ( competencyAssessmentId > 0 )
106112 {
107113 competencyAssessmentBase = competencyAssessmentService . GetCompetencyAssessmentBaseById ( competencyAssessmentId , adminId ) ;
@@ -129,6 +135,7 @@ public IActionResult CompetencyAssessmentName(string actionName, int competencyA
129135 [ HttpPost ]
130136 [ Route ( "/CompetencyAssessments/{actionName}/Name/{competencyAssessmentId}" ) ]
131137 [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{actionName}/Name" ) ]
138+ [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/{actionName}/Name" ) ]
132139 [ Route ( "/CompetencyAssessments/{actionName}/Name" ) ]
133140 [ SetSelectedTab ( nameof ( NavMenuTab . CompetencyAssessments ) ) ]
134141 public IActionResult SaveProfileName ( CompetencyAssessmentBase competencyAssessmentBase , string actionName , int competencyAssessmentId = 0 , int ? frameworkId = null )
@@ -153,6 +160,7 @@ public IActionResult SaveProfileName(CompetencyAssessmentBase competencyAssessme
153160 return View ( "Name" , competencyAssessmentBase ) ;
154161 }
155162 competencyAssessmentId = competencyAssessmentService . InsertCompetencyAssessment ( adminId , userCentreId , competencyAssessmentBase . CompetencyAssessmentName , frameworkId ) ;
163+ if ( frameworkId . HasValue && frameworkId . Value != 0 ) return RedirectToAction ( "CompetencyAssessmentFeatures" , new { competencyAssessmentId , frameworkId } ) ;
156164 }
157165 else
158166 {
@@ -163,6 +171,9 @@ public IActionResult SaveProfileName(CompetencyAssessmentBase competencyAssessme
163171 ModelState . AddModelError ( nameof ( CompetencyAssessmentBase . CompetencyAssessmentName ) , "Another competency assessment exists with that name. Please choose a different name." ) ;
164172 return View ( "Name" , competencyAssessmentBase ) ;
165173 }
174+ if ( frameworkId . HasValue && frameworkId . Value != 0
175+ && competencyAssessmentId != 0
176+ && actionName == "Edit" ) return RedirectToAction ( "CompetencyAssessmentFeatures" , new { competencyAssessmentId , frameworkId } ) ;
166177 }
167178 return RedirectToAction ( "ManageCompetencyAssessment" , new { competencyAssessmentId , frameworkId } ) ;
168179 }
@@ -640,5 +651,80 @@ public IActionResult ViewSelectedCompetencies(ViewSelectedCompetenciesFormData m
640651 competencyAssessmentService . UpdateSelectCompetenciesTaskStatus ( model . ID , model . TaskStatus . Value , null ) ;
641652 return RedirectToAction ( "ManageCompetencyAssessment" , new { competencyAssessmentId = model . ID } ) ;
642653 }
654+
655+ [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Features" ) ]
656+ public IActionResult CompetencyAssessmentFeatures ( int competencyAssessmentId , int ? frameworkId = null )
657+ {
658+
659+ var adminId = GetAdminID ( ) ;
660+ var data = GetcompetencyAssessmentFeaturesData ( ) ;
661+ if ( ! string . IsNullOrEmpty ( data . CompetencyAssessmentName ) ) return View ( data ) ;
662+ var competencyAssessmentBase = competencyAssessmentService . GetCompetencyAssessmentBaseById ( competencyAssessmentId , adminId ) ;
663+ if ( competencyAssessmentBase == null ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 500 } ) ;
664+ if ( competencyAssessmentBase . UserRole < 2 ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 403 } ) ;
665+ var baseModel = new CompetencyAssessmentFeaturesViewModel ( competencyAssessmentBase . ID ,
666+ competencyAssessmentBase . CompetencyAssessmentName ,
667+ competencyAssessmentBase . UserRole ,
668+ frameworkId ) ;
669+ return View ( baseModel ) ;
670+ }
671+ [ HttpPost ]
672+ [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Features" ) ]
673+ public IActionResult CompetencyAssessmentFeatures ( CompetencyAssessmentFeaturesViewModel featuresViewModel )
674+ {
675+ if ( featuresViewModel == null ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 500 } ) ;
676+ SetcompetencyAssessmentFeaturesData ( featuresViewModel ) ;
677+ return RedirectToAction ( "CompetencyAssessmentSummary" , new { competencyAssessmentId = featuresViewModel . ID , featuresViewModel . FrameworkId } ) ;
678+ }
679+
680+ [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Summary" ) ]
681+ public IActionResult CompetencyAssessmentSummary ( int competencyAssessmentId , int ? frameworkId = null )
682+ {
683+ if ( competencyAssessmentService . GetSelfAssessmentStructure ( competencyAssessmentId ) != 0 ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 410 } ) ;
684+ if ( competencyAssessmentId == 0 ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 403 } ) ;
685+ var data = GetcompetencyAssessmentFeaturesData ( ) ;
686+ if ( data == null ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 500 } ) ;
687+ SetcompetencyAssessmentFeaturesData ( data ) ;
688+ return View ( data ) ;
689+ }
690+ [ HttpPost ]
691+ [ Route ( "/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Summary" ) ]
692+ public IActionResult CompetencyAssessmentSummary ( CompetencyAssessmentFeaturesViewModel competency )
693+ {
694+ var data = GetcompetencyAssessmentFeaturesData ( ) ;
695+ if ( data . ID == 0 ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 403 } ) ;
696+ if ( competencyAssessmentService . GetSelfAssessmentStructure ( data . ID ) != 0 ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 410 } ) ;
697+ var features = competencyAssessmentService . UpdateCompetencyAssessmentFeaturesTaskStatus ( data . ID ,
698+ data . DescriptionStatus ,
699+ data . ProviderandCategoryStatus ,
700+ data . VocabularyStatus ,
701+ data . WorkingGroupStatus ,
702+ data . AllframeworkCompetenciesStatus ) ;
703+ if ( ! features ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 500 } ) ;
704+ competencyAssessmentService . UpdateSelfAssessmentFromFramework ( data . ID , data . FrameworkId ) ;
705+ var insertSelfAssessment = competencyAssessmentService . InsertSelfAssessmentStructure ( data . ID , data . FrameworkId ) ;
706+ if ( ! insertSelfAssessment ) return RedirectToAction ( "StatusCode" , "LearningSolutions" , new { code = 500 } ) ;
707+ multiPageFormService . ClearMultiPageFormData ( MultiPageFormDataFeature . AddCustomWebForm ( "AssessmentFeaturesDataCWF" ) , TempData ) ;
708+ TempData . Clear ( ) ;
709+ return RedirectToAction ( "ManageCompetencyAssessment" , new { competencyAssessmentId = competency . ID , competency . FrameworkId } ) ;
710+ }
711+
712+ private void SetcompetencyAssessmentFeaturesData ( CompetencyAssessmentFeaturesViewModel data )
713+ {
714+ multiPageFormService . SetMultiPageFormData (
715+ data ,
716+ MultiPageFormDataFeature . AddCustomWebForm ( "AssessmentFeaturesDataCWF" ) ,
717+ TempData
718+ ) ;
719+ }
720+
721+ private CompetencyAssessmentFeaturesViewModel GetcompetencyAssessmentFeaturesData ( )
722+ {
723+ var data = multiPageFormService . GetMultiPageFormData < CompetencyAssessmentFeaturesViewModel > (
724+ MultiPageFormDataFeature . AddCustomWebForm ( "AssessmentFeaturesDataCWF" ) ,
725+ TempData
726+ ) . GetAwaiter ( ) . GetResult ( ) ;
727+ return data ;
728+ }
643729 }
644730}
0 commit comments