UNPKG

courtbot-engine

Version:

An engine for courtbot-like functionality to be included in city/county services sites.

76 lines (55 loc) 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (opt) { var options = (0, _defaultOptions2.default)(opt); var registrationSource = (0, _sources.registrationSourceFn)(options.dbUrl); return registrationSource.getRegistrationsByState(_registrationState2.default.REMINDING).then(function (registrations) { if (registrations.length == 0) { log.info("No records to process."); return; } return Promise.all(registrations.map(function (r) { return (0, _events.getCasePartyEvents)(r.case_number, r.name).then(function (events) { return events.filter(function (x) { var theDate = isNaN((0, _momentTimezone2.default)(x.date)) ? (0, _momentTimezone2.default)(x.date.replace(" at ", " "), "dddd, MMMM D, YYYY h:mm A") : (0, _momentTimezone2.default)(x.date).tz(options.timeZoneName || "America/Chicago"); var theDiff = theDate.diff((0, _momentTimezone2.default)(), 'days', true); x.date = theDate.format("LLL"); var isInReminderPeriod = theDiff < options.reminderDaysOut && theDiff >= 0; log.debug("Event at " + theDiff + " days out, which " + (isInReminderPeriod ? "is" : "is not") + " in the reminder period of " + options.reminderDaysOut + "."); return isInReminderPeriod; }); }).then(function (events) { return Promise.all(events.map(function (e) { return registrationSource.getSentMessage(r.contact, r.communication_type, r.name, e.date, e.description, r.case_number).then(function (d) { if (d.length == 0) { var message = _messaging2.default.reminder(r, e); return (0, _events.sendNonReplyMessage)(r.contact, message, r.communication_type).then(function () { return registrationSource.createSentMessage(r.contact, r.communication_type, r.name, e.date, e.description, r.case_number); }); } else { log.info("already sent ", _messaging2.default.reminder(r, e), "to", r.phone); } }); })); }).catch(function (err) { return log.error("Error sending reminders for " + r.casenumber + ": " + err.toString()); }); })); }); }; var _momentTimezone = require("moment-timezone"); var _momentTimezone2 = _interopRequireDefault(_momentTimezone); var _events = require("./events"); var _defaultOptions = require("./defaultOptions"); var _defaultOptions2 = _interopRequireDefault(_defaultOptions); var _sources = require("./sources"); var _registrationState = require("./registrationState"); var _registrationState2 = _interopRequireDefault(_registrationState); var _log4js = require("log4js"); var _log4js2 = _interopRequireDefault(_log4js); var _messaging = require("./messaging"); var _messaging2 = _interopRequireDefault(_messaging); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var log = _log4js2.default.getLogger("send-due-reminders");