@@ -187,11 +187,14 @@ class ChallengePhaseHelper {
187
187
if ( _ . isUndefined ( _ . get ( phaseFromInput , "scheduledStartDate" ) ) ) {
188
188
phase . scheduledStartDate = moment ( startDate ) . toDate ( ) . toISOString ( ) ;
189
189
} else {
190
- phase . scheduledStartDate = moment ( _ . get ( phaseFromInput , "scheduledStartDate" ) ) . toDate ( ) . toISOString ( ) ;
190
+ phase . scheduledStartDate = moment ( _ . get ( phaseFromInput , "scheduledStartDate" ) )
191
+ . toDate ( )
192
+ . toISOString ( ) ;
191
193
}
192
194
phase . scheduledEndDate = moment ( phase . scheduledStartDate )
193
195
. add ( phase . duration , "seconds" )
194
- . toDate ( ) . toISOString ( ) ;
196
+ . toDate ( )
197
+ . toISOString ( ) ;
195
198
}
196
199
return phase ;
197
200
} ) ;
@@ -202,14 +205,15 @@ class ChallengePhaseHelper {
202
205
const precedecessorPhase = _ . find ( finalPhases , {
203
206
phaseId : phase . predecessor ,
204
207
} ) ;
205
- if ( phase . name === "Iterative Review Phase " ) {
208
+ if ( phase . name === "Iterative Review" ) {
206
209
phase . scheduledStartDate = precedecessorPhase . scheduledStartDate ;
207
210
} else {
208
211
phase . scheduledStartDate = precedecessorPhase . scheduledEndDate ;
209
212
}
210
213
phase . scheduledEndDate = moment ( phase . scheduledStartDate )
211
214
. add ( phase . duration , "seconds" )
212
- . toDate ( ) . toISOString ( ) ;
215
+ . toDate ( )
216
+ . toISOString ( ) ;
213
217
}
214
218
return finalPhases ;
215
219
}
@@ -224,19 +228,25 @@ class ChallengePhaseHelper {
224
228
timelineTemplateId
225
229
) ;
226
230
const { phaseDefinitionMap } = await this . getPhaseDefinitionsAndMap ( ) ;
227
-
231
+ const updatedRegistrationPhase = undefined ;
228
232
const updatedPhases = _ . map ( challengePhases , ( phase ) => {
229
233
const phaseFromTemplate = timelineTemplateMap . get ( phase . phaseId ) ;
230
234
const phaseDefinition = phaseDefinitionMap . get ( phase . phaseId ) ;
231
235
const updatedPhase = {
232
236
...phase ,
233
- predecessor : phaseFromTemplate . predecessor ,
237
+ predecessor : phaseFromTemplate && phaseFromTemplate . predecessor ,
234
238
description : phaseDefinition . description ,
235
239
} ;
240
+ if ( updatedPhase . name === "Post-Mortem" ) {
241
+ updatedPhase . predecessor = "a93544bc-c165-4af4-b55e-18f3593b457a" ;
242
+ }
243
+ if ( updatedPhase . name === "Registration" ) {
244
+ updatedRegistrationPhase = updatedPhase ;
245
+ }
236
246
if ( ! _ . isUndefined ( phase . actualEndDate ) ) {
237
247
return updatedPhase ;
238
248
}
239
- if ( updatedPhase . name === "Iterative Review Phase " ) {
249
+ if ( updatedPhase . name === "Iterative Review" ) {
240
250
return updatedPhase ;
241
251
}
242
252
const newPhase = _ . find ( newPhases , ( p ) => p . phaseId === updatedPhase . phaseId ) ;
@@ -245,44 +255,65 @@ class ChallengePhaseHelper {
245
255
}
246
256
updatedPhase . duration = _ . defaultTo ( _ . get ( newPhase , "duration" ) , updatedPhase . duration ) ;
247
257
if ( _ . isUndefined ( updatedPhase . predecessor ) ) {
258
+ const finalScheduledStartDate = _ . defaultTo (
259
+ _ . get ( newPhase , "scheduledStartDate" ) ,
260
+ updatedPhase . scheduledStartDate
261
+ ) ;
248
262
if (
249
- isBeingActivated &&
250
- moment (
251
- _ . defaultTo ( _ . get ( newPhase , "scheduledStartDate" ) , updatedPhase . scheduledStartDate )
252
- ) . isSameOrBefore ( moment ( ) )
263
+ updatedPhase . name === "Submission" &&
264
+ moment ( finalScheduledStartDate ) . isBefore (
265
+ moment ( updatedRegistrationPhase && updatedRegistrationPhase . scheduledStartDate )
266
+ )
253
267
) {
268
+ finalScheduledStartDate = updatedRegistrationPhase . scheduledStartDate ;
269
+ }
270
+ if ( isBeingActivated && moment ( finalScheduledStartDate ) . isSameOrBefore ( moment ( ) ) ) {
254
271
updatedPhase . isOpen = true ;
255
272
updatedPhase . scheduledStartDate = moment ( ) . toDate ( ) . toISOString ( ) ;
256
273
updatedPhase . actualStartDate = updatedPhase . scheduledStartDate ;
257
- } else if (
258
- updatedPhase . isOpen === false &&
259
- ! _ . isUndefined ( _ . get ( newPhase , "scheduledStartDate" ) )
260
- ) {
261
- updatedPhase . scheduledStartDate = moment ( newPhase . scheduledStartDate ) . toDate ( ) . toISOString ( ) ;
274
+ } else if ( updatedPhase . isOpen === false ) {
275
+ updatedPhase . scheduledStartDate = moment ( finalScheduledStartDate ) . toDate ( ) . toISOString ( ) ;
262
276
}
263
277
updatedPhase . scheduledEndDate = moment ( updatedPhase . scheduledStartDate )
264
278
. add ( updatedPhase . duration , "seconds" )
265
- . toDate ( ) . toISOString ( ) ;
279
+ . toDate ( )
280
+ . toISOString ( ) ;
266
281
}
267
282
if ( ! _ . isUndefined ( newPhase ) && ! _ . isUndefined ( newPhase . constraints ) ) {
268
283
updatedPhase . constraints = newPhase . constraints ;
269
284
}
285
+ if ( updatedPhase . name === "Registration" ) {
286
+ updatedRegistrationPhase = updatedPhase ;
287
+ }
270
288
return updatedPhase ;
271
289
} ) ;
290
+ let lastIterative = undefined ;
272
291
for ( let phase of updatedPhases ) {
273
292
if ( _ . isUndefined ( phase . predecessor ) ) {
274
293
continue ;
275
294
}
276
- if ( phase . name === "Iterative Review Phase" ) {
277
- continue ;
295
+ let predecessorPhase = undefined ;
296
+ if ( phase . name === "Iterative Review" ) {
297
+ if ( ! _ . isUndefined ( lastIterative ) ) {
298
+ predecessorPhase = lastIterative ;
299
+ } else {
300
+ predecessorPhase = _ . find ( updatedPhases , {
301
+ phaseId : phase . predecessor ,
302
+ } ) ;
303
+ }
304
+ } else {
305
+ predecessorPhase = _ . find ( updatedPhases , {
306
+ phaseId : phase . predecessor ,
307
+ } ) ;
278
308
}
279
- const precedecessorPhase = _ . find ( updatedPhases , {
280
- phaseId : phase . predecessor ,
281
- } ) ;
282
- phase . scheduledStartDate = precedecessorPhase . scheduledEndDate ;
309
+ phase . scheduledStartDate = predecessorPhase . scheduledEndDate ;
283
310
phase . scheduledEndDate = moment ( phase . scheduledStartDate )
284
311
. add ( phase . duration , "seconds" )
285
- . toDate ( ) . toISOString ( ) ;
312
+ . toDate ( )
313
+ . toISOString ( ) ;
314
+ if ( phase . name === "Iterative Review" ) {
315
+ lastIterative = phase ;
316
+ }
286
317
}
287
318
return updatedPhases ;
288
319
}
0 commit comments