Skip to content

Commit

Permalink
ORV2-3073 Allow CA to view in cart applications created by staff (#1737)
Browse files Browse the repository at this point in the history
Co-authored-by: praju-aot <praveen.raju@aot-technologies.com>
krishnan-aot and praju-aot authored Jan 10, 2025
1 parent a30f61c commit 191dd65
Showing 5 changed files with 58 additions and 63 deletions.
Original file line number Diff line number Diff line change
@@ -135,7 +135,7 @@ export const ShoppingCart = ({
/>
)) : (
<div className="shopping-cart__empty">
Nothing found.
Cart is empty.
</div>
)}
</div>
Original file line number Diff line number Diff line change
@@ -2,9 +2,15 @@ import { Checkbox } from "@mui/material";

import "./ShoppingCartItem.scss";
import { SelectableCartItem } from "../../../types/CartItem";
import { DATE_FORMATS, toLocal } from "../../../../../common/helpers/formatDate";
import {
DATE_FORMATS,
toLocal,
} from "../../../../../common/helpers/formatDate";
import { CustomActionLink } from "../../../../../common/components/links/CustomActionLink";
import { feeSummaryDisplayText } from "../../../helpers/feeSummary";
import { PERMIT_APPLICATION_ORIGINS } from "../../../types/PermitApplicationOrigin";
import { useContext } from "react";
import OnRouteBCContext from "../../../../../common/authentication/OnRouteBCContext";

