1414    using  Microsoft . AspNetCore . Mvc . Rendering ; 
1515    using  DigitalLearningSolutions . Data . Models . Centres ; 
1616    using  DigitalLearningSolutions . Data . Models . Frameworks ; 
17+     using  Microsoft . CodeAnalysis . CSharp . Syntax ; 
1718
1819    public  partial  class  CompetencyAssessmentsController 
1920    { 
@@ -187,10 +188,9 @@ public IActionResult ManageCompetencyAssessment(int competencyAssessmentId, int?
187188            return  View ( "ManageCompetencyAssessment" ,  model ) ; 
188189        } 
189190
190-         [ Route ( "/CompetencyAssessments/ProfessionalGroup/{actionName}/{competencyAssessmentId}" ) ] 
191-         [ Route ( "/CompetencyAssessments/ProfessionalGroup/{actionName}" ) ] 
191+         [ Route ( "/CompetencyAssessments/{competencyAssessmentId}/NationalRoleProfileLinks/{actionName}" ) ] 
192192        [ SetSelectedTab ( nameof ( NavMenuTab . CompetencyAssessments ) ) ] 
193-         public  IActionResult  CompetencyAssessmentProfessionalGroup ( string   actionName ,   int  competencyAssessmentId  =  0 ) 
193+         public  IActionResult  EditRoleProfileLinks ( int  competencyAssessmentId  =  0 ,   string   actionName   =   "EditGroup" ) 
194194        { 
195195            var  adminId  =  GetAdminID ( ) ; 
196196            CompetencyAssessmentBase ?  competencyAssessmentBase ; 
@@ -212,45 +212,68 @@ public IActionResult CompetencyAssessmentProfessionalGroup(string actionName, in
212212                competencyAssessmentBase  =  competencyAssessmentService . GetCompetencyAssessmentBaseById ( competencyAssessmentId ,  adminId ) ; 
213213            } 
214214            var  professionalGroups  =  competencyAssessmentService . GetNRPProfessionalGroups ( ) ; 
215-             var  model  =  new  ProfessionalGroupViewModel ( ) 
216-             { 
217-                 NRPProfessionalGroups  =  professionalGroups , 
218-                 CompetencyAssessmentBase  =  competencyAssessmentBase 
219-             } ; 
220-             return  View ( "ProfessionalGroup" ,  model ) ; 
215+             var  subGroups  =  competencyAssessmentService . GetNRPSubGroups ( competencyAssessmentBase . NRPProfessionalGroupID ) ; 
216+             var  roles  =  competencyAssessmentService . GetNRPRoles ( competencyAssessmentBase . NRPSubGroupID ) ; 
217+             var  competencyAssessmentTaskStatus  =  competencyAssessmentService . GetCompetencyAssessmentTaskStatus ( competencyAssessmentId ,  null ) ; 
218+             var  model  =  new  EditRoleProfileLinksViewModel ( competencyAssessmentBase ,  professionalGroups ,  subGroups ,  roles ,  actionName ,  competencyAssessmentTaskStatus . NationalRoleProfileTaskStatus ) ; 
219+             return  View ( model ) ; 
221220        } 
222221
223222        [ HttpPost ] 
224-         [ Route ( "/CompetencyAssessments/ProfessionalGroup/{actionName}/{competencyAssessmentId}" ) ] 
225-         [ Route ( "/CompetencyAssessments/ProfessionalGroup/{actionName}" ) ] 
226-         [ SetSelectedTab ( nameof ( NavMenuTab . CompetencyAssessments ) ) ] 
227-         public  IActionResult  SaveProfessionalGroup ( CompetencyAssessmentBase  competencyAssessmentBase ,  string  actionName ,  int  competencyAssessmentId  =  0 ) 
223+         [ Route ( "/CompetencyAssessments/{competencyAssessmentId}/NationalRoleProfileLinks/{actionName}" ) ] 
224+         public  IActionResult  EditRoleProfileLinks ( EditRoleProfileLinksViewModel  model ,  string  actionName ,  int  competencyAssessmentId  =  0 ) 
228225        { 
229-             if  ( competencyAssessmentBase . NRPProfessionalGroupID  ==  null ) 
226+             var  adminId  =  GetAdminID ( ) ; 
227+             var  competencyAssessmentBase  =  competencyAssessmentService . GetCompetencyAssessmentBaseById ( competencyAssessmentId ,  adminId ) ; 
228+             competencyAssessmentService . UpdateRoleProfileLinksTaskStatus ( model . ID ,  model . TaskStatus  ??  false ) ; 
229+             if  ( competencyAssessmentBase  ==  null ) 
230230            { 
231-                 ModelState . Remove ( nameof ( CompetencyAssessmentBase . NRPProfessionalGroupID ) ) ; 
232-                 ModelState . AddModelError ( nameof ( CompetencyAssessmentBase . NRPProfessionalGroupID ) ,  "Please choose a professional group"  +  ( competencyAssessmentId  ==  0  ?  "or Skip this step"  :  "" )  +  "." ) ; 
233-                 // do something 
234-                 return  View ( "Name" ,  competencyAssessmentBase ) ; 
231+                 logger . LogWarning ( $ "Failed to submit role links page for competencyAssessmentId: { competencyAssessmentId }  adminId: { adminId } ") ; 
232+                 return  StatusCode ( 500 ) ; 
235233            } 
236-             if  ( actionName   ==   "New" ) 
234+             if  ( competencyAssessmentBase . UserRole   <   2 ) 
237235            { 
238-                 //TO DO Store to self assessment 
239- 
240-                 return  RedirectToAction ( "CompetencyAssessmentSubGroup" ,  "CompetencyAssessments" ,  new  {  actionName  } ) ; 
236+                 return  StatusCode ( 403 ) ; 
241237            } 
242-             else 
238+             if   ( competencyAssessmentBase . NRPProfessionalGroupID   !=   model . ProfessionalGroupId ) 
243239            { 
244-                 var  adminId  =  GetAdminID ( ) ; 
245-                 var  isUpdated  =  competencyAssessmentService . UpdateCompetencyAssessmentProfessionalGroup ( competencyAssessmentBase . ID ,  adminId ,  competencyAssessmentBase . NRPProfessionalGroupID ) ; 
246-                 if  ( isUpdated ) 
240+                 model . SubGroupId  =  null ; 
241+                 model . RoleId  =  null ; 
242+             } 
243+             if  ( competencyAssessmentBase . NRPSubGroupID  !=  model . SubGroupId ) 
244+             { 
245+                 model . RoleId  =  null ; 
246+             } 
247+             var  isUpdated  =  competencyAssessmentService . UpdateCompetencyRoleProfileLinks ( model . ID ,  adminId ,  model . ProfessionalGroupId ,  model . SubGroupId ,  model . RoleId ) ; 
248+             if  ( model . ActionName  ==  "EditGroup" ) 
249+             { 
250+                 if  ( model . ProfessionalGroupId  ==  null ) 
247251                { 
248-                     return  RedirectToAction ( "CompetencyAssessmentSubGroup " ,  "CompetencyAssessments" ,   new  {  actionName ,  competencyAssessmentId  } ) ; 
252+                     return  RedirectToAction ( "EditRoleProfileLinks " ,  new  {  actionName   =   "Summary" ,  competencyAssessmentId  } ) ; 
249253                } 
250254                else 
251255                { 
252-                     return  RedirectToAction ( "ManageCompetencyAssessment" ,  new  {  tabname  =  "Details" ,  competencyAssessmentId  } ) ; 
256+                     return  RedirectToAction ( "EditRoleProfileLinks" ,  new  {  actionName  =  "EditSubGroup" ,  competencyAssessmentId  } ) ; 
257+                 } 
258+             } 
259+             else  if  ( model . ActionName  ==  "EditSubGroup" ) 
260+             { 
261+                 if  ( model . SubGroupId  ==  null ) 
262+                 { 
263+                     return  RedirectToAction ( "EditRoleProfileLinks" ,  new  {  actionName  =  "Summary" ,  competencyAssessmentId  } ) ; 
253264                } 
265+                 else 
266+                 { 
267+                     return  RedirectToAction ( "EditRoleProfileLinks" ,  new  {  actionName  =  "EditRole" ,  competencyAssessmentId  } ) ; 
268+                 } 
269+             } 
270+             else  if  ( model . ActionName  ==  "EditRole" ) 
271+             { 
272+                 return  RedirectToAction ( "EditRoleProfileLinks" ,  new  {  actionName  =  "Summary" ,  competencyAssessmentId  } ) ; 
273+             } 
274+             else 
275+             { 
276+                 return  RedirectToAction ( "ManageCompetencyAssessment" ,  new  {  competencyAssessmentId  } ) ; 
254277            } 
255278        } 
256279
@@ -323,11 +346,11 @@ public IActionResult EditBranding(EditBrandingViewModel model)
323346                model . CategorySelectList  =  categorySelectList ; 
324347                return  View ( "EditBranding" ,  model ) ; 
325348            } 
326-             if ( model . BrandID  ==  0 ) 
349+             if   ( model . BrandID  ==  0 ) 
327350            { 
328351                model . BrandID  =  commonService . InsertBrandAndReturnId ( model . Brand ,  ( int ) centreId ) ; 
329352            } 
330-             if ( model . CategoryID  ==  0 ) 
353+             if   ( model . CategoryID  ==  0 ) 
331354            { 
332355                model . CategoryID  =  commonService . InsertCategoryAndReturnId ( model . Category ,  ( int ) centreId ) ; 
333356            } 
0 commit comments