Skip to content

Commit

Permalink
Fix adding a note returns inactive update requests
Browse files Browse the repository at this point in the history
  • Loading branch information
jadmsaadaot committed Feb 26, 2025
1 parent b621871 commit 3235766
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 78 deletions.
33 changes: 32 additions & 1 deletion submit-api/src/submit_api/resources/proponent/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@

from submit_api.auth import auth
from submit_api.resources.apihelper import Api as ApiHelper
from submit_api.schemas.package import PackageSchema, PostPackageRequestSchema, PostPackageState
from submit_api.schemas.package import PackageSchema, PostPackageRequestSchema, PostPackageState, \
CreateUpdateRequestNoteSchema
from submit_api.services.package import PackageService
from submit_api.utils.util import cors_preflight

Expand All @@ -35,6 +36,10 @@
API, PackageSchema(), "Submission Package"
)

create_update_request_note_model = ApiHelper.convert_ma_schema_to_restx_model(
API, CreateUpdateRequestNoteSchema(), "CreateUpdateRequestNote"
)


@cors_preflight("GET, OPTIONS, POST")
@API.route("/<int:package_id>", methods=["POST", "GET", "OPTIONS"])
Expand Down Expand Up @@ -98,3 +103,29 @@ def post(package_id):
request_body = PostPackageState().load(API.payload)
package = PackageService.update_package_state(package_id, request_body)
return PackageSchema().dump(package), HTTPStatus.OK


@cors_preflight("POST, OPTIONS")
@API.route(
"/<int:package_id>/update-requests/<int:update_request_id>/note",
methods=["POST", "OPTIONS"],
)
class PackageUpdateRequestNote(Resource):
"""Resource for managing a package's update request's note."""

@staticmethod
@ApiHelper.swagger_decorators(API, endpoint_description="Create an update request note for a package")
@API.expect(create_update_request_note_model)
@API.response(
code=HTTPStatus.CREATED, model=package_model, description="Create Update Request Note"
)
@API.response(HTTPStatus.BAD_REQUEST, "Bad Request")
@API.response(HTTPStatus.NOT_FOUND, "Not Found")
@auth.require
@cors.crossdomain(origin="*")
def post(package_id, update_request_id):
"""Create an update request note."""
create_update_request_data = CreateUpdateRequestNoteSchema().load(API.payload)
package_with_update_request_note = PackageService.create_update_request_note(
package_id, update_request_id, create_update_request_data)
return PackageSchema().dump(package_with_update_request_note), HTTPStatus.CREATED
32 changes: 1 addition & 31 deletions submit-api/src/submit_api/resources/staff/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from submit_api.auth import auth
from submit_api.resources.apihelper import Api as ApiHelper
from submit_api.schemas.package import CreateUpdateRequestSchema, PackageUpdateRequestSchema, StaffPackageSchema, \
CreateUpdateRequestNoteSchema, PackageVersionSchema
PackageVersionSchema
from submit_api.services.package import PackageService
from submit_api.utils.roles import EpicSubmitRole
from submit_api.utils.util import cors_preflight
Expand All @@ -38,10 +38,6 @@
API, CreateUpdateRequestSchema(), "CreateUpdateRequest"
)

create_update_request_note_model = ApiHelper.convert_ma_schema_to_restx_model(
API, CreateUpdateRequestNoteSchema(), "CreateUpdateRequestNote"
)

update_request_model = ApiHelper.convert_ma_schema_to_restx_model(
API, PackageUpdateRequestSchema(), "UpdateRequest"
)
Expand Down Expand Up @@ -129,29 +125,3 @@ def patch(package_id):
"""Accept an update request."""
accept_update_request = PackageService.accept_update_request(package_id)
return StaffPackageSchema().dump(accept_update_request), HTTPStatus.OK


@cors_preflight("POST, OPTIONS")
@API.route(
"/<int:package_id>/update-requests/<int:update_request_id>/note",
methods=["POST", "OPTIONS"],
)
class PackageUpdateRequestNote(Resource):
"""Resource for managing a package's update request's note."""

