From 44a816a15ed541f8537dc697449c1acdd0af8d38 Mon Sep 17 00:00:00 2001 From: bing gao Date: Thu, 13 Jul 2023 18:01:54 -0700 Subject: [PATCH 1/5] initial work save --- .../public/PIAFormTabs/review/index.tsx | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx index fdc6283aa..80a9616a4 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -20,6 +20,7 @@ import ViewMPOReview from './viewMPOReview'; import PendingReview from './pendingReview'; import ViewProgramAreaReview from './viewProgramArea'; import EditProgramAreaReview from './editProgramArea'; +import { YesNoInput } from '../../../../types/enums/yes-no.enum'; export interface IReviewProps { printPreview?: boolean; @@ -72,6 +73,40 @@ const PIAReview = ({ printPreview }: IReviewProps) => { setReviewForm(pia.review); }, [pia.review]); + /** + * Update reviewForm.programArea when + * Part 4 Assessment(storing personal information tab) (PIDSOC), If Assessment of Disclosures Outside of Canada is filled out in PIA, + * ADM(Assistant Deputy Minister) is a preselected role + * and can not be deleted + * personalInformation.storedOutsideCanada is yes + * sensitivePersonalInformation.doesInvolve is yes + * sensitivePersonalInformation.disclosedOutsideCanada is no + */ + useEffect(() => { + // if the condition does satisfy the rule, add the adm to programArea + // otherwise do nothing + if ( + pia?.storingPersonalInformation?.personalInformation + ?.storedOutsideCanada === YesNoInput.YES && + pia?.storingPersonalInformation?.sensitivePersonalInformation + .doesInvolve === YesNoInput.YES && + pia?.storingPersonalInformation?.sensitivePersonalInformation + .disclosedOutsideCanada === YesNoInput.NO + ) { + reviewForm.programArea?.selectedRoles.push(ApprovalRoles.ADM); + stateChangeHandler( + reviewForm.programArea?.selectedRoles, + 'programArea.selectedRoles', + ); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ + pia?.storingPersonalInformation?.personalInformation?.storedOutsideCanada, + pia?.storingPersonalInformation?.sensitivePersonalInformation + .disclosedOutsideCanada, + pia?.storingPersonalInformation?.sensitivePersonalInformation.doesInvolve, + ]); + const [rolesSelect, setRolesSelect] = useState(''); const [rolesInput, setRolesInput] = useState(''); const [reviewNote, setReviewNote] = useState( From df1af75007f33be2c88f0b8b750cccc5e28b21c8 Mon Sep 17 00:00:00 2001 From: bing gao Date: Fri, 14 Jul 2023 16:57:31 -0700 Subject: [PATCH 2/5] [UTOPIA-1291] add check and add ADM role to pre-select role --- .../public/PIAFormTabs/review/index.tsx | 77 ++++++++++++------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx index 80a9616a4..5e9d9c9a5 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -49,6 +49,14 @@ const PIAReview = ({ printPreview }: IReviewProps) => { const [reviewForm, setReviewForm] = useState( pia.review || initialFormState, ); + // For requirement + // if PIA Part 4 Assessment(storing personal information tab) (PIDSOC), + // If Assessment of Disclosures Outside of Canada is filled out in PIA, + // ADM(Assistant Deputy Minister) is a preselected role and can not be delete + // we need to distinguish user select ADM role vs system pre-select ADM + + const [mandatoryADM, setMandatoryADM] = useState(false); + const [editReviewNote, setEditReviewNote] = useState(false); const stateChangeHandler = (value: any, path: string, callApi?: boolean) => { setNestedReactState(setReviewForm, path, value); @@ -93,18 +101,25 @@ const PIAReview = ({ printPreview }: IReviewProps) => { pia?.storingPersonalInformation?.sensitivePersonalInformation .disclosedOutsideCanada === YesNoInput.NO ) { - reviewForm.programArea?.selectedRoles.push(ApprovalRoles.ADM); - stateChangeHandler( - reviewForm.programArea?.selectedRoles, - 'programArea.selectedRoles', - ); + setMandatoryADM(true); + if ( + !pia?.review?.programArea.selectedRoles.includes(ApprovalRoles.ADM) && + !reviewForm.programArea?.selectedRoles.includes(ApprovalRoles.ADM) + ) { + reviewForm.programArea?.selectedRoles.push(ApprovalRoles.ADM); + stateChangeHandler( + reviewForm.programArea?.selectedRoles, + 'programArea.selectedRoles', + ); + } } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [ + pia?.review?.programArea.selectedRoles, pia?.storingPersonalInformation?.personalInformation?.storedOutsideCanada, pia?.storingPersonalInformation?.sensitivePersonalInformation .disclosedOutsideCanada, pia?.storingPersonalInformation?.sensitivePersonalInformation.doesInvolve, + reviewForm.programArea?.selectedRoles, ]); const [rolesSelect, setRolesSelect] = useState(''); @@ -294,28 +309,34 @@ const PIAReview = ({ printPreview }: IReviewProps) => { className="d-flex gap-1 justify-content-start align-items-center" >

{role}

- {!reviewForm.programArea?.reviews?.[role] && ( - - )} + {mandatoryADM ? ( +

+ (required for this PIA) +

+ ) : null} + {!reviewForm.programArea?.reviews?.[role] && + !mandatoryADM && ( + + )} ); }, From a682b7a13770c647087011a32742faab5e7c259a Mon Sep 17 00:00:00 2001 From: bing gao Date: Mon, 17 Jul 2023 18:16:02 -0700 Subject: [PATCH 3/5] remove unnecessary check --- .../src/components/public/PIAFormTabs/review/index.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx index e89163771..1ebb660f8 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -99,10 +99,7 @@ const PIAReview = ({ printPreview }: IReviewProps) => { .disclosedOutsideCanada === YesNoInput.NO ) { setMandatoryADM(true); - if ( - !pia?.review?.programArea.selectedRoles.includes(ApprovalRoles.ADM) && - !reviewForm.programArea?.selectedRoles.includes(ApprovalRoles.ADM) - ) { + if (!pia?.review?.programArea.selectedRoles.includes(ApprovalRoles.ADM)) { reviewForm.programArea?.selectedRoles.push(ApprovalRoles.ADM); stateChangeHandler( reviewForm.programArea?.selectedRoles, From ae712baab078170d6935fcea1d119a42809d62d0 Mon Sep 17 00:00:00 2001 From: bing gao Date: Tue, 18 Jul 2023 14:07:10 -0700 Subject: [PATCH 4/5] only make pre-select adm unable to delete from program Area --- .../src/components/public/PIAFormTabs/review/index.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx index 1ebb660f8..d830558bf 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -99,7 +99,10 @@ const PIAReview = ({ printPreview }: IReviewProps) => { .disclosedOutsideCanada === YesNoInput.NO ) { setMandatoryADM(true); - if (!pia?.review?.programArea.selectedRoles.includes(ApprovalRoles.ADM)) { + if ( + !pia?.review?.programArea.selectedRoles.includes(ApprovalRoles.ADM) && + !reviewForm.programArea?.selectedRoles.includes(ApprovalRoles.ADM) + ) { reviewForm.programArea?.selectedRoles.push(ApprovalRoles.ADM); stateChangeHandler( reviewForm.programArea?.selectedRoles, @@ -309,13 +312,13 @@ const PIAReview = ({ printPreview }: IReviewProps) => { className="d-flex gap-1 justify-content-start align-items-center" >

{role}

- {mandatoryADM ? ( + {mandatoryADM && role === ApprovalRoles.ADM ? (

(required for this PIA)

) : null} {!reviewForm.programArea?.reviews?.[role] && - !mandatoryADM && ( + !(mandatoryADM && role === ApprovalRoles.ADM) && (