Skip to content

Commit

Permalink
Merge pull request #280 from jadmsaadaot/SUBMIT-task#343
Browse files Browse the repository at this point in the history
Fix condition number display and date display
  • Loading branch information
jadmsaadaot authored Feb 4, 2025
2 parents b333118 + 22dfff1 commit f1b9595
Show file tree
Hide file tree
Showing 10 changed files with 76 additions and 44 deletions.
3 changes: 2 additions & 1 deletion submit-api/src/submit_api/models/package_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ class PackageMetadataFields(enum.Enum):

CONSULTATION_CHECK_COMPLETED_ON = 'cc_completed_on'
CONSULTATION_CHECK_START_DATE = 'cc_start_date'
CONDITION = 'condition'
CONDITION = 'main_condition'
SUPPORTING_CONDITIONS = 'supporting_conditions'
REVIEW_COMPLETED_ON = 'review_completed_on'
REVIEW_START_DATE = 'review_start_date'

Expand Down
2 changes: 2 additions & 0 deletions submit-api/src/submit_api/services/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ def create_new_package_from_original(cls, current_package_id, session):
new_metadata = {
PackageMetadataFields.CONDITION.value: current_package.meta.json.get(
PackageMetadataFields.CONDITION.value, None),
PackageMetadataFields.SUPPORTING_CONDITIONS.value: current_package.meta.json.get(
PackageMetadataFields.SUPPORTING_CONDITIONS.value, None),
}
cls._create_package_metadata(
session, new_package.id, new_metadata)
Expand Down
1 change: 1 addition & 0 deletions submit-api/src/submit_api/services/submission_review.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ def _update_package_metadata_mp_rejection(cls, item, session):

session.add(item)
session.add(package_metadata)
session.flush()
current_app.logger.info(f"Package metadata updated for package {item.package_id}.")

@classmethod
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export default function ProponentTableRow({ subPackage }: ProjectRowProps) {
</Link>
</StyledProjectTableCell>
<StyledProjectTableCell align="left">
{dateUtils.formatDate(String(subPackage.submitted_on))}
{dateUtils.formatDate(subPackage.submitted_on)}
</StyledProjectTableCell>
<StyledProjectTableCell align="left">
{subPackage.submitted_by ?? ""}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export default function StaffTableRow({ submissionPackage }: ProjectRowProps) {
color: BCDesignTokens.typographyFontSizeBody,
}}
>
{dateutils.formatDate(String(submitted_on))}
{dateutils.formatDate(submitted_on)}
</StyledProjectTableCell>
<StyledProjectTableCell
align="right"
Expand Down
69 changes: 45 additions & 24 deletions submit-web/src/components/Submission/InfoBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { ReactNode } from "@tanstack/react-router";
import { BCDesignTokens } from "epic.theme";
import { Case, Switch } from "react-if";
import VersionGroup from "./VersionGroup";
import { get, isArray } from "lodash";
import { useMemo } from "react";

