Skip to content

Commit 6a6d435

Browse files
committed
small fixes for Weekly Surveys
1 parent 406c5a1 commit 6a6d435

File tree

2 files changed

+67
-41
lines changed

2 files changed

+67
-41
lines changed

src/common/surveyMonkey.js

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ const localLogger = {
2828
info: (message, context) => logger.info({ component: 'SurveyMonkeyAPI', context, message })
2929
}
3030

31-
function getRemainingRequestCountMessge (response) {
31+
function getRemainingRequestCountMessage (response) {
3232
return `today has sent ${response.header['x-ratelimit-app-global-day-limit'] - response.header['x-ratelimit-app-global-day-remaining']} requests`
3333
}
3434

35-
function getErrorMessage (e) {
36-
return {
37-
errorCode: _.get(e, 'response.body.error.http_status_code', 400),
38-
errorMessage: _.get(e, 'response.body.error.message', 'error message')
39-
}
35+
function enrichErrorMessage (e) {
36+
e.code = _.get(e, 'response.body.error.http_status_code')
37+
e.message = _.get(e, 'response.body.error.message', e.toString())
38+
39+
return e
4040
}
4141

4242
function getSingleItem (lst, errorMessage) {
@@ -72,12 +72,13 @@ async function searchCollector (collectorName) {
7272
.set('Content-Type', 'application/json')
7373
.set('Accept', 'application/json')
7474

75-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'searchCollector')
75+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'searchCollector')
7676

7777
return getSingleItem(response.body.data, 'More than 1 collector found by name ' + collectorName)
7878
} catch (e) {
79-
localLogger.error(`URL ${url} ${getErrorMessage(e)}, ${getRemainingRequestCountMessge(e.response)}`, 'searchCollector')
80-
throw getErrorMessage(e)
79+
const enrichedError = enrichErrorMessage(e)
80+
localLogger.error(`URL ${url} ERROR ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'searchCollector')
81+
throw enrichedError
8182
}
8283
}
8384

@@ -110,11 +111,12 @@ async function cloneCollector () {
110111
.set('Content-Type', 'application/json')
111112
.set('Accept', 'application/json')
112113
.send(body)
113-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'cloneCollector')
114+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'cloneCollector')
114115
return response.body.id
115116
} catch (e) {
116-
localLogger.error(`URL ${url} ${JSON.stringify(getErrorMessage(e))}, ${getRemainingRequestCountMessge(e.response)}`, 'cloneCollector')
117-
throw getErrorMessage(e)
117+
const enrichedError = enrichErrorMessage(e)
118+
localLogger.error(`URL ${url} ERROR ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'cloneCollector')
119+
throw enrichedError
118120
}
119121
}
120122

@@ -131,10 +133,11 @@ async function renameCollector (collectorId, name) {
131133
.set('Content-Type', 'application/json')
132134
.set('Accept', 'application/json')
133135
.send(body)
134-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'renameCollector')
136+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'renameCollector')
135137
} catch (e) {
136-
localLogger.error(`URL ${url} ${JSON.stringify(getErrorMessage(e))}, ${getRemainingRequestCountMessge(e.response)}`, 'renameCollector')
137-
throw getErrorMessage(e)
138+
const enrichedError = enrichErrorMessage(e)
139+
localLogger.error(`URL ${url} ERROR ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'renameCollector')
140+
throw enrichedError
138141
}
139142
}
140143

@@ -154,11 +157,12 @@ async function createMessage (collectorId) {
154157
.set('Content-Type', 'application/json')
155158
.set('Accept', 'application/json')
156159
.send(body)
157-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'createMessage')
160+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'createMessage')
158161
return response.body.id
159162
} catch (e) {
160-
localLogger.error(`URL ${url} ${JSON.stringify(getErrorMessage(e))}, ${getRemainingRequestCountMessge(e.response)}`, 'createMessage')
161-
throw getErrorMessage(e)
163+
const enrichedError = enrichErrorMessage(e)
164+
localLogger.error(`URL ${url} ERROR ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'createMessage')
165+
throw enrichedError
162166
}
163167
}
164168

@@ -182,11 +186,12 @@ async function upsertContactInSurveyMonkey (list) {
182186
.set('Accept', 'application/json')
183187
.send(body)
184188

185-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'upsertContactInSurveyMonkey')
189+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'upsertContactInSurveyMonkey')
186190
return _.concat(response.body.existing, response.body.succeeded)
187191
} catch (e) {
188-
localLogger.error(`URL ${url} ${JSON.stringify(getErrorMessage(e))}, ${getRemainingRequestCountMessge(e.response)}`, 'createMessage')
189-
throw getErrorMessage(e)
192+
const enrichedError = enrichErrorMessage(e)
193+
localLogger.error(`URL ${url} ERROR ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'createMessage')
194+
throw enrichedError
190195
}
191196
}
192197

@@ -200,11 +205,12 @@ async function addContactsToSurvey (collectorId, messageId, contactIds) {
200205
.set('Content-Type', 'application/json')
201206
.set('Accept', 'application/json')
202207
.send(body)
203-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'addContactsToSurvey')
208+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'addContactsToSurvey')
204209
return response.body.id
205210
} catch (e) {
206-
localLogger.error(`URL ${url} ${JSON.stringify(getErrorMessage(e))}, ${getRemainingRequestCountMessge(e.response)}`, 'addContactsToSurvey')
207-
throw getErrorMessage(e)
211+
const enrichedError = enrichErrorMessage(e)
212+
localLogger.error(`URL ${url} ERROR ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'addContactsToSurvey')
213+
throw enrichedError
208214
}
209215
}
210216

