11import 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' ;
44import { sendMessage } from '../integrations/slack' ;
55import { HttpException , NotFoundException } from './errors.utils' ;
66import { 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