Skip to content

Commit f5dc68d

Browse files
committed
fix: post mortem phase
1 parent 82b5754 commit f5dc68d

File tree

1 file changed

+55
-24
lines changed

1 file changed

+55
-24
lines changed

src/common/phase-helper.js

Lines changed: 55 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,14 @@ class ChallengePhaseHelper {
187187
if (_.isUndefined(_.get(phaseFromInput, "scheduledStartDate"))) {
188188
phase.scheduledStartDate = moment(startDate).toDate().toISOString();
189189
} else {
190-
phase.scheduledStartDate = moment(_.get(phaseFromInput, "scheduledStartDate")).toDate().toISOString();
190+
phase.scheduledStartDate = moment(_.get(phaseFromInput, "scheduledStartDate"))
191+
.toDate()
192+
.toISOString();
191193
}
192194
phase.scheduledEndDate = moment(phase.scheduledStartDate)
193195
.add(phase.duration, "seconds")
194-
.toDate().toISOString();
196+
.toDate()
197+
.toISOString();
195198
}
196199
return phase;
197200
});
@@ -202,14 +205,15 @@ class ChallengePhaseHelper {
202205
const precedecessorPhase = _.find(finalPhases, {
203206
phaseId: phase.predecessor,
204207
});
205-
if (phase.name === "Iterative Review Phase") {
208+
if (phase.name === "Iterative Review") {
206209
phase.scheduledStartDate = precedecessorPhase.scheduledStartDate;
207210
} else {
208211
phase.scheduledStartDate = precedecessorPhase.scheduledEndDate;
209212
}
210213
phase.scheduledEndDate = moment(phase.scheduledStartDate)
211214
.add(phase.duration, "seconds")
212-
.toDate().toISOString();
215+
.toDate()
216+
.toISOString();
213217
}
214218
return finalPhases;
215219
}
@@ -224,19 +228,25 @@ class ChallengePhaseHelper {
224228
timelineTemplateId
225229
);
226230
const { phaseDefinitionMap } = await this.getPhaseDefinitionsAndMap();
227-
231+
const updatedRegistrationPhase = undefined;
228232
const updatedPhases = _.map(challengePhases, (phase) => {
229233
const phaseFromTemplate = timelineTemplateMap.get(phase.phaseId);
230234
const phaseDefinition = phaseDefinitionMap.get(phase.phaseId);
231235
const updatedPhase = {
232236
...phase,
233-
predecessor: phaseFromTemplate.predecessor,
237+
predecessor: phaseFromTemplate && phaseFromTemplate.predecessor,
234238
description: phaseDefinition.description,
235239
};
240+
if (updatedPhase.name === "Post-Mortem") {
241+
updatedPhase.predecessor = "a93544bc-c165-4af4-b55e-18f3593b457a";
242+
}
243+
if (updatedPhase.name === "Registration") {
244+
updatedRegistrationPhase = updatedPhase;
245+
}
236246
if (!_.isUndefined(phase.actualEndDate)) {
237247
return updatedPhase;
238248
}
239-
if (updatedPhase.name === "Iterative Review Phase") {
249+
if (updatedPhase.name === "Iterative Review") {
240250
return updatedPhase;
241251
}
242252
const newPhase = _.find(newPhases, (p) => p.phaseId === updatedPhase.phaseId);
@@ -245,44 +255,65 @@ class ChallengePhaseHelper {
245255
}
246256
updatedPhase.duration = _.defaultTo(_.get(newPhase, "duration"), updatedPhase.duration);
247257
if (_.isUndefined(updatedPhase.predecessor)) {
258+
const finalScheduledStartDate = _.defaultTo(
259+
_.get(newPhase, "scheduledStartDate"),
260+
updatedPhase.scheduledStartDate
261+
);
248262
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+
)
253267
) {
268+
finalScheduledStartDate = updatedRegistrationPhase.scheduledStartDate;
269+
}
270+
if (isBeingActivated && moment(finalScheduledStartDate).isSameOrBefore(moment())) {
254271
updatedPhase.isOpen = true;
255272
updatedPhase.scheduledStartDate = moment().toDate().toISOString();
256273
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();
262276
}
263277
updatedPhase.scheduledEndDate = moment(updatedPhase.scheduledStartDate)
264278
.add(updatedPhase.duration, "seconds")
265-
.toDate().toISOString();
279+
.toDate()
280+
.toISOString();
266281
}
267282
if (!_.isUndefined(newPhase) && !_.isUndefined(newPhase.constraints)) {
268283
updatedPhase.constraints = newPhase.constraints;
269284
}
285+
if (updatedPhase.name === "Registration") {
286+
updatedRegistrationPhase = updatedPhase;
287+
}
270288
return updatedPhase;
271289
});
290+
let lastIterative = undefined;
272291
for (let phase of updatedPhases) {
273292
if (_.isUndefined(phase.predecessor)) {
274293
continue;
275294
}
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+
});
278308
}
279-
const precedecessorPhase = _.find(updatedPhases, {
280-
phaseId: phase.predecessor,
281-
});
282-
phase.scheduledStartDate = precedecessorPhase.scheduledEndDate;
309+
phase.scheduledStartDate = predecessorPhase.scheduledEndDate;
283310
phase.scheduledEndDate = moment(phase.scheduledStartDate)
284311
.add(phase.duration, "seconds")
285-
.toDate().toISOString();
312+
.toDate()
313+
.toISOString();
314+
if (phase.name === "Iterative Review") {
315+
lastIterative = phase;
316+
}
286317
}
287318
return updatedPhases;
288319
}

0 commit comments

Comments
 (0)