@staticmethod
@ApiHelper.swagger_decorators(API, endpoint_description="Create an update request note for a package")
@API.expect(create_update_request_note_model)
@API.response(
code=HTTPStatus.CREATED, model=package_model, description="Create Update Request Note"
)
@API.response(HTTPStatus.BAD_REQUEST, "Bad Request")
@API.response(HTTPStatus.NOT_FOUND, "Not Found")
@auth.require
@cors.crossdomain(origin="*")
def post(package_id, update_request_id):
"""Create an update request note."""
create_update_request_data = CreateUpdateRequestNoteSchema().load(API.payload)
package_with_update_request_note = PackageService.create_update_request_note(
package_id, update_request_id, create_update_request_data)
return StaffPackageSchema().dump(package_with_update_request_note), HTTPStatus.CREATED
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import { Box, Typography } from "@mui/material";
import { BCDesignTokens } from "epic.theme";
import dateUtils from "@/utils/dateUtils";
import { UPDATE_REQUEST_STATUS, UPDATE_REQUEST_TYPE, UpdateRequest } from "@/models/UpdateRequest";
import {
UPDATE_REQUEST_STATUS,
UPDATE_REQUEST_TYPE,
UpdateRequest,
} from "@/models/UpdateRequest";
import { useAcceptUpdateRequest } from "@/hooks/api/usePackages";
import { Case, Switch, When } from "react-if";
import { AddRequestNoteSection } from "./AddRequestNoteSection";
Expand Down Expand Up @@ -29,7 +33,7 @@ export default function RequestSection({
note,
type,
submission_item_types,
status
status,
} = updateRequest;
const createdDate = dateUtils.formatDate(created_date);

Expand Down Expand Up @@ -87,25 +91,31 @@ export default function RequestSection({
<Typography variant="body1" sx={{ mb: 1 }}>
{reason}
</Typography>
<PermissionsGate scopes={[EPIC_SUBMIT_ROLE.eao_create]}>
{status === UPDATE_REQUEST_STATUS.ACCEPTED.value ? (
<UpdateRequestStatusChip status={UPDATE_REQUEST_STATUS.ACCEPTED.value} />
) : (
<LoadingButton
variant="contained"
color="secondary"
disabled={status !== UPDATE_REQUEST_STATUS.PENDING_REVIEW.value}
onClick={() =>
acceptUpdateRequest({
packageId: updateRequest.submission_package_id,
})
}
loading={isUpdating}
>
Accept Update
</LoadingButton>
)}
</PermissionsGate>
<When
condition={updateRequest.type === UPDATE_REQUEST_TYPE.UPDATE.value}
>
<PermissionsGate scopes={[EPIC_SUBMIT_ROLE.eao_create]}>
{status === UPDATE_REQUEST_STATUS.ACCEPTED.value ? (
<UpdateRequestStatusChip
status={UPDATE_REQUEST_STATUS.ACCEPTED.value}
/>
) : (
<LoadingButton
variant="contained"
color="secondary"
disabled={status !== UPDATE_REQUEST_STATUS.PENDING_REVIEW.value}
onClick={() =>
acceptUpdateRequest({
packageId: updateRequest.submission_package_id,
})
}
loading={isUpdating}
>
Accept Update
</LoadingButton>
)}
</PermissionsGate>
</When>
</Box>

<When condition={Boolean(note)}>
Expand Down
52 changes: 28 additions & 24 deletions submit-web/src/components/Submission/UpdateRequestWidget/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,20 @@ export default function UpdateRequestWidget({

const updateRequests = useMemo(() => {
if (!submissionPackage?.update_requests) return [];
return submissionPackage.update_requests;

const updateRequests = submissionPackage.update_requests;
return updateRequests.sort((a, b) => {
return (
new Date(b.created_date).getTime() - new Date(a.created_date).getTime()
);
});
}, [submissionPackage?.update_requests]);

const activeRequests = useMemo(() => {
if (!updateRequests) return [];
return updateRequests.filter((request) => request.active);
}, [updateRequests]);

const { mutate: createUpdateRequest, isPending: isCreatingUpdateRequest } =
useCreatePackageUpdateRequest({
accountProjectId: submissionPackage.account_project_id,
Expand Down Expand Up @@ -80,11 +91,6 @@ export default function UpdateRequestWidget({
setIsCreateRequestOpen(false);
};

const activeRequests = useMemo(() => {
if (!updateRequests) return [];
return updateRequests.filter((request) => request.active);
}, [updateRequests]);

if (!updateRequests) return null;

return (
Expand Down Expand Up @@ -217,24 +223,22 @@ export default function UpdateRequestWidget({
/>
</Collapse>
</PermissionsGate>
<When condition={Boolean(updateRequests)}>
{updateRequests.length > 0 ? (
updateRequests.map((updateRequest, index) => (
<>
<RequestSection
key={updateRequest.id}
updateRequest={updateRequest}
submissionPackage={submissionPackage}
/>
{index !== updateRequests.length - 1 && <Divider />}
</>
))
) : (
<Typography variant="body1" sx={{ mb: 1 }}>
No requests have been made yet.
</Typography>
)}
</When>
{updateRequests.length > 0 ? (
updateRequests.map((updateRequest, index) => (
<>
<RequestSection
key={updateRequest.id}
updateRequest={updateRequest}
submissionPackage={submissionPackage}
/>
{index !== updateRequests.length - 1 && <Divider />}
</>
))
) : (
<Typography variant="body1" sx={{ mb: 1 }}>
No requests have been made yet.
</Typography>
)}
</AccordionDetails>
</Accordion>
);
Expand Down
2 changes: 1 addition & 1 deletion submit-web/src/hooks/api/usePackages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ const createPackageUpdateRequesNote = ({
data: Record<string, unknown>;
}) => {
return submitRequest<SubmissionPackage>({
url: `/staff/packages/${packageId}/update-requests/${updateRequestId}/note`,
url: `/packages/${packageId}/update-requests/${updateRequestId}/note`,
method: "post",
data,
});
Expand Down

0 comments on commit 3235766

Please sign in to comment.