Skip to content

Commit

Permalink
Merge pull request #458 from topcoder-platform/hotfix/send-survey-wor…
Browse files Browse the repository at this point in the history
…kperiods

[PROD][HOTFIX] Send surveys for workperiods
  • Loading branch information
nkumar-topcoder committed Aug 10, 2021
2 parents 5d02723 + feb14c0 commit 4956c05
Showing 1 changed file with 11 additions and 17 deletions.
28 changes: 11 additions & 17 deletions src/services/SurveyService.js
Expand Up @@ -7,8 +7,6 @@ const { getUserById, getMemberDetailsByHandle } = require('../common/helper')
const { getCollectorName, createCollector, createMessage, upsertContactInSurveyMonkey, addContactsToSurvey, sendSurveyAPI } = require('../common/surveyMonkey')

const resourceBookingCache = {}
const contactIdToWorkPeriodIdMap = {}
const emailToWorkPeriodIdMap = {}

function buildSentSurveyError (e) {
return {
Expand Down Expand Up @@ -62,15 +60,16 @@ async function sendSurveys () {
const collectorId = await createCollector(collectorName)
const messageId = await createMessage(collectorId)
// create map
contactIdToWorkPeriodIdMap[collectorName] = {}
emailToWorkPeriodIdMap[collectorName] = {}
collectors[collectorName] = {
workPeriodIds: [],
collectorId,
messageId,
contacts: []
}
}

collectors[collectorName].workPeriodIds.push(workPeriod.id)

const resourceBooking = _.find(resourceBookings, (r) => r.id === workPeriod.resourceBookingId)
const userInfo = {}
if (!resourceBookingCache[resourceBooking.userId]) {
Expand All @@ -89,7 +88,6 @@ async function sendSurveys () {
resourceBookingCache[resourceBooking.userId] = userInfo
}
}
emailToWorkPeriodIdMap[collectorName][resourceBookingCache[resourceBooking.userId].email] = workPeriod.id
collectors[collectorName].contacts.push(resourceBookingCache[resourceBooking.userId])
} catch (e) {
try {
Expand All @@ -105,17 +103,13 @@ async function sendSurveys () {
}

// add contacts
for (const collectorName in collectors) {
for (const collectorName of _.keys(collectors)) {
const collector = collectors[collectorName]
collectors[collectorName].contacts = await upsertContactInSurveyMonkey(collector.contacts)

for (const contact of collectors[collectorName].contacts) {
contactIdToWorkPeriodIdMap[collectorName][contact.id] = emailToWorkPeriodIdMap[collectorName][contact.email]
}
}

// send surveys
for (const collectorName in collectors) {
for (const collectorName of _.keys(collectors)) {
const collector = collectors[collectorName]
if (collector.contacts.length) {
try {
Expand All @@ -125,23 +119,23 @@ async function sendSurveys () {
collector.contacts
)
await sendSurveyAPI(collector.collectorId, collector.messageId)
for (const contactId in contactIdToWorkPeriodIdMap[collectorName]) {
for (const workPeriodId of collectors[collectorName].workPeriodIds) {
try {
await partiallyUpdateWorkPeriod(currentUser, contactIdToWorkPeriodIdMap[collectorName][contactId], { sentSurvey: true })
await partiallyUpdateWorkPeriod(currentUser, workPeriodId, { sentSurvey: true })
} catch (e) {
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as sent for Work Period "${contactIdToWorkPeriodIdMap[collectorName][contactId]}": ` + e.message })
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as sent for Work Period "${workPeriodId}": ` + e.message })
}
}
} catch (e) {
for (const contactId in contactIdToWorkPeriodIdMap[collectorName]) {
for (const workPeriodId of collectors[collectorName].workPeriodIds) {
try {
await partiallyUpdateWorkPeriod(
currentUser,
contactIdToWorkPeriodIdMap[collectorName][contactId],
workPeriodId,
{ sentSurveyError: buildSentSurveyError(e) }
)
} catch (e) {
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as failed for Work Period "${contactIdToWorkPeriodIdMap[collectorName][contactId]}": ` + e.message })
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as failed for Work Period "${workPeriodId}": ` + e.message })
}
}
}
Expand Down

0 comments on commit 4956c05

Please sign in to comment.