Skip to content

Commit 3c2dabf

Browse files
committed
#1307: Abstracted the dateImplemented function
1 parent ab527c9 commit 3c2dabf

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

src/backend/src/transformers/change-requests.transformer.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { wbsNumOf } from '../utils/utils';
55
import { calculateChangeRequestStatus, convertCRScopeWhyType } from '../utils/change-requests.utils';
66
import proposedSolutionTransformer from './proposed-solutions.transformer';
77
import userTransformer from './user.transformer';
8+
import { getDateImplemented } from '../utils/change-requests.utils';
89

910
const changeRequestTransformer = (
1011
changeRequest: Prisma.Change_RequestGetPayload<typeof changeRequestRelationArgs>
@@ -23,11 +24,7 @@ const changeRequestTransformer = (
2324
dateReviewed: changeRequest.dateReviewed ?? undefined,
2425
accepted: changeRequest.accepted ?? undefined,
2526
reviewNotes: changeRequest.reviewNotes ?? undefined,
26-
dateImplemented: changeRequest.changes.reduce(
27-
(res: Date | undefined, change) =>
28-
!res || change.dateImplemented.valueOf() > res.valueOf() ? change.dateImplemented : res,
29-
undefined
30-
),
27+
dateImplemented: getDateImplemented(changeRequest),
3128
implementedChanges: changeRequest.changes.map((change) => ({
3229
wbsNum: wbsNumOf(change.wbsElement),
3330
changeId: change.changeId,

src/backend/src/utils/change-requests.utils.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import prisma from '../prisma/prisma';
2-
import { Scope_CR_Why_Type, Team, User, Prisma, Change_Request } from '@prisma/client';
3-
import { addWeeksToDate, ChangeRequestReason } from 'shared';
2+
import { Scope_CR_Why_Type, Team, User, Prisma, Change_Request, Change } from '@prisma/client';
3+
import { addWeeksToDate, ChangeRequest, ChangeRequestReason } from 'shared';
44
import { sendMessage } from '../integrations/slack';
55
import { HttpException, NotFoundException } from './errors.utils';
66
import { ChangeRequestStatus } from 'shared';
@@ -142,7 +142,8 @@ export const validateChangeRequestAccepted = async (crId: number) => {
142142
if (changeRequest.accepted === null) throw new HttpException(400, 'Cannot implement an unreviewed change request');
143143
if (!changeRequest.accepted) throw new HttpException(400, 'Cannot implement a denied change request');
144144
if (!changeRequest.dateReviewed) throw new HttpException(400, 'Cannot use an unreviewed change request');
145-
if (currentDate.getTime() - changeRequest.changes[0].dateImplemented.getTime() > 1000 * 60 * 60 * 24 * 5)
145+
const dateImplemented = getDateImplemented(changeRequest);
146+
if (dateImplemented !== undefined && currentDate.getTime() - dateImplemented.getTime() > 1000 * 60 * 60 * 24 * 5)
146147
throw new HttpException(400, 'Cannot tie changes to outdated change request');
147148

148149
return changeRequest;
@@ -166,6 +167,14 @@ export const calculateChangeRequestStatus = (
166167
return ChangeRequestStatus.Open;
167168
};
168169

170+
export const getDateImplemented = (changeRequest: Change_Request & { changes: Change[] }): Date | undefined => {
171+
return changeRequest.changes.reduce(
172+
(res: Date | undefined, change) =>
173+
!res || change.dateImplemented.valueOf() > res.valueOf() ? change.dateImplemented : res,
174+
undefined
175+
);
176+
};
177+
169178
/**
170179
* Determines whether all the change requests in an array of change requests have been reviewed
171180
* @param changeRequests the given array of change requests

0 commit comments

Comments
 (0)