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

Commit 5178b4e

Browse files
2 parents 3bd3e51 + 393e396 commit 5178b4e

File tree

3 files changed

+63
-9
lines changed

3 files changed

+63
-9
lines changed

src/services/ProcessorService.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const metadataService = require('./metadataService')
1818
const paymentService = require('./paymentService')
1919
const { createOrSetNumberOfReviewers } = require('./selfServiceReviewerService')
2020
const { disableTimelineNotifications } = require('./selfServiceNotificationService')
21+
const legacyChallengeService = require('./legacyChallengeService')
2122

2223
/**
2324
* Drop and recreate phases in ifx
@@ -341,7 +342,7 @@ async function getLegacyTrackInformation (trackId, typeId, tags, m2mToken) {
341342
`typeId=${typeId}`
342343
]
343344
_.each((tags || []), (tag) => {
344-
query.push(`tags[]=${tag}`)
345+
query.push(`tags[]=${encodeURIComponent(tag)}`)
345346
})
346347
try {
347348
const res = await helper.getRequest(`${config.V5_CHALLENGE_MIGRATION_API_URL}/convert-to-v4?${query.join('&')}`, m2mToken)
@@ -656,7 +657,6 @@ async function processMessage (message) {
656657
if (_.get(message, 'payload.legacy.selfService')) {
657658
await disableTimelineNotifications(legacyId, createdByUserId) // disable
658659
}
659-
660660
}
661661

662662
logger.debug('Result from parsePayload:')
@@ -734,6 +734,11 @@ async function processMessage (message) {
734734
} else {
735735
logger.info('Will skip syncing phases as the challenge is a task...')
736736
}
737+
if (message.payload.status === constants.challengeStatuses.CancelledClientRequest && challenge.currentStatus !== constants.challengeStatuses.CancelledClientRequest) {
738+
logger.info('Cancelling challenge...')
739+
await legacyChallengeService.cancelChallenge(legacyId, updatedByUserId)
740+
needSyncV4ES = true
741+
}
737742
if (needSyncV4ES) {
738743
try {
739744
logger.info(`Resync V4 ES for the legacy challenge ${legacyId}`)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* Legacy Challenge Service
3+
* Interacts with InformixDB
4+
*/
5+
const logger = require('../common/logger')
6+
const util = require('util')
7+
const helper = require('../common/helper')
8+
const { createChallengeStatusesMap } = require('../constants')
9+
10+
const QUERY_UPDATE_PROJECT = 'UPDATE project SET project_status_id = ?, modify_user = ? WHERE project_id = %d'
11+
12+
/**
13+
* Prepare Informix statement
14+
* @param {Object} connection the Informix connection
15+
* @param {String} sql the sql
16+
* @return {Object} Informix statement
17+
*/
18+
async function prepare (connection, sql) {
19+
// logger.debug(`Preparing SQL ${sql}`)
20+
const stmt = await connection.prepareAsync(sql)
21+
return Promise.promisifyAll(stmt)
22+
}
23+
24+
/**
25+
* Update a challenge in IFX
26+
* @param {Number} challengeLegacyId the legacy challenge ID
27+
* @param {Number} createdBy the creator user ID
28+
*/
29+
async function cancelChallenge (challengeLegacyId, createdBy) {
30+
const connection = await helper.getInformixConnection()
31+
let result = null
32+
try {
33+
await connection.beginTransactionAsync()
34+
const query = await prepare(connection, util.format(QUERY_UPDATE_PROJECT, challengeLegacyId))
35+
result = await query.executeAsync([createChallengeStatusesMap.CancelledClientRequest, createdBy])
36+
await connection.commitTransactionAsync()
37+
} catch (e) {
38+
logger.error(`Error in 'cancelChallenge' ${e}, rolling back transaction`)
39+
await connection.rollbackTransactionAsync()
40+
throw e
41+
} finally {
42+
logger.info(`Challenge ${challengeLegacyId} has been cancelled`)
43+
await connection.closeAsync()
44+
}
45+
return result
46+
}
47+
48+
module.exports = {
49+
cancelChallenge
50+
}

src/services/selfServiceReviewerService.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ const util = require('util')
66
const logger = require('../common/logger')
77
const helper = require('../common/helper')
88

9-
const QUERY_GET_ENTRY = 'SELECT parameter FROM phase_criteria WHERE project_phase_id = %d'
9+
const QUERY_GET_ENTRY = 'SELECT parameter FROM phase_criteria WHERE project_phase_id = %d AND phase_criteria_type_id = 6'
1010
const QUERY_CREATE = 'INSERT INTO phase_criteria (project_phase_id, phase_criteria_type_id, parameter, create_user, create_date, modify_user, modify_date) VALUES (?, 6, ?, ?, CURRENT, ?, CURRENT)'
11-
const QUERY_UPDATE = 'UPDATE phase_criteria SET parameter = ?, modify_user = ?, modify_date = CURRENT WHERE project_phase_id = ?'
12-
const QUERY_DELETE = 'DELETE FROM phase_criteria WHERE project_phase_id = ?'
11+
const QUERY_UPDATE = 'UPDATE phase_criteria SET parameter = ?, modify_user = ?, modify_date = CURRENT WHERE project_phase_id = ? AND phase_criteria_type_id = 6'
12+
const QUERY_DELETE = 'DELETE FROM phase_criteria WHERE project_phase_id = ? AND phase_criteria_type_id = 6'
1313

1414
/**
1515
* Prepare Informix statement
@@ -43,10 +43,9 @@ async function getEntry (phaseId) {
4343
}
4444

4545
/**
46-
* Enable timeline notifications
46+
* Merge number of reviewers
4747
* @param {Number} phaseId the legacy challenge ID
48-
* @param {Number} typeId the type ID
49-
* @param {Any} value the value
48+
* @param {Number=} value the value
5049
* @param {String} createdBy the created by
5150
*/
5251
async function createOrSetNumberOfReviewers (phaseId, value, createdBy) {
@@ -67,7 +66,7 @@ async function createOrSetNumberOfReviewers (phaseId, value, createdBy) {
6766
}
6867
} else {
6968
const query = await prepare(connection, QUERY_CREATE)
70-
logger.info(`Will delete with values: ${phaseId}, ${value}, ${createdBy}, ${createdBy}`)
69+
logger.info(`Will create with values: ${phaseId}, ${value}, ${createdBy}, ${createdBy}`)
7170
result = await query.executeAsync([phaseId, value, createdBy, createdBy])
7271
}
7372
await connection.commitTransactionAsync()

0 commit comments

Comments
 (0)