Skip to content

Commit 8faf9ce

Browse files
committed
Allow for Topgear Submission type phase when calculating start / end dates
1 parent c57383e commit 8faf9ce

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

src/common/challenge-helper.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ const { hasAdminRole } = require("./role-helper");
1212
const { ensureAcessibilityToModifiedGroups } = require("./group-helper");
1313
const { ChallengeStatusEnum } = require("@prisma/client");
1414

15+
const SUBMISSION_PHASE_PRIORITY = ["Topcoder Submission", "Submission"];
16+
1517
class ChallengeHelper {
1618
/**
1719
* @param {Object} challenge the challenge object
@@ -356,7 +358,9 @@ class ChallengeHelper {
356358
enrichChallengeForResponse(challenge, track, type, options = {}) {
357359
if (challenge.phases && challenge.phases.length > 0) {
358360
const registrationPhase = _.find(challenge.phases, (p) => p.name === "Registration");
359-
const submissionPhase = _.find(challenge.phases, (p) => p.name === "Submission");
361+
const submissionPhase =
362+
_.find(challenge.phases, (p) => p.name === SUBMISSION_PHASE_PRIORITY[0]) ||
363+
_.find(challenge.phases, (p) => p.name === SUBMISSION_PHASE_PRIORITY[1]);
360364

361365
// select last started open phase as current phase
362366
_.forEach(challenge.phases, (p) => {

src/common/prisma-helper.js

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ const Decimal = require("decimal.js");
33
const constants = require("../../app-constants");
44
const { PrizeSetTypeEnum } = require("@prisma/client");
55
const { dedupeChallengeTerms } = require("./helper");
6+
7+
const SUBMISSION_PHASE_PRIORITY = ["Topcoder Submission", "Submission"];
68
/**
79
* Convert phases data to prisma model.
810
*
@@ -11,6 +13,7 @@ const { dedupeChallengeTerms } = require("./helper");
1113
* @param {Object} auditFields createdBy and updatedBy
1214
*/
1315
function convertChallengePhaseSchema(challenge, result, auditFields) {
16+
const phases = _.isArray(challenge.phases) ? challenge.phases : [];
1417
// keep phase data
1518
const phaseFields = [
1619
"name",
@@ -25,24 +28,29 @@ function convertChallengePhaseSchema(challenge, result, auditFields) {
2528
"challengeSource",
2629
];
2730
// current phase names
28-
result.currentPhaseNames = _.map(
29-
_.filter(challenge.phases, (p) => p.isOpen === true),
30-
"name"
31-
);
32-
// get registration date and submission date
33-
_.forEach(challenge.phases, (p) => {
34-
if (p.name === "Registration") {
35-
result.registrationStartDate = p.actualStartDate || p.scheduledStartDate;
36-
result.registrationEndDate = p.actualEndDate || p.scheduledEndDate;
37-
} else if (p.name === "Submission") {
38-
result.submissionStartDate = p.actualStartDate || p.scheduledStartDate;
39-
result.submissionEndDate = p.actualEndDate || p.scheduledEndDate;
40-
}
41-
});
31+
result.currentPhaseNames = _.map(_.filter(phases, (p) => p.isOpen === true), "name");
32+
33+
const registrationPhase = _.find(phases, (p) => p.name === "Registration");
34+
const submissionPhase =
35+
_.find(phases, (p) => p.name === SUBMISSION_PHASE_PRIORITY[0]) ||
36+
_.find(phases, (p) => p.name === SUBMISSION_PHASE_PRIORITY[1]);
37+
38+
if (registrationPhase) {
39+
result.registrationStartDate =
40+
registrationPhase.actualStartDate || registrationPhase.scheduledStartDate;
41+
result.registrationEndDate =
42+
registrationPhase.actualEndDate || registrationPhase.scheduledEndDate;
43+
}
44+
if (submissionPhase) {
45+
result.submissionStartDate =
46+
submissionPhase.actualStartDate || submissionPhase.scheduledStartDate;
47+
result.submissionEndDate =
48+
submissionPhase.actualEndDate || submissionPhase.scheduledEndDate;
49+
}
4250
// set phases array data
43-
if (!_.isEmpty(challenge.phases)) {
51+
if (!_.isEmpty(phases)) {
4452
result.phases = {
45-
create: _.map(challenge.phases, (p) => {
53+
create: _.map(phases, (p) => {
4654
const phaseData = {
4755
phase: { connect: { id: p.phaseId } },
4856
..._.pick(p, phaseFields),

0 commit comments

Comments
 (0)