Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit 7975fc5

Browse files
committed
Merge branch 'develop'
2 parents a117332 + 308ed44 commit 7975fc5

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

src/constants.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,16 @@ const challengeStatuses = {
4545
CancelledZeroRegistrations: 'Cancelled - Zero Registrations'
4646
}
4747

48+
const challengeAbbreviations = {
49+
TASK: 'TASK',
50+
FIRST_2_FINISH: 'FIRST_2_FINISH'
51+
}
52+
4853
module.exports = {
4954
prizeSetTypes,
5055
EVENT_ORIGINATOR,
5156
EVENT_MIME_TYPE,
5257
createChallengeStatusesMap,
53-
challengeStatuses
58+
challengeStatuses,
59+
challengeAbbreviations
5460
}

src/services/ProcessorService.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ async function parsePayload (payload, m2mToken, isCreated = true) {
9797
if (payload.typeId) {
9898
const typeRes = await helper.getRequest(`${config.V5_CHALLENGE_TYPE_API_URL}/${payload.typeId}`, m2mToken)
9999
data.subTrack = typeRes.body.abbreviation // FIXME: thomas
100+
// TASK is named as FIRST_2_FINISH on legacy
101+
if (data.subTrack === constants.challengeAbbreviations.TASK) {
102+
data.task = true
103+
data.subTrack = constants.challengeAbbreviations.FIRST_2_FINISH
104+
}
100105
data.legacyTypeId = typeRes.body.legacyId
101106
}
102107
if (payload.description) {
@@ -117,8 +122,8 @@ async function parsePayload (payload, m2mToken, isCreated = true) {
117122
const registrationPhase = _.find(payload.phases, p => p.phaseId === config.REGISTRATION_PHASE_ID)
118123
const submissionPhase = _.find(payload.phases, p => p.phaseId === config.SUBMISSION_PHASE_ID)
119124
data.registrationStartsAt = new Date().toISOString()
120-
data.registrationEndsAt = new Date(Date.now() + registrationPhase.duration).toISOString()
121-
data.registrationDuration = registrationPhase.duration
125+
data.registrationEndsAt = new Date(Date.now() + (registrationPhase || submissionPhase).duration).toISOString()
126+
data.registrationDuration = (registrationPhase || submissionPhase).duration
122127
data.submissionEndsAt = new Date(Date.now() + submissionPhase.duration).toISOString()
123128
data.submissionDuration = submissionPhase.duration
124129

@@ -151,7 +156,7 @@ async function parsePayload (payload, m2mToken, isCreated = true) {
151156
if (!challengePrizes) {
152157
throw new Error('Challenge prize information is invalid.')
153158
}
154-
data.prizes = _.map(challengePrizes[0].prizes, 'value').sort((a, b) => b - a)
159+
data.prizes = _.map(challengePrizes.prizes, 'value').sort((a, b) => b - a)
155160
}
156161
if (payload.tags) {
157162
const techResult = await getTechnologies(m2mToken)
@@ -287,19 +292,28 @@ async function processUpdate (message) {
287292
if (!challenge) {
288293
throw new Error(`Could not find challenge ${message.payload.legacyId}`)
289294
}
295+
await helper.putRequest(`${config.V4_CHALLENGE_API_URL}/${message.payload.legacyId}`, { param: saveDraftContestDTO }, m2mToken)
296+
290297
if (message.payload.status) {
291-
if (message.payload.status === constants.challengeStatuses.Active && challenge.status !== constants.challengeStatuses.Active) {
298+
logger.info(`The status has changed from ${challenge.currentStatus} to ${message.payload.status}`)
299+
if (message.payload.status === constants.challengeStatuses.Active && challenge.currentStatus !== constants.challengeStatuses.Active) {
300+
logger.info('Activating challenge...')
292301
await activateChallenge(message.payload.legacyId)
302+
logger.info('Activated!')
293303
}
294-
if (message.payload.status === constants.challengeStatuses.Completed && challenge.status !== constants.challengeStatuses.Completed) {
304+
if (message.payload.status === constants.challengeStatuses.Completed && challenge.currentStatus !== constants.challengeStatuses.Completed) {
295305
const challengeUuid = message.payload.id
296306
const v5Challenge = await helper.getRequest(`${config.V5_CHALLENGE_API_URL}/${challengeUuid}`, m2mToken)
297-
if (v5Challenge.typeId === config.TASK_TYPE_ID) {
307+
if (v5Challenge.body.typeId === config.TASK_TYPE_ID) {
308+
logger.info('Challenge type is TASK')
298309
if (!message.payload.winners || message.payload.winners.length === 0) {
299310
throw new Error('Cannot close challenge without winners')
300311
}
301312
const winnerId = _.find(message.payload.winners, winner => winner.placement === 1).userId
313+
logger.info(`Will close the challenge with ID ${message.payload.legacyId}. Winner ${winnerId}!`)
302314
await closeChallenge(message.payload.legacyId, winnerId)
315+
} else {
316+
logger.info(`Challenge type is ${v5Challenge.body.typeId}.. Skip closing challenge...`)
303317
}
304318
}
305319
}
@@ -313,8 +327,6 @@ async function processUpdate (message) {
313327
// throw new Error('You can\'t change challenge track')
314328
// }
315329
// }
316-
317-
await helper.putRequest(`${config.V4_CHALLENGE_API_URL}/${message.payload.legacyId}`, { param: saveDraftContestDTO }, m2mToken)
318330
} catch (e) {
319331
logger.error('processUpdate Catch', e)
320332
throw e

0 commit comments

Comments
 (0)