@@ -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