Skip to content

Commit cabd924

Browse files
authored
Merge pull request #6203 from bcgov/chore/6168
fix(6202): handle querying requests by requester IDs
2 parents 5b1d63e + 05dc039 commit cabd924

File tree

2 files changed

+59
-44
lines changed

2 files changed

+59
-44
lines changed

app/services/db/models/private-cloud-request.ts

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,11 @@ async function baseFilter(session: Session) {
1717
if (!session?.userId) return false;
1818
if (session.permissions.viewAllPrivateCloudProducts) return true;
1919

20-
const { data: products } = await privateCloudProductModel.list({ select: { licencePlate: true } }, session);
21-
const licencePlates = products.map(({ licencePlate }) => licencePlate);
22-
23-
const requestIdsFromTasks = session.tasks
24-
.filter(
25-
(task) =>
26-
([TaskType.REVIEW_PRIVATE_CLOUD_REQUEST] as TaskType[]).includes(task.type) &&
27-
task.status === TaskStatus.ASSIGNED,
28-
)
29-
.map((task) => (task.data as { requestId: string }).requestId);
30-
3120
const filter: Prisma.PrivateCloudRequestWhereInput = {
3221
OR: [
33-
{ licencePlate: { in: licencePlates } },
34-
{ id: { in: getUniqueNonFalsyItems([...requestIdsFromTasks]) } },
3522
{
3623
type: RequestType.CREATE,
37-
createdById: { equals: session.user.id, mode: 'insensitive' },
24+
createdById: session.user.id,
3825
},
3926
{
4027
type: RequestType.CREATE,
@@ -51,6 +38,25 @@ async function baseFilter(session: Session) {
5138
],
5239
};
5340

41+
const { data: products } = await privateCloudProductModel.list({ select: { licencePlate: true } }, session);
42+
const requestIdsFromTasks = session.tasks
43+
.filter(
44+
(task) =>
45+
([TaskType.REVIEW_PRIVATE_CLOUD_REQUEST] as TaskType[]).includes(task.type) &&
46+
task.status === TaskStatus.ASSIGNED,
47+
)
48+
.map((task) => (task.data as { requestId: string }).requestId);
49+
50+
const allowedLicencePlates = products.map(({ licencePlate }) => licencePlate);
51+
if (allowedLicencePlates.length > 0) {
52+
filter.OR?.push({ licencePlate: { in: allowedLicencePlates } });
53+
}
54+
55+
const allowedIds = getUniqueNonFalsyItems([...requestIdsFromTasks]);
56+
if (allowedIds.length > 0) {
57+
filter.OR?.push({ id: { in: allowedIds } });
58+
}
59+
5460
return filter;
5561
}
5662

app/services/db/models/public-cloud-request.ts

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,31 @@ async function baseFilter(session: Session) {
1717
if (!session?.userId) return false;
1818
if (session.permissions.viewAllPublicCloudProducts) return true;
1919

20+
const filter: Prisma.PublicCloudRequestWhereInput = {
21+
OR: [
22+
{
23+
type: RequestType.CREATE,
24+
createdById: session.user.id,
25+
},
26+
{
27+
type: RequestType.CREATE,
28+
decisionData: { projectOwnerId: session.user.id },
29+
},
30+
{
31+
type: RequestType.CREATE,
32+
decisionData: { primaryTechnicalLeadId: session.user.id },
33+
},
34+
{
35+
type: RequestType.CREATE,
36+
decisionData: { secondaryTechnicalLeadId: session.user.id },
37+
},
38+
{
39+
type: RequestType.CREATE,
40+
decisionData: { expenseAuthorityId: session.user.id },
41+
},
42+
],
43+
};
44+
2045
const { data: products } = await publicCloudProductModel.list({ select: { licencePlate: true } }, session);
2146
const licencePlates = products.map(({ licencePlate }) => licencePlate);
2247

@@ -51,36 +76,20 @@ async function baseFilter(session: Session) {
5176

5277
const licencePlatesAsEa = billingRecords.map((b) => b.licencePlate);
5378

54-
const filter: Prisma.PublicCloudRequestWhereInput = {
55-
OR: [
56-
{
57-
licencePlate: {
58-
in: getUniqueNonFalsyItems([...licencePlates, ...licencePlatesFromTasks, ...licencePlatesAsEa]),
59-
},
60-
},
61-
{ id: { in: getUniqueNonFalsyItems([...requestIdsFromTasks]) } },
62-
{
63-
type: RequestType.CREATE,
64-
createdById: { equals: session.user.id, mode: 'insensitive' },
65-
},
66-
{
67-
type: RequestType.CREATE,
68-
decisionData: { projectOwnerId: session.user.id },
69-
},
70-
{
71-
type: RequestType.CREATE,
72-
decisionData: { primaryTechnicalLeadId: session.user.id },
73-
},
74-
{
75-
type: RequestType.CREATE,
76-
decisionData: { secondaryTechnicalLeadId: session.user.id },
77-
},
78-
{
79-
type: RequestType.CREATE,
80-
decisionData: { expenseAuthorityId: session.user.id },
81-
},
82-
],
83-
};
79+
const allowedLicencePlates = getUniqueNonFalsyItems([
80+
...licencePlates,
81+
...licencePlatesFromTasks,
82+
...licencePlatesAsEa,
83+
]);
84+
85+
if (allowedLicencePlates.length > 0) {
86+
filter.OR?.push({ licencePlate: { in: allowedLicencePlates } });
87+
}
88+
89+
const allowedIds = getUniqueNonFalsyItems([...requestIdsFromTasks]);
90+
if (allowedIds.length > 0) {
91+
filter.OR?.push({ id: { in: allowedIds } });
92+
}
8493

8594
return filter;
8695
}

0 commit comments

Comments
 (0)