@@ -1652,26 +1652,15 @@ public IActionResult CompetencySelfAssessmentCertificate(int CandidateAssessment
16521652        { 
16531653            int  supervisorDelegateId  =  0 ; 
16541654            var  adminId  =  User . GetAdminId ( ) ; 
1655-            var  competencymaindata  =  selfAssessmentService . GetCompetencySelfAssessmentCertificate ( CandidateAssessmentId ) ; 
1656-             if  ( ( competencymaindata  ==  null ) ||  (  competencymaindata . LearnerId  !=  User . GetUserIdKnownNotNull ( ) )  ||  ( CandidateAssessmentId  ==  0 ) ) 
1655+             var  userId  =  User . GetUserIdKnownNotNull ( ) ; 
1656+             var  competencymaindata  =  selfAssessmentService . GetCompetencySelfAssessmentCertificate ( CandidateAssessmentId ) ; 
1657+             if  ( ( competencymaindata  ==  null ) ||  (  competencymaindata . LearnerId  !=  User . GetUserIdKnownNotNull ( ) )  ||  ( CandidateAssessmentId  ==  0 )  ||  ( userId  !=  competencymaindata . LearnerId ) ) 
16571658            { 
16581659                return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
16591660            } 
16601661            var  delegateUserId  =  competencymaindata . LearnerId ; 
1661-             if  ( vocabulary  ==  "Supervise" ) 
1662-             { 
1663-                 var  supervisorDelegateDetails  =  supervisorService . GetSupervisorDelegateDetailsForAdminId ( adminId . Value ) ; 
1664-              var  checkSupervisorDelegate  =  supervisorDelegateDetails . Where ( x=>  x . DelegateUserID  ==  competencymaindata . LearnerId ) . FirstOrDefault ( ) ; 
1665-                 if  ( checkSupervisorDelegate  ==  null ) 
1666-                 { 
1667-                     return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
1668-                 } 
1669-                 var  supervisorDelegate  =  supervisorService . GetSupervisorDelegate ( User . GetAdminIdKnownNotNull ( ) ,  delegateUserId ) ; 
1670-                 supervisorDelegateId  =  supervisorDelegate . ID ; 
1671-             } 
1672-             var  recentResults  =  selfAssessmentService . GetMostRecentResults ( competencymaindata . SelfAssessmentID ,  competencymaindata . LearnerDelegateAccountId ) . ToList ( ) ; 
1662+              var  recentResults  =  selfAssessmentService . GetMostRecentResults ( competencymaindata . SelfAssessmentID ,  competencymaindata . LearnerDelegateAccountId ) . ToList ( ) ; 
16731663            var  supervisorSignOffs  =  selfAssessmentService . GetSupervisorSignOffsForCandidateAssessment ( competencymaindata . SelfAssessmentID ,  delegateUserId ) ; 
1674- 
16751664            if  ( ! CertificateHelper . CanViewCertificate ( recentResults ,  supervisorSignOffs ) ) 
16761665            { 
16771666                return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  401  } ) ; 
@@ -1720,8 +1709,9 @@ public IActionResult CompetencySelfAssessmentCertificate(int CandidateAssessment
17201709            var  model  =  new  CompetencySelfAssessmentCertificateViewModel ( competencymaindata ,  competencycount ,  vocabulary ,  accessors ,  activitySummaryCompetencySelfAssesment ,  sumQuestions ,  sumVerifiedCount ,  supervisorDelegateId ) ; 
17211710            return  View ( "SelfAssessments/CompetencySelfAssessmentCertificate" ,  model ) ; 
17221711        } 
1723-         [ Route ( "DownloadCertificate" ) ] 
1724-         public  async  Task < IActionResult >  DownloadCertificate ( int  candidateAssessmentId ) 
1712+ 
1713+         [ Route ( "/LearningPortal/selfAssessments/{CandidateAssessmentId:int}/{vocabulary}/DownloadCertificate" ) ] 
1714+         public  async  Task < IActionResult >  DownloadCertificate ( int  candidateAssessmentId ,  string  vocabulary ) 
17251715        { 
17261716            PdfReportStatusResponse  pdfReportStatusResponse  =  new  PdfReportStatusResponse ( ) ; 
17271717            var  delegateId  =  User . GetCandidateIdKnownNotNull ( ) ; 
@@ -1730,6 +1720,19 @@ public async Task<IActionResult> DownloadCertificate(int candidateAssessmentId)
17301720            { 
17311721                return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
17321722            } 
1723+             if  ( vocabulary  ==  "Proficiencies" ) 
1724+             { 
1725+                 var  userId  =  User . GetUserIdKnownNotNull ( ) ; 
1726+                 if ( userId  !=  competencymaindata . LearnerId  )  return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
1727+ 
1728+             } 
1729+             if  ( vocabulary  ==  "ProfileAssessment" ) 
1730+             { 
1731+                 var  adminId  =  User . GetAdminId ( ) ; 
1732+                 var  supervisorDelegateDetails  =  supervisorService . GetSupervisorDelegateDetailsForAdminId ( adminId . Value ) ; 
1733+                 var  checkSupervisorDelegate  =  supervisorDelegateDetails . Where ( x =>  x . DelegateUserID  ==  competencymaindata . LearnerId ) . FirstOrDefault ( ) ; 
1734+                 if  ( checkSupervisorDelegate  ==  null )  return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  403  } ) ; 
1735+             } 
17331736            var  delegateUserId  =  competencymaindata . LearnerId ; 
17341737            var  competencycount  =  selfAssessmentService . GetCompetencyCountSelfAssessmentCertificate ( candidateAssessmentId ) ; 
17351738            var  accessors  =  selfAssessmentService . GetAccessor ( competencymaindata . SelfAssessmentID ,  competencymaindata . LearnerId ) ; 
@@ -1739,6 +1742,11 @@ public async Task<IActionResult> DownloadCertificate(int candidateAssessmentId)
17391742            var  competencyIds  =  recentResults . Select ( c =>  c . Id ) . ToArray ( ) ; 
17401743            var  competencyFlags  =  frameworkService . GetSelectedCompetencyFlagsByCompetecyIds ( competencyIds ) ; 
17411744            var  competencies  =  CompetencyFilterHelper . FilterCompetencies ( recentResults ,  competencyFlags ,  null ) ; 
1745+             var  supervisorSignOffs  =  selfAssessmentService . GetSupervisorSignOffsForCandidateAssessment ( competencymaindata . SelfAssessmentID ,  delegateUserId ) ; 
1746+             if  ( ! CertificateHelper . CanViewCertificate ( recentResults ,  supervisorSignOffs ) ) 
1747+             { 
1748+                 return  RedirectToAction ( "StatusCode" ,  "LearningSolutions" ,  new  {  code  =  401  } ) ; 
1749+             } 
17421750            foreach  ( var  competency  in  competencies ) 
17431751            { 
17441752                competency . QuestionLabel  =  assessment . QuestionLabel ; 
0 commit comments