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 && ( + + )} ); },