@@ -217,11 +223,12 @@ async function sendSurveyAPI (collectorId, messageId) {
217223
.set('Content-Type', 'application/json')
218224
.set('Accept', 'application/json')
219225
.send({})
220-
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessge(response)}`, 'sendSurveyAPI')
226+
localLogger.info(`URL ${url}, ${getRemainingRequestCountMessage(response)}`, 'sendSurveyAPI')
221227
return response.body.id
222228
} catch (e) {
223-
localLogger.error(`URL ${url} ${JSON.stringify(getErrorMessage(e))}, ${getRemainingRequestCountMessge(e.response)}`, 'sendSurveyAPI')
224-
throw getErrorMessage(e)
229+
const enrichedError = enrichErrorMessage(e)
230+
localLogger.error(`URL ${url} ${enrichedError}, ${getRemainingRequestCountMessage(e.response)}`, 'sendSurveyAPI')
231+
throw enrichedError
225232
}
226233
}
227234

src/services/SurveyService.js

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ const resourceBookingCache = {}
1010
const contactIdToWorkPeriodIdMap = {}
1111
const emailToWorkPeriodIdMap = {}
1212

13+
function buildSentSurveyError (e) {
14+
return {
15+
errorCode: _.get(e, 'code'),
16+
errorMessage: _.get(e, 'message', e.toString())
17+
}
18+
}
19+
1320
/**
1421
* Scheduler process entrance
1522
*/
@@ -37,7 +44,7 @@ async function sendSurveys () {
3744
let resourceBookings = await searchResourceBookings(currentUser, criteria, options)
3845
resourceBookings = resourceBookings.result
3946

40-
logger.info({ component: 'SurveyService', context: 'sendSurvey', message: 'load workPeriod successfullly' })
47+
logger.info({ component: 'SurveyService', context: 'sendSurvey', message: 'load workPeriod successfully' })
4148

4249
const workPeriods = _.flatten(_.map(resourceBookings, 'workPeriods'))
4350

@@ -85,9 +92,18 @@ async function sendSurveys () {
8592
emailToWorkPeriodIdMap[collectorName][resourceBookingCache[resourceBooking.userId].email] = workPeriod.id
8693
collectors[collectorName].contacts.push(resourceBookingCache[resourceBooking.userId])
8794
} catch (e) {
88-
await partiallyUpdateWorkPeriod(currentUser, workPeriod.id, { sentSurveyError: e })
95+
try {
96+
await partiallyUpdateWorkPeriod(
97+
currentUser,
98+
workPeriod.id,
99+
{ sentSurveyError: buildSentSurveyError(e) }
100+
)
101+
} catch (e) {
102+
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as failed for Work Period "${workPeriod.id}": ` + e.message })
103+
}
89104
}
90105
}
106+
91107
// add contacts
92108
for (const collectorName in collectors) {
93109
const collector = collectors[collectorName]
@@ -109,29 +125,32 @@ async function sendSurveys () {
109125
collector.contacts
110126
)
111127
await sendSurveyAPI(collector.collectorId, collector.messageId)
112-
} catch (e) {
113128
for (const contactId in contactIdToWorkPeriodIdMap[collectorName]) {
114129
try {
115-
await partiallyUpdateWorkPeriod(currentUser, contactIdToWorkPeriodIdMap[collectorName][contactId], { sentSurveyError: e })
130+
await partiallyUpdateWorkPeriod(currentUser, contactIdToWorkPeriodIdMap[collectorName][contactId], { sentSurvey: true })
116131
} catch (e) {
117-
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: 'Error : ' + e.message })
132+
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as sent for Work Period "${contactIdToWorkPeriodIdMap[collectorName][contactId]}": ` + e.message })
118133
}
119134
}
120-
continue
121-
}
122-
for (const contactId in contactIdToWorkPeriodIdMap[collectorName]) {
123-
try {
124-
await partiallyUpdateWorkPeriod(currentUser, contactIdToWorkPeriodIdMap[collectorName][contactId], { sentSurvey: true })
125-
} catch (e) {
126-
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: 'Error : ' + e.message })
135+
} catch (e) {
136+
for (const contactId in contactIdToWorkPeriodIdMap[collectorName]) {
137+
try {
138+
await partiallyUpdateWorkPeriod(
139+
currentUser,
140+
contactIdToWorkPeriodIdMap[collectorName][contactId],
141+
{ sentSurveyError: buildSentSurveyError(e) }
142+
)
143+
} catch (e) {
144+
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: `Error updating survey as failed for Work Period "${contactIdToWorkPeriodIdMap[collectorName][contactId]}": ` + e.message })
145+
}
127146
}
128147
}
129148
}
130149
}
131150

132-
logger.info({ component: 'SurveyService', context: 'sendSurvey', message: 'send survey successfullly' })
151+
logger.info({ component: 'SurveyService', context: 'sendSurvey', message: 'Processing weekly surveys is completed' })
133152
} catch (e) {
134-
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: 'Error : ' + e.message })
153+
logger.error({ component: 'SurveyService', context: 'sendSurvey', message: 'Error sending surveys: ' + e.message })
135154
}
136155
}
137156

0 commit comments

Comments
 (0)