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

Commit 8221e17

Browse files
Write to project_payments
1 parent f40c11e commit 8221e17

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed

src/constants.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const challengeStatuses = {
4646
}
4747

4848
const PhaseStatusTypes = {
49+
Scheduled: 1,
4950
Open: 2,
5051
Closed: 3
5152
}

src/services/ProcessorService.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,17 @@ async function syncChallengePhases (legacyId, v5Phases) {
3434
if (v5Equivalent.duration * 1000 !== phase.duration ||
3535
(v5Equivalent.isOpen && _.toInteger(phase.phase_status_id) === constants.PhaseStatusTypes.Closed) ||
3636
(!v5Equivalent.isOpen && _.toInteger(phase.phase_status_id) === constants.PhaseStatusTypes.Open)) {
37+
const newStatus = v5Equivalent.isOpen
38+
? constants.PhaseStatusTypes.Open
39+
: (new Date().getTime() >= new Date(v5Equivalent.scheduledStartDate).getTime() ? constants.PhaseStatusTypes.Scheduled : constants.PhaseStatusTypes.Closed)
3740
// update phase
3841
await timelineService.updatePhase(
3942
phase.project_phase_id,
4043
legacyId,
4144
v5Equivalent.scheduledStartDate,
4245
v5Equivalent.scheduledEndDate,
4346
v5Equivalent.duration * 1000,
44-
v5Equivalent.isOpen ? constants.PhaseStatusTypes.Open : constants.PhaseStatusTypes.Closed)
47+
newStatus)
4548
}
4649
}
4750
}

src/services/copilotPaymentService.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const COPILOT_PAYMENT_PROJECT_INFO_ID = 49
77
const COPILOT_PAYMENT_RESOURCE_INFO_ID = 7
88
const COPILOT_PAYMENT_TYPE_ID = 15
99
const COPILOT_RESOURCE_ROLE_ID = 14
10+
const PROJECT_PAYMENT_COPILOT_PAYMENT_TYPE_ID = 4
1011

