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