type InfoBoxItemProps = {
label?: string;
Expand Down Expand Up @@ -44,13 +46,23 @@ export const InfoBox = ({ submissionPackage }: InfoBoxProps) => {
};

const ProponentInfoBox = ({ submissionPackage }: InfoBoxProps) => {
const {
submitted_on,
date_review_completed,
supporting_condition,
submitted_by,
condition,
} = submissionPackage.meta || {};
const { submitted_on, date_review_completed, submitted_by } =
submissionPackage.meta || {};

const condition = useMemo(() => {
return get(submissionPackage, "meta.main_condition.condition_number", "");
}, [submissionPackage]);

const supportingConditions = useMemo(() => {
const conditions = get(submissionPackage, "meta.supporting_conditions");
if (!conditions || !isArray(conditions)) return "";

return conditions
.map((condition) => condition.condition_number)
.filter(Boolean)
.join(", ");
}, [submissionPackage]);

return (
<Grid
container
Expand Down Expand Up @@ -94,7 +106,7 @@ const ProponentInfoBox = ({ submissionPackage }: InfoBoxProps) => {
<Grid item xs={12} lg={4} container>
<InfoBoxItem
label={"Supporting Conditions"}
value={supporting_condition}
value={supportingConditions}
/>
</Grid>
<Grid item xs={12} lg={4} container>
Expand All @@ -107,13 +119,30 @@ const ProponentInfoBox = ({ submissionPackage }: InfoBoxProps) => {
const StaffInfoBox = ({ submissionPackage }: InfoBoxProps) => {
const {
review_start_date,
supporting_condition,
review_completed_on,
cc_start_date,
cc_completed_on,
} = submissionPackage.meta || {};
const { submitted_on, submitted_by, version } = submissionPackage;

const condition = useMemo(() => {
if (!submissionPackage.meta) return "";
const condition = get(submissionPackage, "meta.main_condition");

return get(condition, "condition_number", "");
}, [submissionPackage]);

const supportingConditions = useMemo(() => {
if (!submissionPackage.meta) return "";
const conditions = get(submissionPackage, "meta.supporting_conditions");
if (!conditions || !isArray(conditions)) return "";

return conditions
.map((condition) => condition.condition_number)
.filter(Boolean)
.join(", ");
}, [submissionPackage]);

return (
<Grid
container
Expand All @@ -139,18 +168,16 @@ const StaffInfoBox = ({ submissionPackage }: InfoBoxProps) => {
<Grid item xs={12} lg={4} container>
<InfoBoxItem
label={"Submitted on"}
value={dateUtils.formatDate(String(submitted_on))}
value={dateUtils.formatDate(submitted_on)}
/>
</Grid>
<Grid item xs={12} lg={4} container>
<InfoBoxItem label={"Condition"} />
<InfoBoxItem label={"Condition"} value={condition} />
</Grid>
<Grid item xs={12} lg={4} container>
<InfoBoxItem
label={"CC Start Date"}
value={
dateUtils.formatDate(cc_start_date)
}
value={dateUtils.formatDate(cc_start_date)}
/>
</Grid>
<Grid item xs={12} lg={4} container>
Expand All @@ -159,25 +186,21 @@ const StaffInfoBox = ({ submissionPackage }: InfoBoxProps) => {
<Grid item xs={12} lg={4} container>
<InfoBoxItem
label={"Supporting Conditions"}
value={supporting_condition}
value={supportingConditions}
/>
</Grid>
<Grid item xs={12} lg={4} container>
<InfoBoxItem
label={"CC Completed"}
value={
dateUtils.formatDate(cc_completed_on)
}
value={dateUtils.formatDate(cc_completed_on)}
/>
</Grid>
<Grid item xs={12} lg={4} container></Grid>
<Grid item xs={12} lg={4} container></Grid>
<Grid item xs={12} lg={4} container>
<InfoBoxItem
label={"Review Start Date"}
value={
dateUtils.formatDate(review_start_date)
}
value={dateUtils.formatDate(review_start_date)}
/>
</Grid>
<Grid item xs={12} lg={4} container></Grid>
Expand All @@ -191,9 +214,7 @@ const StaffInfoBox = ({ submissionPackage }: InfoBoxProps) => {
>
<InfoBoxItem
label={"Review Completed"}
value={
dateUtils.formatDate(review_completed_on)
}
value={dateUtils.formatDate(review_completed_on)}
/>
</Grid>
</Grid>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import dateUtils from "@/utils/dateUtils";
import { UPDATE_REQUEST_TYPE, UpdateRequest } from "@/models/UpdateRequest";
import { Case, Switch, Unless, When } from "react-if";
import { AddRequestNoteSection } from "./AddRequestNoteSection";
import { SubmissionPackage } from "@/models/Package";
import { SUBMISSION_ITEM_STATUS } from "@/models/Submission";
import { PACKAGE_STATUS, SubmissionPackage } from "@/models/Package";
import { checkIfEAO } from "@/components/Shared/PermissionGate/utils";
import { useAccount } from "@/store/accountStore";

Expand All @@ -20,20 +19,18 @@ export default function RequestSection({
}: UpdateRequestProps) {
const { reason, created_date, created_by, note, type, submission_item_ids } =
updateRequest;
const createdDate = dateUtils.formatDate(created_date)
const createdDate = dateUtils.formatDate(created_date);

const { roles } = useAccount();
const isEAO = checkIfEAO(roles || []);

const submissionItems = submissionPackage.items.filter((item) =>
submission_item_ids.includes(item.id)
submission_item_ids.includes(item.id),
);

const showNoteSection =
(isEAO &&
submissionPackage.status.includes(
SUBMISSION_ITEM_STATUS.SUBMITTED.value
)) ||
submissionPackage.status.includes(PACKAGE_STATUS.SUBMITTED.value)) ||
(!isEAO && Boolean(note));

return (
Expand Down
10 changes: 9 additions & 1 deletion submit-web/src/components/Submission/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SubmissionPackage } from "@/models/Package";
import { SubmissionPackage, SubmissionPackageMeta } from "@/models/Package";
import {
SUBMISSION_ITEM_STATUS,
SubmissionItemStatus,
Expand All @@ -24,3 +24,11 @@ export const isSubmissionItemReadyToSubmit = ({
submissionItem.status === SUBMISSION_ITEM_STATUS.COMPLETED.value;
return isSubmissionItemCompleted;
};

export const getConditionFromPackageMeta = (
submissionPackageMeta: SubmissionPackageMeta,
) => {
const condition = submissionPackageMeta?.main_condition;

return condition;
};
2 changes: 1 addition & 1 deletion submit-web/src/models/Package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export const PACKAGE_STATUS: Record<
},
};

export type SubmissionPackageMeta = Record<string, number | string>;
export type SubmissionPackageMeta = Record<string, any>; // eslint-disable-line @typescript-eslint/no-explicit-any

export type PackageVersion = {
id: number;
Expand Down
18 changes: 10 additions & 8 deletions submit-web/src/utils/dateUtils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import dayjs, { Dayjs } from "dayjs";
import utc from "dayjs/plugin/utc";


type UnitOfTime = "second" | "minute" | "hour" | "day" | "month" | "year";

export const DATE_FORMAT = "YYYY-MM-DD";
Expand All @@ -13,12 +12,15 @@ dayjs.extend(utc);
* @param format Valid date format
* @returns Formatted date string
*/
const formatDate = (date: string | number, format?: string) => {
if (!date) return ""; // Handle null or undefined values

// server date is in UTC, convert to local timezone
return dayjs.utc(String(date)).local().format(format || DATE_FORMAT);
};
const formatDate = (date?: string | number, format?: string) => {
if (!date) return ""; // Handle null or undefined values

// server date is in UTC, convert to local timezone
return dayjs
.utc(String(date))
.local()
.format(format ?? DATE_FORMAT);
};

const diff = (fromDate: string, toDate: string, unitOfTime: UnitOfTime) => {
return dayjs(fromDate).diff(dayjs(toDate), unitOfTime);
Expand All @@ -37,4 +39,4 @@ export default {
diff,
add,
dateToISO,
};
};

0 comments on commit f1b9595

Please sign in to comment.