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

Fixes #38

Merged
merged 5 commits into from
Feb 17, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 21 additions & 7 deletions src/services/ProcessorService.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ async function syncChallengePhases (legacyId, v5Phases) {
(!v5Equivalent.isOpen && _.toInteger(phase.phase_status_id) === constants.PhaseStatusTypes.Open)) {
const newStatus = v5Equivalent.isOpen
? constants.PhaseStatusTypes.Open
: (new Date().getTime() <= new Date(v5Equivalent.scheduledStartDate).getTime() ? constants.PhaseStatusTypes.Scheduled : constants.PhaseStatusTypes.Closed)
: (new Date().getTime() <= new Date(v5Equivalent.scheduledEndDate).getTime() ? constants.PhaseStatusTypes.Scheduled : constants.PhaseStatusTypes.Closed)
// update phase
logger.debug(`Will update phase ${phase.project_phase_id}/${v5Equivalent.name} to duration ${v5Equivalent.duration * 1000} milli`)
await timelineService.updatePhase(
Expand Down Expand Up @@ -467,6 +467,18 @@ async function closeChallenge (challengeId, winnerId) {
return helper.postRequest(`${config.V4_CHALLENGE_API_URL}/${challengeId}/close?winnerId=${winnerId}`, null, m2mToken)
}

/**
* Repost challenge resources on kafka
* @param {String} challengeUuid the V5 challenge UUID
* @param {String} m2mToken the m2m token
*/
async function rePostResourcesOnKafka (challengeUuid, m2mToken) {
const challengeResourcesResponse = await helper.getRequest(`${config.V5_RESOURCES_API_URL}?challengeId=${challengeUuid}&perPage=100`, m2mToken)
for (const resource of (challengeResourcesResponse.body || [])) {
await helper.postBusEvent(config.RESOURCE_CREATE_TOPIC, _.pick(resource, ['id', 'challengeId', 'memberId', 'memberHandle', 'roleId', 'created', 'createdBy', 'updated', 'updatedBy', 'legacyId']))
}
}

/**
* Process create challenge message
* @param {Object} message the kafka message
Expand Down Expand Up @@ -515,10 +527,7 @@ async function processCreate (message) {
legacyId: newChallenge.body.result.content.id
}, m2mToken)
// Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor
const challengeResourcesResponse = await helper.getRequest(`${config.V5_RESOURCES_API_URL}?challengeId=${challengeUuid}&perPage=100`, m2mToken)
for (const resource of (challengeResourcesResponse.body || [])) {
await helper.postBusEvent(config.RESOURCE_CREATE_TOPIC, _.pick(resource, ['id', 'challengeId', 'memberId', 'memberHandle', 'roleId', 'created', 'createdBy', 'updated', 'updatedBy', 'legacyId']))
}
await rePostResourcesOnKafka(challengeUuid, m2mToken)
await timelineService.enableTimelineNotifications(newChallenge.body.result.content.id, _.get(message, 'payload.createdBy'))
logger.debug('End of processCreate')
return newChallenge.body.result.content.id
Expand Down Expand Up @@ -672,6 +681,8 @@ async function processUpdate (message) {
logger.info('Activating challenge...')
await activateChallenge(legacyId)
logger.info('Activated!')
// Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor
await rePostResourcesOnKafka(message.payload.id, m2mToken)
}
if (message.payload.status === constants.challengeStatuses.Completed && challenge.currentStatus !== constants.challengeStatuses.Completed) {
if (message.payload.task.isTask) {
Expand All @@ -687,8 +698,11 @@ async function processUpdate (message) {
}
}
}

await syncChallengePhases(message.payload.legacyId, message.payload.phases)
if (!_.get(message.payload, 'task.isTask')) {
await syncChallengePhases(message.payload.legacyId, message.payload.phases)
} else {
logger.info('Will skip syncing phases as the challenge is a task...')
}
await updateMemberPayments(message.payload.legacyId, message.payload.prizeSets, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
await associateChallengeGroups(saveDraftContestDTO.groupsToBeAdded, saveDraftContestDTO.groupsToBeDeleted, legacyId)
await associateChallengeTerms(message.payload.terms, legacyId, _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
Expand Down