diff --git a/src/common/helper.js b/src/common/helper.js index 255565ba..29802607 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -1097,6 +1097,22 @@ async function getMemberDetailsByHandles (handles) { return _.get(res.body, 'result.content') } +/** + * Get topcoder member details by handle. + * + * @param {String} handle the user handle + * @returns {Object} the member details + */ + async function getV3MemberDetailsByHandle (handle) { + const token = await getM2MToken() + const res = await request + .get(`${config.TOPCODER_MEMBERS_API}/${handle}`) + .set('Authorization', `Bearer ${token}`) + .set('Accept', 'application/json') + localLogger.debug({ context: 'getV3MemberDetailsByHandle', message: `response body: ${JSON.stringify(res.body)}` }) + return _.get(res.body, 'result.content') +} + /** * Find topcoder members by email. * @@ -1423,6 +1439,7 @@ module.exports = { getAuditM2Muser, checkIsMemberOfProject, getMemberDetailsByHandles, + getV3MemberDetailsByHandle, getMemberDetailsByEmails, createProjectMember, listProjectMembers, diff --git a/src/services/PaymentService.js b/src/services/PaymentService.js index 7d714f75..3143b936 100644 --- a/src/services/PaymentService.js +++ b/src/services/PaymentService.js @@ -39,7 +39,7 @@ async function createPayment (options) { const challengeId = await createChallenge(options, token) await addResourceToChallenge(challengeId, options.userHandle, token) await activateChallenge(challengeId, token) - const completedChallenge = await closeChallenge(challengeId, token) + const completedChallenge = await closeChallenge(challengeId, options.userHandle, token) return completedChallenge } @@ -146,14 +146,21 @@ async function activateChallenge (id, token) { /** * closes the topcoder challenge * @param {String} id the challenge id + * @param {String} userHandle the user handle * @param {String} token m2m token * @returns {Object} the closed challenge */ -async function closeChallenge (id, token) { +async function closeChallenge (id, userHandle, token) { localLogger.info({ context: 'closeChallenge', message: `Closing challenge ${id}` }) try { + const { userId } = await helper.getV3MemberDetailsByHandle(userHandle) const body = { - status: constants.ChallengeStatus.COMPLETED + status: constants.ChallengeStatus.COMPLETED, + winners: [{ + userId, + handle: userHandle, + placement: 1 + }] } const response = await helper.updateChallenge(id, body, token) localLogger.info({ context: 'closeChallenge', message: `Challenge ${id} is closed successfully.` })