1112
const QUERY_GET_COPILOT_RESOURCE_FOR_CHALLENGE = `SELECT limit 1 resource_id as resourceid FROM resource WHERE project_id = %d AND resource_role_id = ${COPILOT_RESOURCE_ROLE_ID}`
1213
// const QUERY_GET_COPILOT_PROJECT_INFO = `select * from resource_info where resource_id = ? AND resource_info_type_id = ${COPILOT_PAYMENT_RESOURCE_INFO_ID}`
@@ -37,6 +38,11 @@ const QUERY_SELECT_PAYMENT_TYPE = `SELECT value FROM resource_info WHERE resourc
3738
const QUERY_INSERT_PAYMENT_TYPE = `INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (?, ${COPILOT_PAYMENT_TYPE_ID}, ?, ?, CURRENT, ?, CURRENT)`
3839
const QUERY_UPDATE_PAYMENT_TYPE = `UPDATE resource_info SET value = ?, modify_user = ?, modify_date = CURRENT WHERE resource_id = ? AND resource_info_type_id = ${COPILOT_PAYMENT_TYPE_ID}`
3940

41+
const QUERY_SELECT_PROJECT_PAYMENT = `SELECT amount FROM project_payment where resource_id = %d AND project_payment_type_id = ${PROJECT_PAYMENT_COPILOT_PAYMENT_TYPE_ID}`
42+
const QUERY_INSERT_PROJECT_PAYMENT = `INSERT INTO project_payment (project_payment_type_id, resource_id, amount, create_user, create_date, modify_user, modify_date) VALUES (${PROJECT_PAYMENT_COPILOT_PAYMENT_TYPE_ID}, ?, ?, ?, CURRENT, ?, CURRENT)`
43+
const QUERY_UPDATE_PROJECT_PAYMENT = `UPDATE project_payment SET amount = ?, modify_user = ?, modify_date = CURRENT WHERE resource_id = ? AND project_payment_type_id = ${PROJECT_PAYMENT_COPILOT_PAYMENT_TYPE_ID}`
44+
const QUERY_DELETE_PROJECT_PAYMENT = `DELETE FROM project_payment WHERE project_payment_type_id = ${PROJECT_PAYMENT_COPILOT_PAYMENT_TYPE_ID} AND resource_id = ?`
45+
4046
/**
4147
* Prepare Informix statement
4248
* @param {Object} connection the Informix connection
@@ -92,6 +98,7 @@ async function setCopilotPayment (challengeLegacyId, amount, createdBy, updatedB
9298
await connection.beginTransactionAsync()
9399
const copilotResourceId = await getCopilotResourceId(connection, challengeLegacyId)
94100
const copilotPayment = await getCopilotPayment(connection, challengeLegacyId)
101+
const copilotProjectPayment = await getCopilotProjectPayment(connection, copilotResourceId)
95102
if (amount !== null && amount >= 0) {
96103
if (copilotPayment) {
97104
logger.debug(`Copilot payment exists, updating: ${challengeLegacyId}`)
@@ -100,9 +107,17 @@ async function setCopilotPayment (challengeLegacyId, amount, createdBy, updatedB
100107
logger.debug(`NO Copilot payment exists, creating: ${challengeLegacyId}`)
101108
await createCopilotPayment(connection, challengeLegacyId, amount, createdBy)
102109
}
110+
if (copilotProjectPayment) {
111+
logger.debug(`Copilot project payment exists, updating: ${challengeLegacyId}`)
112+
await updateCopilotProjectPayment(connection, copilotResourceId, amount, updatedBy)
113+
} else {
114+
logger.debug(`NO Copilot project payment exists, creating: ${challengeLegacyId}`)
115+
await createCopilotProjectPayment(connection, copilotResourceId, amount, createdBy)
116+
}
103117
} else {
104118
logger.debug(`No copilot assigned, removing any payments for legacy ID: ${challengeLegacyId}`)
105119
await deleteCopilotPayment(connection, challengeLegacyId)
120+
await deleteCopilotProjectPayment(connection, copilotResourceId)
106121
}
107122
await connection.commitTransactionAsync()
108123
} catch (e) {
@@ -215,6 +230,53 @@ async function deleteCopilotPayment (connection, challengeLegacyId) {
215230
await query.executeAsync([challengeLegacyId])
216231
}
217232

233+
/**
234+
* Gets the copilot payment from the project payment table
235+
* @param {Object} connection
236+
* @param {Number} copilotResourceId
237+
*/
238+
async function getCopilotProjectPayment (connection, copilotResourceId) {
239+
const result = await connection.queryAsync(util.format(QUERY_SELECT_PROJECT_PAYMENT, copilotResourceId))
240+
return _.get(result, '[0]', null)
241+
}
242+
243+
/**
244+
* Create the copilot payment record in the project payments table
245+
* @param {Object} connection the connection
246+
* @param {Number} copilotResourceId the copilot resource id
247+
* @param {Number} amount the $ amount of the copilot payment
248+
* @param {String} createdBy the create user handle
249+
*/
250+
async function createCopilotProjectPayment (connection, copilotResourceId, amount, createdBy) {
251+
const query = await prepare(connection, QUERY_INSERT_PROJECT_PAYMENT)
252+
logger.debug(`Create Copilot Project Payment Values: ${[copilotResourceId, amount, createdBy, createdBy]}`)
253+
await query.executeAsync([copilotResourceId, amount, createdBy, createdBy])
254+
}
255+
256+
/**
257+
* Update the existing copilot payment for a legacyId
258+
* @param {Object} connection
259+
* @param {Number} copilotResourceId
260+
* @param {Number} newValue
261+
* @param {String} updatedBy the update user handle
262+
*/
263+
async function updateCopilotProjectPayment (connection, copilotResourceId, newValue, updatedBy) {
264+
const query = await prepare(connection, QUERY_UPDATE_PROJECT_PAYMENT)
265+
logger.debug(`Update Copilot Project Payment Query Values: ${[newValue, updatedBy, copilotResourceId]}`)
266+
await query.executeAsync([newValue, updatedBy, copilotResourceId])
267+
}
268+
269+
/**
270+
* Delete the existing copilot payment for a legacyId
271+
* @param {Object} connection
272+
* @param {Number} challengeLegacyId
273+
*/
274+
async function deleteCopilotProjectPayment (connection, copilotResourceId) {
275+
const query = await prepare(connection, QUERY_DELETE_PROJECT_PAYMENT)
276+
logger.debug(`Delete Copilot Project Payment Values: ${[copilotResourceId]}`)
277+
await query.executeAsync([copilotResourceId])
278+
}
279+
218280
module.exports = {
219281
setManualCopilotPayment,
220282
setCopilotPayment

0 commit comments

Comments
 (0)