@@ -496,6 +496,8 @@ async function processCreate (message) {
496496 }
497497
498498 const m2mToken = await helper . getM2MToken ( )
499+ const createdByUserId = await helper . getMemberIdByHandle ( _ . get ( message , 'payload.createdBy' ) )
500+ const updatedByUserId = await helper . getMemberIdByHandle ( _ . get ( message , 'payload.updatedBy' ) || _ . get ( message , 'payload.createdBy' ) )
499501
500502 const saveDraftContestDTO = await parsePayload ( message . payload , m2mToken )
501503 logger . debug ( 'Parsed Payload' , saveDraftContestDTO )
@@ -514,7 +516,7 @@ async function processCreate (message) {
514516 await helper . forceV4ESFeeder ( newChallenge . body . result . content . id )
515517 await associateChallengeGroups ( saveDraftContestDTO . groupsToBeAdded , saveDraftContestDTO . groupsToBeDeleted , newChallenge . body . result . content . id )
516518 // await associateChallengeTerms(saveDraftContestDTO.termsToBeAdded, saveDraftContestDTO.termsToBeRemoved, newChallenge.body.result.content.id)
517- await setCopilotPayment ( challengeUuid , newChallenge . body . result . content . id , _ . get ( message , 'payload.prizeSets' ) , _ . get ( message , 'payload.createdBy' ) , _ . get ( message , 'payload.updatedBy' ) , m2mToken )
519+ await setCopilotPayment ( challengeUuid , newChallenge . body . result . content . id , _ . get ( message , 'payload.prizeSets' ) , createdByUserId , updatedByUserId , m2mToken )
518520 await helper . patchRequest ( `${ config . V5_CHALLENGE_API_URL } /${ challengeUuid } ` , {
519521 legacy : {
520522 ...message . payload . legacy ,
@@ -528,7 +530,7 @@ async function processCreate (message) {
528530 } , m2mToken )
529531 // Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor
530532 await rePostResourcesOnKafka ( challengeUuid , m2mToken )
531- await timelineService . enableTimelineNotifications ( newChallenge . body . result . content . id , _ . get ( message , 'payload.createdBy' ) )
533+ await timelineService . enableTimelineNotifications ( newChallenge . body . result . content . id , createdByUserId )
532534 logger . debug ( 'End of processCreate' )
533535 return newChallenge . body . result . content . id
534536 } catch ( e ) {
@@ -603,6 +605,9 @@ async function processUpdate (message) {
603605 }
604606 const m2mToken = await helper . getM2MToken ( )
605607
608+ const createdByUserId = await helper . getMemberIdByHandle ( _ . get ( message , 'payload.createdBy' ) )
609+ const updatedByUserId = await helper . getMemberIdByHandle ( _ . get ( message , 'payload.updatedBy' ) || _ . get ( message , 'payload.createdBy' ) )
610+
606611 let challenge
607612 try {
608613 // ensure challenge existed
@@ -640,41 +645,28 @@ async function processUpdate (message) {
640645 logger . debug ( JSON . stringify ( saveDraftContestDTO , null , 2 ) )
641646 // logger.debug('Parsed Payload', saveDraftContestDTO)
642647 try {
643- try {
644- if ( challenge ) {
645- await helper . putRequest ( `${ config . V4_CHALLENGE_API_URL } /${ legacyId } ` , { param : _ . omit ( saveDraftContestDTO , [ 'groupsToBeAdded' , 'groupsToBeDeleted' ] ) } , m2mToken )
646- }
647- } catch ( e ) {
648- logger . warn ( 'Failed to update the challenge via the V4 API' )
649- logger . error ( e )
650- }
651-
652- // Update metadata in IFX
653- if ( message . payload . metadata && message . payload . metadata . length > 0 ) {
654- for ( const metadataKey of _ . keys ( constants . supportedMetadata ) ) {
655- const entry = _ . find ( message . payload . metadata , meta => meta . name === metadataKey )
656- if ( entry ) {
657- if ( metadataKey === 'submissionLimit' ) {
658- // data here is JSON stringified
659- try {
660- const parsedEntryValue = JSON . parse ( entry . value )
661- if ( parsedEntryValue . limit ) {
662- entry . value = parsedEntryValue . count
663- } else {
664- entry . value = null
665- }
666- } catch ( e ) {
667- entry . value = null
668- }
669- }
670- try {
671- await metadataService . createOrUpdateMetadata ( legacyId , constants . supportedMetadata [ metadataKey ] , entry . value , _ . get ( message , 'payload.updatedBy' ) || _ . get ( message , 'payload.createdBy' ) )
672- } catch ( e ) {
673- logger . warn ( `Failed to set ${ metadataKey } (${ constants . supportedMetadata [ metadataKey ] } )` )
674- }
648+ // extract metadata from challenge and insert into IFX
649+ let metaValue
650+ for ( const metadataKey of _ . keys ( constants . supportedMetadata ) ) {
651+ try {
652+ metaValue = constants . supportedMetadata [ metadataKey ] . method ( message . payload , constants . supportedMetadata [ metadataKey ] . defaultValue )
653+ if ( metaValue !== null && metaValue !== '' ) {
654+ logger . info ( `Setting ${ constants . supportedMetadata [ metadataKey ] . description } to ${ metaValue } ` )
655+ await metadataService . createOrUpdateMetadata ( legacyId , metadataKey , metaValue , updatedByUserId )
675656 }
657+ } catch ( e ) {
658+ logger . warn ( `Failed to set ${ constants . supportedMetadata [ metadataKey ] . description } to ${ metaValue } ` )
676659 }
677660 }
661+ // try {
662+ // if (challenge) {
663+ // await helper.putRequest(`${config.V4_CHALLENGE_API_URL}/${legacyId}`, { param: _.omit(saveDraftContestDTO, ['groupsToBeAdded', 'groupsToBeDeleted']) }, m2mToken)
664+ // }
665+ // } catch (e) {
666+ // logger.warn('Failed to update the challenge via the V4 API')
667+ // logger.error(e)
668+ // }
669+
678670 if ( message . payload . status && challenge ) {
679671 // logger.info(`The status has changed from ${challenge.currentStatus} to ${message.payload.status}`)
680672 if ( message . payload . status === constants . challengeStatuses . Active && challenge . currentStatus !== constants . challengeStatuses . Active ) {
@@ -703,10 +695,10 @@ async function processUpdate (message) {
703695 } else {
704696 logger . info ( 'Will skip syncing phases as the challenge is a task...' )
705697 }
706- await updateMemberPayments ( message . payload . legacyId , message . payload . prizeSets , _ . get ( message , 'payload.updatedBy' ) || _ . get ( message , 'payload.createdBy' ) )
698+ await updateMemberPayments ( message . payload . legacyId , message . payload . prizeSets , updatedByUserId )
707699 await associateChallengeGroups ( saveDraftContestDTO . groupsToBeAdded , saveDraftContestDTO . groupsToBeDeleted , legacyId )
708- await associateChallengeTerms ( message . payload . terms , legacyId , _ . get ( message , 'payload.createdBy' ) , _ . get ( message , 'payload.updatedBy' ) || _ . get ( message , 'payload.createdBy' ) )
709- await setCopilotPayment ( message . payload . id , legacyId , _ . get ( message , 'payload.prizeSets' ) , _ . get ( message , 'payload.createdBy' ) , _ . get ( message , 'payload.updatedBy' ) || _ . get ( message , 'payload.createdBy' ) , m2mToken )
700+ await associateChallengeTerms ( message . payload . terms , legacyId , createdByUserId , updatedByUserId )
701+ await setCopilotPayment ( message . payload . id , legacyId , _ . get ( message , 'payload.prizeSets' ) , createdByUserId , updatedByUserId , m2mToken )
710702
711703 try {
712704 await helper . forceV4ESFeeder ( legacyId )
0 commit comments