pockybot
Version:
Spark bot that handles team recognition
60 lines (59 loc) • 2.66 kB
JavaScript
;
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;