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