From deaf7fe5be25d1d5c5c3b03d11dd76589a83e3a1 Mon Sep 17 00:00:00 2001 From: bing gao Date: Wed, 12 Jul 2023 22:32:58 -0700 Subject: [PATCH 1/3] only allow one idir user to review program area selected role --- .../public/PIAFormTabs/review/index.tsx | 35 ++++++++++++++++--- .../PIAFormTabs/review/viewMPOReview.tsx | 5 ++- .../PIAFormTabs/review/viewProgramArea.tsx | 5 ++- .../PIAFormTabs/review/viewReviewSection.tsx | 4 ++- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx index fdc6283aa..3eb558b0c 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -7,9 +7,8 @@ import { useContext, useEffect, useMemo, useState } from 'react'; import { IReview, IReviewSection } from './interfaces'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faTrash } from '@fortawesome/free-solid-svg-icons'; -import { HttpRequest } from '../../../../utils/http-request.util'; -import { API_ROUTES } from '../../../../constant/apiRoutes'; import { useParams } from 'react-router-dom'; +import { getGUID } from '../../../../utils/helper.util'; import { IPiaForm } from '../../../../types/interfaces/pia-form.interface'; import { IPiaFormContext, @@ -111,7 +110,20 @@ const PIAReview = ({ printPreview }: IReviewProps) => { true, ); }; + const allowUserReviewProgramArea = () => { + const userGuid = getGUID(); + const selectedRoles = reviewForm?.programArea?.selectedRoles; + for (const role of selectedRoles) { + if ( + reviewForm?.programArea?.reviews?.[role]?.reviewedByGuid === userGuid + ) { + return false; + } + } + + return true; + }; const disableConfirmButton = () => { if (pia.hasAddedPiToDataElements === false && reviewNote.trim() === '') return true; @@ -238,12 +250,18 @@ const PIAReview = ({ printPreview }: IReviewProps) => { className="d-flex align-items-center" key={index} > - {Object(pia?.review?.programArea)?.reviews?.[role] + {!allowUserReviewProgramArea() || + Object(pia?.review?.programArea)?.reviews?.[role] ?.isAcknowledged ? ( ) : ( {
{enableMPOReviewViewMode() ? ( - + ) : ( <>
@@ -423,6 +445,10 @@ const PIAReview = ({ printPreview }: IReviewProps) => { {pia?.review?.programArea?.selectedRoles.map((role: string) => ( <> { pia={pia} printPreview editReviewNote={setEditReviewNote} + isAcknowledged={pia?.review?.mpo?.isAcknowledged || false} /> )} diff --git a/src/frontend/src/components/public/PIAFormTabs/review/viewMPOReview.tsx b/src/frontend/src/components/public/PIAFormTabs/review/viewMPOReview.tsx index dd069b16e..97156d99a 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/viewMPOReview.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/viewMPOReview.tsx @@ -8,10 +8,11 @@ interface IMPOReviewProps { pia: IPiaForm; editReviewNote: Dispatch>; printPreview?: boolean; + isAcknowledged: boolean; } const ViewMPOReview = (props: IMPOReviewProps) => { - const { pia, printPreview, editReviewNote } = props; + const { pia, printPreview, editReviewNote, isAcknowledged } = props; return (
@@ -29,12 +30,14 @@ const ViewMPOReview = (props: IMPOReviewProps) => { reviewSection={pia.review?.mpo} editReviewNote={editReviewNote} printPreview + isAcknowledged={isAcknowledged} />
)}
) : ( >; printPreview?: boolean; role: string; + isAcknowledged: boolean; } const ViewProgramAreaReview = (props: IViewProgramAreaReviewProps) => { - const { pia, printPreview, stateChangeHandler, role } = props; + const { pia, printPreview, stateChangeHandler, role, isAcknowledged } = props; return (
@@ -38,6 +39,7 @@ const ViewProgramAreaReview = (props: IViewProgramAreaReviewProps) => { pia?.review?.programArea?.reviews?.[role as keyof IReview] } printPreview + isAcknowledged={isAcknowledged} />
)} @@ -51,6 +53,7 @@ const ViewProgramAreaReview = (props: IViewProgramAreaReviewProps) => { } stateChangeHandler={stateChangeHandler} role={role} + isAcknowledged={isAcknowledged} />
)} diff --git a/src/frontend/src/components/public/PIAFormTabs/review/viewReviewSection.tsx b/src/frontend/src/components/public/PIAFormTabs/review/viewReviewSection.tsx index 67b6595da..127369e50 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/viewReviewSection.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/viewReviewSection.tsx @@ -17,6 +17,7 @@ interface IReviewProps { stateChangeHandler?: (value: any, path: string, callApi?: boolean) => void; printPreview?: boolean; role?: string; + isAcknowledged: boolean; } const ViewReviewSection = (props: IReviewProps) => { @@ -27,6 +28,7 @@ const ViewReviewSection = (props: IReviewProps) => { editReviewNote, stateChangeHandler, role, + isAcknowledged, } = props; const reviewGuid = reviewSection?.reviewedByGuid; @@ -75,7 +77,7 @@ const ViewReviewSection = (props: IReviewProps) => {
Date: Thu, 13 Jul 2023 21:26:01 -0700 Subject: [PATCH 2/3] add a null check in allowUserReviewProgramArea and add comments --- .../src/components/public/PIAFormTabs/review/index.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx index 3eb558b0c..40c870ee1 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -113,7 +113,9 @@ const PIAReview = ({ printPreview }: IReviewProps) => { const allowUserReviewProgramArea = () => { const userGuid = getGUID(); const selectedRoles = reviewForm?.programArea?.selectedRoles; - + // if selectedRoles is null means none of selectedRole got reviewed so return true + // otherwise loop all the role in reviews part to see if the current user already did review + if (selectedRoles === null) return true; for (const role of selectedRoles) { if ( reviewForm?.programArea?.reviews?.[role]?.reviewedByGuid === userGuid From 9af6b38f8724dd3d1177e5dfe1f99b6d3eafa941 Mon Sep 17 00:00:00 2001 From: bing gao Date: Tue, 18 Jul 2023 16:27:41 -0700 Subject: [PATCH 3/3] fix lint and docker build fail --- .../src/components/public/PIAFormTabs/review/index.tsx | 4 +--- 1 file changed, 1 insertion(+), 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 e2cd40eb0..1544699fe 100644 --- a/src/frontend/src/components/public/PIAFormTabs/review/index.tsx +++ b/src/frontend/src/components/public/PIAFormTabs/review/index.tsx @@ -158,7 +158,6 @@ const PIAReview = ({ printPreview }: IReviewProps) => { reviewForm.programArea?.selectedRoles, ]); - const disableConfirmButton = () => { if (pia.hasAddedPiToDataElements === false && reviewNote.trim() === '') return true; @@ -291,8 +290,7 @@ const PIAReview = ({ printPreview }: IReviewProps) => { className="d-flex align-items-center" key={index} > - {!allowUserReviewProgramArea() || - Object(pia?.review?.programArea)?.reviews?.[role] + {Object(pia?.review?.programArea)?.reviews?.[role] ?.isAcknowledged ? (