export const ShoppingCartItem = ({
cartItemData,
@@ -31,6 +37,9 @@ export const ShoppingCartItem = ({
}
};

const { userDetails } = useContext(OnRouteBCContext);
const isBCeIDUser = Boolean(userDetails?.userRole);

return (
<div className="shopping-cart-item">
<Checkbox
@@ -43,112 +52,99 @@ export const ShoppingCartItem = ({

<div className="shopping-cart-item__info-section">
<div className="shopping-cart-item__header">
<span
className="shopping-cart-item__label shopping-cart-item__label--application-number"
>
<span className="shopping-cart-item__label shopping-cart-item__label--application-number">
Application #:
</span>

<CustomActionLink
className="shopping-cart-item__info shopping-cart-item__info--application-number"
onClick={() => onEditCartItem(cartItemData.applicationId)}
>
{cartItemData.applicationNumber}
</CustomActionLink>
{cartItemData.permitApplicationOrigin ===
PERMIT_APPLICATION_ORIGINS.PPC && isBCeIDUser ? (
cartItemData.applicationNumber
) : (
<CustomActionLink
className="shopping-cart-item__info shopping-cart-item__info--application-number"
onClick={() => onEditCartItem(cartItemData.applicationId)}
>
{cartItemData.applicationNumber}
</CustomActionLink>
)}
</div>

<div className="shopping-cart-item__details-container">
<div className="shopping-cart-item__details-group">
<div className="shopping-cart-item__detail">
<span
className="shopping-cart-item__label shopping-cart-item__label--permit-type"
>
<span className="shopping-cart-item__label shopping-cart-item__label--permit-type">
Permit Type:
</span>

<span
className="shopping-cart-item__info shopping-cart-item__info--permit-type"
>
<span className="shopping-cart-item__info shopping-cart-item__info--permit-type">
{cartItemData.permitType}
</span>
</div>

<div className="shopping-cart-item__detail">
<span
className="shopping-cart-item__label shopping-cart-item__label--start-date"
>
<span className="shopping-cart-item__label shopping-cart-item__label--start-date">
Permit Start Date:
</span>

<span
className="shopping-cart-item__info shopping-cart-item__info--start-date"
>
{toLocal(cartItemData.startDate, DATE_FORMATS.DATEONLY_ABBR_MONTH, true)}
<span className="shopping-cart-item__info shopping-cart-item__info--start-date">
{toLocal(
cartItemData.startDate,
DATE_FORMATS.DATEONLY_ABBR_MONTH,
true,
)}
</span>
</div>
</div>

<div className="shopping-cart-item__details-group">
<div className="shopping-cart-item__detail">
<span
className="shopping-cart-item__label shopping-cart-item__label--plate"
>
<span className="shopping-cart-item__label shopping-cart-item__label--plate">
Plate:
</span>

<span
className="shopping-cart-item__info shopping-cart-item__info--plate"
>
<span className="shopping-cart-item__info shopping-cart-item__info--plate">
{cartItemData.plate}
</span>
</div>

<div className="shopping-cart-item__detail">
<span
className="shopping-cart-item__label shopping-cart-item__label--end-date"
>
<span className="shopping-cart-item__label shopping-cart-item__label--end-date">
Permit End Date:
</span>

<span
className="shopping-cart-item__info shopping-cart-item__info--end-date"
>
{toLocal(cartItemData.expiryDate, DATE_FORMATS.DATEONLY_ABBR_MONTH, true)}
<span className="shopping-cart-item__info shopping-cart-item__info--end-date">
{toLocal(
cartItemData.expiryDate,
DATE_FORMATS.DATEONLY_ABBR_MONTH,
true,
)}
</span>
</div>
</div>

<div className="shopping-cart-item__details-group">
<div className="shopping-cart-item__detail">
<span
className="shopping-cart-item__label shopping-cart-item__label--applicant"
>
<span className="shopping-cart-item__label shopping-cart-item__label--applicant">
Applicant:
</span>

<span
className="shopping-cart-item__info shopping-cart-item__info--applicant"
>
<span className="shopping-cart-item__info shopping-cart-item__info--applicant">
{cartItemData.applicant}
</span>
</div>

<div className="shopping-cart-item__detail">
<span
className="shopping-cart-item__label shopping-cart-item__label--fee"
>
<span className="shopping-cart-item__label shopping-cart-item__label--fee">
Fee:
</span>

<span
className="shopping-cart-item__info shopping-cart-item__info--fee"
>
<span className="shopping-cart-item__info shopping-cart-item__info--fee">
{feeSummaryDisplayText(`${cartItemData.fee}`)}
</span>
</div>
</div>
</div>
</div>
</div>
)
);
};
2 changes: 2 additions & 0 deletions frontend/src/features/permits/types/CartItem.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { PermitApplicationOrigin } from "./PermitApplicationOrigin";
import { PermitStatus } from "./PermitStatus";
import { PermitType } from "./PermitType";
import { PermitsActionResponse } from "./permit";
@@ -18,6 +19,7 @@ export interface CartItem {
startDate: string;
expiryDate: string;
duration: number;
permitApplicationOrigin: PermitApplicationOrigin
};

export interface SelectableCartItem extends CartItem {
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ import { AutoMap } from '@automapper/classes';
import { ApiProperty } from '@nestjs/swagger';
import { ApplicationStatus } from '../../../../common/enum/application-status.enum';
import { PermitType } from '../../../../common/enum/permit-type.enum';
import { PermitApplicationOrigin } from '../../../../common/enum/permit-application-origin.enum';

export class ReadShoppingCartDto {
@AutoMap()
@@ -87,4 +88,12 @@ export class ReadShoppingCartDto {
example: 30,
})
duration: number;

@AutoMap()
@ApiProperty({
enum: PermitApplicationOrigin,
example: PermitApplicationOrigin.ONLINE,
description: 'Unique identifier for the application origin.',
})
permitApplicationOrigin: PermitApplicationOrigin;
}
14 changes: 1 addition & 13 deletions vehicles/src/modules/shopping-cart/shopping-cart.service.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { Injectable, Logger } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { In, NotBrackets, Repository, SelectQueryBuilder } from 'typeorm';
import { In, Repository, SelectQueryBuilder } from 'typeorm';
import { LogAsyncMethodExecution } from '../../common/decorator/log-async-method-execution.decorator';
import { ApplicationStatus } from '../../common/enum/application-status.enum';
import { Directory } from '../../common/enum/directory.enum';
import {
CLIENT_USER_ROLE_LIST,
ClientUserRole,
@@ -199,17 +198,6 @@ export class ShoppingCartService {
userGUID,
});
}
// If the user is a BCeID user, select only those applications
// where the applicationOwner isn't a staff user.
if (!doesUserHaveRole(orbcUserRole, IDIR_USER_ROLE_LIST)) {
queryBuilder.andWhere(
new NotBrackets((qb) => {
qb.where('applicationOwner.directory = :directory', {
directory: Directory.IDIR,
});
}),
);
}
return queryBuilder;
}

0 comments on commit 191dd65

Please sign in to comment.