@@ -10,7 +10,8 @@ import {
1010 WorkPackageStage ,
1111 BudgetChangeRequest ,
1212 isWorkPackageWbs ,
13- LeadershipChangeRequest
13+ LeadershipChangeRequest ,
14+ ChangeRequestStatus
1415} from 'shared' ;
1516import { wbsNumOf } from '../utils/utils.js' ;
1617import { calculateChangeRequestStatus , convertCRScopeWhyType } from '../utils/change-requests.utils.js' ;
@@ -25,10 +26,12 @@ import {
2526} from '../prisma-query-args/scope-change-requests.query-args.js' ;
2627import { HttpException } from '../utils/errors.utils.js' ;
2728import {
29+ ChangeRequestGuestQueryArgs ,
2830 ChangeRequestManyQueryArgs ,
2931 ChangeRequestWithProjectAndWorkPackageQueryArgs
3032} from '../prisma-query-args/change-requests.query-args.js' ;
3133import { accountCodeTransformer , otherProductReasonTransformer } from './reimbursement-requests.transformer.js' ;
34+ import { GuestChangeRequest } from '../../../shared/src/types/change-request-types.js' ;
3235
3336const projectProposedChangesTransformer = (
3437 wbsProposedChanges : Prisma . Wbs_Proposed_ChangesGetPayload < WbsProposedChangeQueryArgs >
@@ -229,3 +232,41 @@ const changeRequestTransformer = (
229232} ;
230233
231234export default changeRequestTransformer ;
235+
236+ export const guestChangeRequestTransformer = (
237+ changeRequest : Prisma . Change_RequestGetPayload < ChangeRequestGuestQueryArgs >
238+ ) : GuestChangeRequest => {
239+ const status = changeRequest . changes . length
240+ ? ChangeRequestStatus . Implemented
241+ : changeRequest . accepted && changeRequest . dateReviewed
242+ ? ChangeRequestStatus . Accepted
243+ : changeRequest . dateReviewed
244+ ? ChangeRequestStatus . Denied
245+ : ChangeRequestStatus . Open ;
246+
247+ const wbsName = changeRequest . wbsElement
248+ ? ! isWorkPackageWbs ( changeRequest . wbsElement )
249+ ? changeRequest . wbsElement ?. name
250+ : `${ changeRequest . wbsElement ?. workPackage ?. project . wbsElement . name } - ${ changeRequest . wbsElement ?. name } `
251+ : undefined ;
252+
253+ return {
254+ crId : changeRequest . crId ,
255+ submitter : userTransformer ( changeRequest . submitter ) ,
256+ identifier : changeRequest . identifier ,
257+ type : changeRequest . type ,
258+ status,
259+ teamTypeNames : changeRequest . wbsElement
260+ ? isWorkPackageWbs ( changeRequest . wbsElement )
261+ ? ( changeRequest . wbsElement . workPackage ?. project ?. teams
262+ . map ( ( team ) => team . teamType ?. name )
263+ . filter ( ( name ) => name !== undefined ) ?? [ ] )
264+ : ( changeRequest . wbsElement . project ?. teams . map ( ( team ) => team . teamType ?. name ) . filter ( ( name ) => name !== undefined ) ??
265+ [ ] )
266+ : [ ] ,
267+ accepted : changeRequest . accepted ?? undefined ,
268+ reviewer : changeRequest . reviewer ? userTransformer ( changeRequest . reviewer ) : undefined ,
269+ wbsNum : changeRequest . wbsElement ? wbsNumOf ( changeRequest . wbsElement ) : undefined ,
270+ wbsName
271+ } ;
272+ } ;
0 commit comments