11namespace  DigitalLearningSolutions . Web . Controllers . LearningPortalController 
22{ 
3-     using  System ; 
4-     using  System . Collections . Generic ; 
5-     using  System . Linq ; 
6-     using  System . Net ; 
7-     using  System . Text . Json ; 
8-     using  System . Threading . Tasks ; 
93    using  DigitalLearningSolutions . Data . Enums ; 
4+     using  DigitalLearningSolutions . Data . Helpers ; 
105    using  DigitalLearningSolutions . Data . Models . Centres ; 
6+     using  DigitalLearningSolutions . Data . Models . Common ; 
117    using  DigitalLearningSolutions . Data . Models . SearchSortFilterPaginate ; 
128    using  DigitalLearningSolutions . Data . Models . SelfAssessments ; 
139    using  DigitalLearningSolutions . Data . Models . SessionData . SelfAssessments ; 
1915    using  DigitalLearningSolutions . Web . ViewModels . Common . SearchablePage ; 
2016    using  DigitalLearningSolutions . Web . ViewModels . LearningPortal . Current ; 
2117    using  DigitalLearningSolutions . Web . ViewModels . LearningPortal . SelfAssessments ; 
22-     using  Microsoft . AspNetCore . Mvc ; 
23-     using  Microsoft . Extensions . Logging ; 
2418    using  GDS . MultiPageFormData . Enums ; 
25-     using  DigitalLearningSolutions . Data . Helpers ; 
26-     using  DigitalLearningSolutions . Web . Services ; 
27-     using  DigitalLearningSolutions . Web . ViewModels . TrackingSystem . Delegates . ViewDelegate ; 
28-     using  DocumentFormat . OpenXml . EMMA ; 
29-     using  DigitalLearningSolutions . Data . Models . Supervisor ; 
30-     using  DigitalLearningSolutions . Data . Models . Common ; 
19+     using  Microsoft . AspNetCore . Mvc ; 
3120    using  Microsoft . AspNetCore . Mvc . Rendering ; 
3221    using  Microsoft . AspNetCore . Mvc . ViewEngines ; 
3322    using  Microsoft . AspNetCore . Mvc . ViewFeatures ; 
23+     using  Microsoft . Extensions . Logging ; 
24+     using  System ; 
25+     using  System . Collections . Generic ; 
3426    using  System . IO ; 
27+     using  System . Linq ; 
28+     using  System . Net ; 
29+     using  System . Text . Json ; 
30+     using  System . Threading . Tasks ; 
3531
3632    public  partial  class  LearningPortalController 
3733    { 
@@ -426,6 +422,55 @@ public IActionResult AddSelfAssessmentOverviewFilter(SearchSelfAssessmentOvervie
426422            return  RedirectToAction ( "FilteredSelfAssessmentGroups" ,  model ) ; 
427423        } 
428424
425+         [ ServiceFilter ( typeof ( IsCentreAuthorizedSelfAssessment ) ) ] 
426+         [ Route ( "LearningPortal/SelfAssessment/{selfAssessmentId}/{vocabulary}/AddOptional" ) ] 
427+         public  IActionResult  AddOptionalCompetencies ( int  selfAssessmentId ,  string  vocabulary ) 
428+         { 
429+             var  delegateUserId  =  User . GetUserIdKnownNotNull ( ) ; 
430+             var  assessment  =  selfAssessmentService . GetSelfAssessmentForCandidateById ( delegateUserId ,  selfAssessmentId ) ; 
431+             if  ( assessment  ==  null ) 
432+             { 
433+                 logger . LogWarning ( 
434+                     $ "Attempt to display self assessment overview for user { delegateUserId }  with no self assessment"
435+                 ) ; 
436+                 return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
437+             } 
438+ 
439+             var  optionalCompetencies  =  selfAssessmentService . GetCandidateAssessmentOptionalCompetencies ( selfAssessmentId ,  delegateUserId ) ; 
440+             if  ( optionalCompetencies . Any ( ) ) 
441+             { 
442+                 if  ( ! selfAssessmentService . HasMinimumOptionalCompetencies ( selfAssessmentId ,  delegateUserId ) ) 
443+                 { 
444+                     var  model  =  new  AddOptionalCompetenciesViewModel  {  SelfAssessment  =  assessment  } ; 
445+                     return  View ( "SelfAssessments/AddOptionalCompetencies" ,  model ) ; 
446+                 } 
447+             } 
448+ 
449+             return  RedirectToAction ( "SelfAssessmentOverview" ,  new  {  selfAssessmentId ,  vocabulary  } ) ; 
450+         } 
451+ 
452+         [ HttpPost ] 
453+         [ Route ( "LearningPortal/SelfAssessment/{selfAssessmentId}/{vocabulary}/AddOptional" ) ] 
454+         public  IActionResult  AddOptionalCompetencies ( AddOptionalCompetenciesViewModel  test ) 
455+         { 
456+             //var delegateUserId = User.GetUserIdKnownNotNull(); 
457+             //var selfAssessmentId = test.SelfAssessment.Id; 
458+             //var vocabulary = test.VocabPlural().ToString(); 
459+ 
460+             //var assessment = selfAssessmentService.GetSelfAssessmentForCandidateById(delegateUserId, test.SelfAssessment.Id); 
461+             //if (assessment == null) 
462+             //{ 
463+             //    logger.LogWarning( 
464+             //        $"Attempt to display self assessment overview for user {delegateUserId} with no self assessment" 
465+             //    ); 
466+             //    return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 }); 
467+             //} 
468+             var  a  =  1 ; 
469+             var  b  =  "2" ; 
470+ 
471+             return  RedirectToAction ( "SelfAssessmentOverview" ,  new  {  a ,  b  } ) ; 
472+         } 
473+ 
429474        [ ServiceFilter ( typeof ( IsCentreAuthorizedSelfAssessment ) ) ] 
430475        [ Route ( "LearningPortal/SelfAssessment/{selfAssessmentId}/{vocabulary}/{competencyGroupId}" ) ] 
431476        [ Route ( "LearningPortal/SelfAssessment/{selfAssessmentId}/{vocabulary}" ) ] 
@@ -479,7 +524,7 @@ public IActionResult SelfAssessmentOverview(int selfAssessmentId, string vocabul
479524                CompetencyGroups  =  competencies . GroupBy ( competency =>  competency . CompetencyGroup ) , 
480525                PreviousCompetencyNumber  =  Math . Max ( competencies . Count ( ) ,  1 ) , 
481526                NumberOfOptionalCompetencies  =  optionalCompetencies . Count ( ) , 
482-                 NumberOfSelfAssessedOptionalCompetencies  =  optionalCompetencies . Count ( x =>  x . IncludedInSelfAssessment   )   , 
527+                 NumberOfSelfAssessedOptionalCompetencies  =  optionalCompetencies . Count ( x =>  x . IncludedInSelfAssessment ) , 
483528                SupervisorSignOffs  =  supervisorSignOffs , 
484529                SearchViewModel  =  searchViewModel 
485530            } ; 
@@ -495,6 +540,7 @@ public IActionResult SelfAssessmentOverview(int selfAssessmentId, string vocabul
495540            ViewBag . SupervisorSelfAssessmentReview  =  assessment . SupervisorSelfAssessmentReview ; 
496541            return  View ( "SelfAssessments/SelfAssessmentOverview" ,  model ) ; 
497542        } 
543+ 
498544        [ HttpPost ] 
499545        [ ServiceFilter ( typeof ( IsCentreAuthorizedSelfAssessment ) ) ] 
500546        [ SetDlsSubApplication ( nameof ( DlsSubApplication . LearningPortal ) ) ] 
@@ -1440,8 +1486,9 @@ public IActionResult SubmitVerification()
14401486
14411487        [ ServiceFilter ( typeof ( IsCentreAuthorizedSelfAssessment ) ) ] 
14421488        [ Route ( "/LearningPortal/SelfAssessment/{selfAssessmentId:int}/{vocabulary}/Optional" ) ] 
1443-         public  IActionResult  ManageOptionalCompetencies ( int  selfAssessmentId ) 
1489+         public  IActionResult  ManageOptionalCompetencies ( int  selfAssessmentId ,   string   isFromAddOptional   =   null ) 
14441490        { 
1491+             ModelState . Remove ( "isFromAddOptional" ) ; 
14451492            var  delegateUserId  =  User . GetUserIdKnownNotNull ( ) ; 
14461493            var  assessment  =  selfAssessmentService . GetSelfAssessmentForCandidateById ( delegateUserId ,  selfAssessmentId ) ; 
14471494            var  optionalCompetencies  = 
@@ -1463,6 +1510,12 @@ public IActionResult ManageOptionalCompetencies(int selfAssessmentId)
14631510                CompetencyGroups  =  optionalCompetencies . GroupBy ( competency =>  competency . CompetencyGroup ) , 
14641511                IncludedSelfAssessmentStructureIds  =  includedSelfAssessmentStructureIds , 
14651512            } ; 
1513+ 
1514+             if  ( ! string . IsNullOrEmpty ( isFromAddOptional ) ) 
1515+             { 
1516+                 ViewBag . AddOptionalVocab  =  model . VocabPlural ( ) ; 
1517+             } 
1518+ 
14661519            return  View ( "SelfAssessments/ManageOptionalCompetencies" ,  model ) ; 
14671520        } 
14681521
@@ -1645,23 +1698,23 @@ public IActionResult WithdrawSupervisorSignOffRequest(
16451698                ) ; 
16461699        } 
16471700
1648-        
1701+ 
16491702        [ Route ( "/LearningPortal/selfAssessments/{CandidateAssessmentId:int}/{vocabulary}/Certificate" ) ] 
16501703
16511704        public  IActionResult  CompetencySelfAssessmentCertificate ( int  CandidateAssessmentId ,  string  vocabulary ) 
16521705        { 
16531706            int  supervisorDelegateId  =  0 ; 
16541707            var  adminId  =  User . GetAdminId ( ) ; 
1655-            var  competencymaindata  =  selfAssessmentService . GetCompetencySelfAssessmentCertificate ( CandidateAssessmentId ) ; 
1656-             if  ( ( competencymaindata  ==  null ) ||  (   competencymaindata . LearnerId  !=  User . GetUserIdKnownNotNull ( ) )  ||  ( CandidateAssessmentId  ==  0 ) ) 
1708+              var  competencymaindata  =  selfAssessmentService . GetCompetencySelfAssessmentCertificate ( CandidateAssessmentId ) ; 
1709+             if  ( ( competencymaindata  ==  null )   ||  ( competencymaindata . LearnerId  !=  User . GetUserIdKnownNotNull ( ) )  ||  ( CandidateAssessmentId  ==  0 ) ) 
16571710            { 
16581711                return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
16591712            } 
16601713            var  delegateUserId  =  competencymaindata . LearnerId ; 
16611714            if  ( vocabulary  ==  "Supervise" ) 
16621715            { 
16631716                var  supervisorDelegateDetails  =  supervisorService . GetSupervisorDelegateDetailsForAdminId ( adminId . Value ) ; 
1664-              var  checkSupervisorDelegate  =  supervisorDelegateDetails . Where ( x=>  x . DelegateUserID  ==  competencymaindata . LearnerId ) . FirstOrDefault ( ) ; 
1717+                  var  checkSupervisorDelegate  =  supervisorDelegateDetails . Where ( x  =>  x . DelegateUserID  ==  competencymaindata . LearnerId ) . FirstOrDefault ( ) ; 
16651718                if  ( checkSupervisorDelegate  ==  null ) 
16661719                { 
16671720                    return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
0 commit comments