@@ -79,24 +79,28 @@ async function syncChallengePhases (legacyId, v5Phases, createdBy, isSelfService
79
79
const phasesFromIFx = await timelineService . getChallengePhases ( legacyId )
80
80
logger . debug ( `Phases from v5: ${ JSON . stringify ( v5Phases ) } ` )
81
81
logger . debug ( `Phases from IFX: ${ JSON . stringify ( phasesFromIFx ) } ` )
82
+
83
+ let isSubmissionPhaseOpen = false
84
+ let postMortemPhaseId = null
82
85
for ( const phase of phasesFromIFx ) {
86
+ if ( phase . phase_type_id === constants . PhaseTypes . POST_MORTEM ) {
87
+ postMortemPhaseId = phase . project_phase_id
88
+ }
83
89
const phaseName = _ . get ( _ . find ( phaseTypes , pt => pt . phase_type_id === phase . phase_type_id ) , 'name' )
84
90
const v5Equivalent = _ . find ( v5Phases , p => p . name === phaseName )
85
91
logger . info ( `v4 Phase: ${ JSON . stringify ( phase ) } , v5 Equiv: ${ JSON . stringify ( v5Equivalent ) } ` )
86
92
if ( v5Equivalent ) {
87
- // Compare duration and status
88
- // if (v5Equivalent.duration * 1000 !== phase.duration * 1 || isSelfService) {
89
- // ||
90
- // (v5Equivalent.isOpen && _.toInteger(phase.phase_status_id) === constants.PhaseStatusTypes.Closed) ||
91
- // (!v5Equivalent.isOpen && _.toInteger(phase.phase_status_id) === constants.PhaseStatusTypes.Open)) {
92
- // const newStatus = v5Equivalent.isOpen
93
- // ? constants.PhaseStatusTypes.Open
94
- // : (new Date().getTime() <= new Date(v5Equivalent.scheduledEndDate).getTime() ? constants.PhaseStatusTypes.Scheduled : constants.PhaseStatusTypes.Closed)
95
- // update phase
96
93
logger . debug ( `Will update phase ${ phaseName } /${ v5Equivalent . name } from ${ phase . duration } to duration ${ v5Equivalent . duration * 1000 } milli` )
97
- const newStatus = v5Equivalent . isOpen
98
- ? constants . PhaseStatusTypes . Open
99
- : ( new Date ( ) . getTime ( ) <= new Date ( v5Equivalent . scheduledEndDate ) . getTime ( ) ? constants . PhaseStatusTypes . Scheduled : constants . PhaseStatusTypes . Closed )
94
+
95
+ let newStatus = v5Equivalent . isOpen ? constants . PhaseStatusTypes . Open : constants . PhaseStatusTypes . Scheduled ;
96
+ if ( v5Equivalent . scheduledEndDate != null && v5Equivalent . scheduledEndDate . trim ( ) . length > 0 && new Date ( ) . getTime ( ) > new Date ( v5Equivalent . scheduledEndDate ) . getTime ( ) ) {
97
+ newStatus = constants . PhaseStatusTypes . Closed ;
98
+ }
99
+
100
+ if ( v5Equivalent . name === 'Submission' && newStatus === constants . PhaseStatusTypes . Open ) {
101
+ isSubmissionPhaseOpen = true
102
+ }
103
+
100
104
await timelineService . updatePhase (
101
105
phase . project_phase_id ,
102
106
legacyId ,
@@ -105,17 +109,18 @@ async function syncChallengePhases (legacyId, v5Phases, createdBy, isSelfService
105
109
v5Equivalent . duration * 1000 ,
106
110
newStatus // phase.phase_status_id
107
111
)
108
- // newStatus)
109
- // } else {
110
- // logger.info(`Durations for ${phaseName} match: ${v5Equivalent.duration * 1000} === ${phase.duration}`)
111
- // }
112
112
} else {
113
113
logger . info ( `No v5 Equivalent Found for ${ phaseName } ` )
114
114
}
115
115
if ( isSelfService && phaseName === 'Review' ) {
116
116
// make sure to set the required reviewers to 2
117
117
await createOrSetNumberOfReviewers ( _ . toString ( phase . project_phase_id ) , _ . toString ( numOfReviewers ) , _ . toString ( createdBy ) )
118
118
}
119
+
120
+ if ( isSubmissionPhaseOpen && postMortemPhaseId != null ) {
121
+ logger . info ( 'Submission Phase is open, Remove Post-Mortem Phase' , legacyId , postMortemPhaseId )
122
+ await timelineService . dropPhase ( legacyId , postMortemPhaseId )
123
+ }
119
124
}
120
125
// TODO: What about iterative reviews? There can be many for the same challenge.
121
126
// TODO: handle timeline template updates
0 commit comments