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

Commit 50a16de

Browse files
author
James Cori
committed
Merge branch 'develop' into fix-wm-974
2 parents bce1070 + 8684026 commit 50a16de

File tree

4 files changed

+69
-25
lines changed

4 files changed

+69
-25
lines changed

config/default.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ module.exports = {
7070

7171
V5_TERMS_NDA_ID: process.env.V5_TERMS_NDA_ID || '77f558c1-56fb-427c-b974-61ea0a060ca7',
7272
LEGACY_TERMS_NDA_ID: process.env.LEGACY_TERMS_NDA_ID || 21343,
73+
74+
V5_TERMS_STANDARD_ID: process.env.V5_TERMS_STANDARD_ID || 'e5811a7b-43d1-407a-a064-69e5015b4900',
75+
LEGACY_TERMS_STANDARD_ID: process.env.LEGACY_TERMS_STANDARD_ID || 21233,
76+
7377
LEGACY_SUBMITTER_ROLE_ID: process.env.LEGACY_SUBMITTER_ROLE_ID || 1,
7478

7579
COPILOT_PAYMENT_TYPE: process.env.COPILOT_PAYMENT_TYPE || 'copilot',

src/services/ProcessorService.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,34 @@ async function associateChallengeGroups (toBeAdded = [], toBeDeleted = [], legac
6868
* @param {String|Number} legacyChallengeId the legacy challenge ID
6969
*/
7070
async function associateChallengeTerms (v5Terms, legacyChallengeId, createdBy, updatedBy) {
71-
const nda = _.find(v5Terms, e => e.id === config.V5_TERMS_NDA_ID)
7271
const legacyTermsArray = await termsService.getTermsForChallenge(legacyChallengeId)
72+
const nda = _.find(v5Terms, e => e.id === config.V5_TERMS_NDA_ID)
7373
const legacyNDA = _.find(legacyTermsArray, e => _.toNumber(e.id) === _.toNumber(config.LEGACY_TERMS_NDA_ID))
7474

75+
const standardTerms = _.find(v5Terms, e => e.id === config.V5_TERMS_STANDARD_ID)
76+
const legacyStandardTerms = _.find(legacyTermsArray, e => _.toNumber(e.id) === _.toNumber(config.LEGACY_TERMS_STANDARD_ID))
77+
78+
if (standardTerms && standardTerms.id && !legacyStandardTerms) {
79+
logger.debug('Associate Challenge Terms - v5 Standard Terms exist, not in legacy. Adding to Legacy.')
80+
const m2mToken = await helper.getM2MToken()
81+
const v5Term = await getV5Terms(standardTerms.id, m2mToken)
82+
await termsService.addTermsToChallenge(legacyChallengeId, v5Term.legacyId, config.LEGACY_SUBMITTER_ROLE_ID, createdBy, updatedBy)
83+
} else if (!standardTerms && legacyStandardTerms && legacyStandardTerms.id) {
84+
logger.debug('Associate Challenge Terms - Legacy NDA exist, not in V5. Removing from Legacy.')
85+
await termsService.removeTermsFromChallenge(legacyChallengeId, legacyStandardTerms.id, config.LEGACY_SUBMITTER_ROLE_ID)
86+
}
87+
7588
if (nda && nda.id && !legacyNDA) {
7689
logger.debug('Associate Challenge Terms - v5 NDA exist, not in legacy. Adding to Legacy.')
7790
const m2mToken = await helper.getM2MToken()
7891
const v5Term = await getV5Terms(nda.id, m2mToken)
79-
return termsService.addTermsToChallenge(legacyChallengeId, v5Term.legacyId, config.LEGACY_SUBMITTER_ROLE_ID, createdBy, updatedBy)
80-
}
81-
82-
if (!nda && legacyNDA && legacyNDA.id) {
92+
await termsService.addTermsToChallenge(legacyChallengeId, v5Term.legacyId, config.LEGACY_SUBMITTER_ROLE_ID, createdBy, updatedBy, true)
93+
} else if (!nda && legacyNDA && legacyNDA.id) {
8394
logger.debug('Associate Challenge Terms - Legacy NDA exist, not in V5. Removing from Legacy.')
84-
return termsService.removeTermsFromChallenge(legacyChallengeId, legacyNDA.id, config.LEGACY_SUBMITTER_ROLE_ID)
95+
await termsService.removeTermsFromChallenge(legacyChallengeId, legacyNDA.id, config.LEGACY_SUBMITTER_ROLE_ID, true)
8596
}
8697

87-
logger.debug('Associate Challenge Terms - Nothing to Do')
98+
// logger.debug('Associate Challenge Terms - Nothing to Do')
8899
}
89100

90101
/**
@@ -507,7 +518,24 @@ async function processUpdate (message) {
507518
for (const metadataKey of _.keys(constants.supportedMetadata)) {
508519
const entry = _.find(message.payload.metadata, meta => meta.name === metadataKey)
509520
if (entry) {
510-
await metadataService.createOrUpdateMetadata(message.payload.legacyId, constants.supportedMetadata[metadataKey], entry.value, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
521+
if (metadataKey === 'submissionLimit') {
522+
// data here is JSON stringified
523+
try {
524+
const parsedEntryValue = JSON.parse(entry.value)
525+
if (parsedEntryValue.limit) {
526+
entry.value = parsedEntryValue.count
527+
} else {
528+
entry.value = null
529+
}
530+
} catch (e) {
531+
entry.value = null
532+
}
533+
}
534+
try {
535+
await metadataService.createOrUpdateMetadata(message.payload.legacyId, constants.supportedMetadata[metadataKey], entry.value, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
536+
} catch (e) {
537+
logger.warn(`Failed to set ${metadataKey} (${constants.supportedMetadata[metadataKey]})`)
538+
}
511539
}
512540
}
513541
}

src/services/metadataService.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const helper = require('../common/helper')
99
const QUERY_GET_ENTRY = 'SELECT value FROM project_info WHERE project_id = %d and project_info_type_id = %d'
1010
const QUERY_CREATE = 'INSERT INTO project_info (project_id, project_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (?, ?, ?, ?, CURRENT, ?, CURRENT)'
1111
const QUERY_UPDATE = 'UPDATE project_info SET value = ?, modify_user = ?, modify_date = CURRENT WHERE project_info_type_id = ? AND project_id = ?'
12+
const QUERY_DELETE = 'DELETE FROM project_info WHERE project_id = ? and project_info_type_id = ?'
1213

1314
/**
1415
* Prepare Informix statement
@@ -32,7 +33,7 @@ async function getMetadataEntry (challengeLegacyId, typeId) {
3233
const connection = await helper.getInformixConnection()
3334
let result = null
3435
try {
35-
result = await connection.queryAsync(util.format(QUERY_GET_ENTRY, challengeLegacyId, 11))
36+
result = await connection.queryAsync(util.format(QUERY_GET_ENTRY, challengeLegacyId, typeId))
3637
} catch (e) {
3738
logger.error(`Error in 'getMetadataEntry' ${e}`)
3839
throw e
@@ -56,9 +57,17 @@ async function createOrUpdateMetadata (challengeLegacyId, typeId, value, created
5657
// await connection.beginTransactionAsync()
5758
const [existing] = await getMetadataEntry(challengeLegacyId, typeId)
5859
if (existing) {
59-
const query = await prepare(connection, QUERY_UPDATE)
60-
result = await query.executeAsync([value, createdBy, typeId, challengeLegacyId])
60+
if (value) {
61+
logger.info(`Metadata ${typeId} exists. Will update`)
62+
const query = await prepare(connection, QUERY_UPDATE)
63+
result = await query.executeAsync([value, createdBy, typeId, challengeLegacyId])
64+
} else {
65+
logger.info(`Metadata ${typeId} exists. Will delete`)
66+
const query = await prepare(connection, QUERY_DELETE)
67+
result = await query.executeAsync([challengeLegacyId, typeId])
68+
}
6169
} else {
70+
logger.info(`Metadata ${typeId} does not exist. Will create`)
6271
const query = await prepare(connection, QUERY_CREATE)
6372
result = await query.executeAsync([challengeLegacyId, typeId, value, createdBy, createdBy])
6473
}

src/services/termsService.js

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async function getTermsForChallenge (challengeLegacyId) {
4343
return _.map(result, r => ({ id: r.terms_of_use_id, roleId: r.resource_role_id }))
4444
}
4545

46-
async function addTermsToChallenge (challengeLegacyId, legacyTermsId, legacyResourceRoleId, createdBy, updatedBy) {
46+
async function addTermsToChallenge (challengeLegacyId, legacyTermsId, legacyResourceRoleId, createdBy, updatedBy, isNDA = false) {
4747
const connection = await helper.getInformixConnection()
4848
let result = null
4949
try {
@@ -53,17 +53,18 @@ async function addTermsToChallenge (challengeLegacyId, legacyTermsId, legacyReso
5353
const query = await prepare(connection, QUERY_INSERT_CHALLENGE_TERMS)
5454
result = await query.executeAsync([challengeLegacyId, legacyResourceRoleId, legacyTermsId])
5555

56-
logger.debug(`Creating Terms - deleting project info record for ${challengeLegacyId}`)
57-
// make sure there are no project info records
58-
const piqueryDelete = await prepare(connection, QUERY_DELETE_PROJECT_INFO_CHALLENGE_TERMS)
59-
await piqueryDelete.executeAsync([challengeLegacyId])
60-
61-
logger.debug(`Creating Terms - adding project info record for ${challengeLegacyId} ${legacyTermsId} === ${config.LEGACY_TERMS_NDA_ID}`)
62-
// add the project info record for the `Confidentiality Type`
63-
const termsProjectInfoValue = (legacyTermsId.toString() === config.LEGACY_TERMS_NDA_ID.toString()) ? 'standard_cca' : 'public'
64-
const piquery = await prepare(connection, QUERY_INSERT_PROJECT_INFO_CHALLENGE_TERMS)
65-
await piquery.executeAsync([challengeLegacyId, termsProjectInfoValue, createdBy, updatedBy])
56+
if (isNDA) {
57+
logger.debug(`Creating Terms - deleting project info record for ${challengeLegacyId}`)
58+
// make sure there are no project info records
59+
const piqueryDelete = await prepare(connection, QUERY_DELETE_PROJECT_INFO_CHALLENGE_TERMS)
60+
await piqueryDelete.executeAsync([challengeLegacyId])
6661

62+
logger.debug(`Creating Terms - adding project info record for ${challengeLegacyId} ${legacyTermsId} === ${config.LEGACY_TERMS_NDA_ID}`)
63+
// add the project info record for the `Confidentiality Type`
64+
const termsProjectInfoValue = (legacyTermsId.toString() === config.LEGACY_TERMS_NDA_ID.toString()) ? 'standard_cca' : 'public'
65+
const piquery = await prepare(connection, QUERY_INSERT_PROJECT_INFO_CHALLENGE_TERMS)
66+
await piquery.executeAsync([challengeLegacyId, termsProjectInfoValue, createdBy, updatedBy])
67+
}
6768
await connection.commitTransactionAsync()
6869
} catch (e) {
6970
logger.error(`Error in 'addTermsToChallenge' ${e}, rolling back transaction`)
@@ -76,16 +77,18 @@ async function addTermsToChallenge (challengeLegacyId, legacyTermsId, legacyReso
7677
return result
7778
}
7879

79-
async function removeTermsFromChallenge (challengeLegacyId, legacyTermsId, legacyResourceRoleId) {
80+
async function removeTermsFromChallenge (challengeLegacyId, legacyTermsId, legacyResourceRoleId, isNDA = false) {
8081
const connection = await helper.getInformixConnection()
8182
let result = null
8283
try {
8384
await connection.beginTransactionAsync()
8485
const query = await prepare(connection, QUERY_DELETE_CHALLENGE_TERMS)
8586
result = await query.executeAsync([challengeLegacyId, legacyResourceRoleId, legacyTermsId])
8687

87-
const piquery = await prepare(connection, QUERY_DELETE_PROJECT_INFO_CHALLENGE_TERMS)
88-
await piquery.executeAsync([challengeLegacyId])
88+
if (isNDA) {
89+
const piquery = await prepare(connection, QUERY_DELETE_PROJECT_INFO_CHALLENGE_TERMS)
90+
await piquery.executeAsync([challengeLegacyId])
91+
}
8992

9093
await connection.commitTransactionAsync()
9194
} catch (e) {

0 commit comments

Comments
 (0)