UNPKG

pockybot

Version:

Spark bot that handles team recognition

60 lines (59 loc) 2.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultPmResultsService = void 0; const tableHelper_1 = require("../parsers/tableHelper"); const logger_1 = require("../logger"); const lineEnding = '\r\n'; class DefaultPmResultsService { constructor(database, webex, utilities, pegService, resultsService) { this.database = database; this.webex = webex; this.utilities = utilities; this.pegService = pegService; this.resultsService = resultsService; } async pmResults() { const fullData = await this.database.returnResults(); const allPegs = await this.pegService.getPegs(fullData); const fullResults = this.resultsService.getResults(allPegs); let columnWidths = tableHelper_1.default.getReceiverColumnWidths(fullResults); let pegsReceived = {}; // map table data fullResults.forEach((result) => { result.validPegsReceived.sort((a, b) => a.senderName.localeCompare(b.senderName)); pegsReceived[result.personId] = ''; pegsReceived[result.personId] += result.personName.toString().padEnd(columnWidths.receiver) + ' | ' + ''.padEnd(columnWidths.sender) + ' | ' + lineEnding; let firstPeg = true; let pegCount = result.validPegsReceived.length; result.validPegsReceived.forEach((peg) => { if (firstPeg) { pegsReceived[result.personId] += pegCount.toString().padEnd(columnWidths.receiver) + ' | ' + peg.senderName.padEnd(columnWidths.sender) + ' | ' + peg.comment + lineEnding; firstPeg = false; } else { pegsReceived[result.personId] += ''.padEnd(columnWidths.receiver) + ' | ' + peg.senderName.padEnd(columnWidths.sender) + ' | ' + peg.comment + lineEnding; } }); }); let fullSuccess = true; for (let receiver in pegsReceived) { try { this.webex.messages.create({ markdown: `Here are the pegs you have received this cycle: \`\`\` ${pegsReceived[receiver]} \`\`\``, toPersonId: receiver }); } catch (error) { logger_1.Logger.error(`[PmResultsService.pmResults] Error sending PM to user ${receiver}: ${error.message}`); fullSuccess = false; } } if (!fullSuccess) { throw new Error('Some users were unable to be PMed their results.'); } } } exports.DefaultPmResultsService = DefaultPmResultsService;