Skip to content

Commit 07f4c27

Browse files
authored
Merge pull request #35 from topcoder-platform/PS-441-master
PS-441 fix for phase predecessor calculations on update
2 parents c57383e + 12361bc commit 07f4c27

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/common/phase-helper.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class ChallengePhaseHelper {
9191
timelineTemplateId
9292
);
9393
const { phaseDefinitionMap } = await this.getPhaseDefinitionsAndMap();
94+
const challengePhaseIds = new Set(_.map(challengePhases, "phaseId"));
9495

9596
// Ensure deterministic processing order based on the timeline template sequence
9697
// DB returns phases ordered by dates, which can cause "fixedStartDate" logic below
@@ -107,9 +108,18 @@ class ChallengePhaseHelper {
107108
const phaseFromTemplate = timelineTemplateMap.get(phase.phaseId);
108109
const phaseDefinition = phaseDefinitionMap.get(phase.phaseId);
109110
const newPhase = _.find(newPhases, (p) => p.phaseId === phase.phaseId);
111+
const templatePredecessor = _.get(phaseFromTemplate, "predecessor");
112+
// Prefer template predecessor only when that phase exists on the challenge, otherwise keep the stored link.
113+
const resolvedPredecessor = _.isNil(phaseFromTemplate)
114+
? phase.predecessor
115+
: _.isNil(templatePredecessor)
116+
? null
117+
: challengePhaseIds.has(templatePredecessor)
118+
? templatePredecessor
119+
: phase.predecessor;
110120
const updatedPhase = {
111121
...phase,
112-
predecessor: phaseFromTemplate && phaseFromTemplate.predecessor,
122+
predecessor: resolvedPredecessor,
113123
description: phaseDefinition.description,
114124
};
115125
if (updatedPhase.name === "Post-Mortem") {
@@ -157,6 +167,9 @@ class ChallengePhaseHelper {
157167
const predecessorPhase = _.find(updatedPhases, {
158168
phaseId: phase.predecessor,
159169
});
170+
if (_.isNil(predecessorPhase)) {
171+
continue;
172+
}
160173
if (phase.name === "Iterative Review") {
161174
if (!iterativeReviewSet) {
162175
if (_.isNil(phase.actualStartDate)) {

0 commit comments

Comments
 (0)