Skip to content

Commit

Permalink
Merge branch 'main' into NDT-472-Freeze-Dashboard-Column-names-to-top…
Browse files Browse the repository at this point in the history
…-of-page
  • Loading branch information
RRanath authored Sep 3, 2024
2 parents c029f54 + f546533 commit f4658d0
Show file tree
Hide file tree
Showing 14 changed files with 220 additions and 96 deletions.
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
# [1.189.0](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.188.0...v1.189.0) (2024-08-30)

### Features

- change to announced by bc/ised in gcpe report ([cbb5871](https://github.com/bcgov/CONN-CCBC-portal/commit/cbb58714e29ab57a08ac4ceeac4d016a03155294))

# [1.188.0](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.187.0...v1.188.0) (2024-08-30)

### Features

- colour is now a background colour ([46584e5](https://github.com/bcgov/CONN-CCBC-portal/commit/46584e5e4d9beacbbf21bf9313cb6bd88092b526))

# [1.187.0](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.186.4...v1.187.0) (2024-08-29)

### Features

- add toast for second review emails ([88b51d4](https://github.com/bcgov/CONN-CCBC-portal/commit/88b51d486927507285ac311a3e4755a77fd10b59))

## [1.186.4](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.186.3...v1.186.4) (2024-08-29)

## [1.186.3](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.186.2...v1.186.3) (2024-08-28)

### Bug Fixes
Expand Down
2 changes: 1 addition & 1 deletion app/backend/lib/reporting/header.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const HEADER_ROW: Row = [
wrap: true,
},
{
value: 'Announced by Province',
value: 'Announced by BC/ISED',
fontWeight: 'bold',
type: String,
height: 95,
Expand Down
2 changes: 1 addition & 1 deletion app/backend/lib/reporting/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ export const compareAndMarkArrays = (array1: any, array2: any) => {
if (item?.value !== item2?.value) {
return {
...item,
color: '#2FA7DD',
backgroundColor: '#2FA7DD',
};
}

Expand Down
84 changes: 59 additions & 25 deletions app/components/Analyst/Assessments/AssessmentsForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { useCreateAssessmentMutation } from 'schema/mutations/assessment/createA
import assessmentsUiSchema from 'formSchema/uiSchema/analyst/assessmentsUiSchema';
import { RJSFSchema } from '@rjsf/utils';
import * as Sentry from '@sentry/nextjs';
import { useToast } from 'components/AppProvider';

interface Props {
addedContext?: any;
Expand All @@ -34,6 +35,12 @@ const StyledFormBase = styled(FormBase)`
}
`;

const StyledNotifyButton = styled(Button)`
svg {
height: 18px;
}
`;

const AssessmentsForm: React.FC<Props> = ({
addedContext,
formData,
Expand All @@ -52,9 +59,14 @@ const AssessmentsForm: React.FC<Props> = ({
query.applicationByRowId
);

const { showToast, hideToast } = useToast();

const [createAssessment, isCreating] = useCreateAssessmentMutation();
const [newFormData, setNewFormData] = useState(formData);
const [isFormSaved, setIsFormSaved] = useState(true);
const [emailStatus, setEmailStatus] = useState<
'idle' | 'inProgress' | 'sent'
>('idle');

const handleSubmit = async (e: IChangeEvent<any>) => {
if (!isFormSaved) {
Expand All @@ -69,31 +81,6 @@ const AssessmentsForm: React.FC<Props> = ({
},
onCompleted: () => {
setIsFormSaved(true);
if (
e.formData?.nextStep === 'Needs 2nd review' &&
e.formData?.nextStep !== formData?.nextStep
) {
fetch('/api/email/notifySecondReviewRequest', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
applicationId: queryFragment.rowId,
host: window.location.origin,
ccbcNumber: addedContext?.ccbcNumber,
assessmentType: slug,
}),
}).then((response) => {
if (!response.ok) {
Sentry.captureException({
name: 'Email sending failed',
message: response,
});
}
return response.json();
});
}
},
optimisticResponse: {
jsonData: e.formData,
Expand All @@ -110,6 +97,42 @@ const AssessmentsForm: React.FC<Props> = ({
}
};

const notifyByEmail = async () => {
hideToast();
if (newFormData?.nextStep === 'Needs 2nd review') {
setEmailStatus('inProgress');
fetch('/api/email/notifySecondReviewRequest', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
applicationId: queryFragment.rowId,
host: window.location.origin,
ccbcNumber: addedContext?.ccbcNumber,
assessmentType: slug,
}),
}).then((response) => {
if (!response.ok) {
showToast(
'Email notification did not work, please try again',
'error',
5000
);
Sentry.captureException({
name: 'Email sending failed',
message: response,
});
setEmailStatus('idle');
} else {
showToast('Email notification sent successfully', 'success', 5000);
setEmailStatus('sent');
}
return response.json();
});
}
};

return (
<StyledFormBase
schema={schema}
Expand All @@ -130,6 +153,17 @@ const AssessmentsForm: React.FC<Props> = ({
<Button variant="primary" disabled={isCreating}>
{!isFormSaved ? 'Save' : 'Saved'}
</Button>
&nbsp;
<StyledNotifyButton
variant="primary"
disabled={
newFormData?.nextStep !== 'Needs 2nd review' || emailStatus !== 'idle'
}
title="Email notification of 2nd review needed will be sent to Mike and Karina"
onClick={notifyByEmail}
>
{emailStatus === 'inProgress' && <LoadingSpinner />} Notify by email
</StyledNotifyButton>
{isCreating && <LoadingSpinner />}
</StyledFormBase>
);
Expand Down
4 changes: 3 additions & 1 deletion app/components/Review/fields/ReviewFieldTemplate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ const ReviewFieldTemplate: React.FC<FieldTemplateProps> = ({
)}
</StyledColError>
) : (
<StyledColRight id={`${id}-value`}>{children}</StyledColRight>
<StyledColRight data-testid={`${id}-value`}>
{children}
</StyledColRight>
)}
</tr>
{after}
Expand Down
19 changes: 12 additions & 7 deletions app/formSchema/analyst/summary/counts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,33 @@ const counts: RJSFSchema = {
type: 'object',
required: [
'communities',
'benefitingCommunities',
'indigenousCommunities',
'nonIndigenousCommunities',
'benefitingCommunities',
'benefitingIndigenousCommunities',
'totalHouseholdsImpacted',
'numberOfIndigenousHouseholds',
],
properties: {
communities: {
type: 'number',
title: 'Communities',
title: 'Total number of communities benefitting',
},
benefitingCommunities: {
indigenousCommunities: {
type: 'number',
title: 'Benefiting Communities',
title: 'Number of Indigenous Communities benefitting',
},
indigenousCommunities: {
nonIndigenousCommunities: {
type: 'number',
title: 'Indigenous Communities',
title: 'Number of Non-Indigenous Communities benefitting',
},
benefitingIndigenousCommunities: {
type: 'number',
title: 'Benefiting Indigenous Communities',
title: 'List of Indigenous communities benefitting',
},
benefitingCommunities: {
type: 'number',
title: 'List of Non-Indigenous communities benefitting',
},
totalHouseholdsImpacted: {
type: 'number',
Expand Down
18 changes: 11 additions & 7 deletions app/formSchema/uiSchema/summary/countsUiSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,23 @@ const countsUiSchema = {
'ui:title': 'Counts',
communities: {
'ui:widget': 'NumberWidget',
'ui:label': 'Communities',
},
benefitingCommunities: {
'ui:widget': 'LinkArrayWidget',
'ui:label': 'Benefiting Communities',
'ui:label': 'Total number of communities benefitting',
},
indigenousCommunities: {
'ui:widget': 'NumberWidget',
'ui:label': 'Indigenous Communities',
'ui:label': 'Number of Indigenous Communities benefitting',
},
nonIndigenousCommunities: {
'ui:widget': 'NumberWidget',
'ui:label': 'Number of Non-Indigenous Communities benefitting',
},
benefitingIndigenousCommunities: {
'ui:widget': 'LinkArrayWidget',
'ui:label': 'Benefiting Indigenous Communities',
'ui:label': 'List of Indigenous communities benefitting',
},
benefitingCommunities: {
'ui:widget': 'LinkArrayWidget',
'ui:label': 'List of Non-Indigenous communities benefitting',
},
totalHouseholdsImpacted: {
'ui:widget': 'NumberWidget',
Expand Down
57 changes: 14 additions & 43 deletions app/lib/helpers/ccbcSummaryGenerateFormData.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -128,57 +128,26 @@ const getCommunities = (communities) => {
};
};

const getSowErrors = (sowData, communitiesData) => {
// error on benefiting communities
const errors = {
counts: {
benefitingCommunities: {},
benefitingIndigenousCommunities: {},
},
};
const communitiesNumber =
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData?.communitiesNumber;
const indigenousCommunitiesNumber =
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData
?.indigenousCommunitiesNumber;
if (communitiesNumber !== communitiesData?.totalBenefitingCommunities) {
errors.counts.benefitingCommunities = {
__errors: [
`Communities count mismatch ${communitiesNumber} and ${communitiesData.totalBenefitingCommunities}`,
],
errorColor: '#f8e78f',
};
// error on benefiting indigenous communities
}
if (
indigenousCommunitiesNumber !==
communitiesData?.totalBenefitingIndigenousCommunities
) {
errors.counts.benefitingIndigenousCommunities = {
__errors: [
`Indigenous communities count mismatch ${indigenousCommunitiesNumber} and ${communitiesData.totalBenefitingIndigenousCommunities}`,
],
errorColor: '#f8e78f',
};
}
return errors;
};

const getSowData = (sowData, baseSowData) => {
const communitiesData = getCommunities(
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData?.geoNames
);
const errors = getSowErrors(sowData, communitiesData);
const errors = {}; // errors may get added later
const communities =
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData?.communitiesNumber;
const indigenousCommunities =
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData
?.indigenousCommunitiesNumber;
return {
formData: {
counts: {
communities:
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData
?.communitiesNumber,
communities,
benefitingCommunities: communitiesData?.benefitingCommunities,
indigenousCommunities:
sowData?.nodes[0]?.sowTab8SBySowId?.nodes[0]?.jsonData
?.indigenousCommunitiesNumber,
indigenousCommunities,
nonIndigenousCommunities:
communities && indigenousCommunities
? communities - indigenousCommunities
: communities,
benefitingIndigenousCommunities:
communitiesData?.benefitingIndigenousCommunities,
totalHouseholdsImpacted:
Expand Down Expand Up @@ -222,6 +191,7 @@ const getSowData = (sowData, baseSowData) => {
communities: 'SOW',
benefitingCommunities: 'SOW',
indigenousCommunities: 'SOW',
nonIndigenousCommunities: 'SOW',
benefitingIndigenousCommunities: 'SOW',
totalHouseholdsImpacted: 'SOW',
numberOfIndigenousHouseholds: 'SOW',
Expand Down Expand Up @@ -272,6 +242,7 @@ const getFormDataFromApplication = (applicationData, allIntakes) => {
communities: null,
benefitingCommunities: null,
indigenousCommunities: null,
nonIndigenousCommunities: null,
benefitingIndigenousCommunities: null,
totalHouseholdsImpacted:
applicationData?.formData?.jsonData?.benefits?.numberOfHouseholds,
Expand Down
2 changes: 1 addition & 1 deletion app/tests/backend/lib/reporting/testData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export const regenerateGcpeReportQueryResult = {
},
{
wrap: true,
value: 'Announced by Province',
value: 'Announced by BC/ISED',
height: 95,
fontWeight: 'bold',
},
Expand Down
Loading

0 comments on commit f4658d0

Please sign in to comment.