courtbot-engine
Version:
An engine for courtbot-like functionality to be included in city/county services sites.
68 lines (52 loc) • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (opt) {
var options = (0, _defaultOptions2.default)(opt);
var registrationSource = (0, _sources.registrationSourceFn)(options.dbUrl);
var logger = _log4js2.default.getLogger("checkMissingCases");
logger.info("Checking for missing cases...");
return registrationSource.getRegistrationsByState(_registrationState2.default.UNBOUND).then(function (registrations) {
return Promise.all(registrations.map(function (r) {
return (0, _events.getCaseParties)(r.case_number).then(function (parties) {
logger.debug("parties returned from search:", parties);
if (parties.length != 0) {
if (parties.length > 1) {
logger.debug("Multiple parties found.");
return (0, _events.sendNonReplyMessage)(r.contact, _messaging2.default.askParty(r.contact, r, parties), r.communication_type).then(function () {
return registrationSource.updateRegistrationState(r.registration_id, _registrationState2.default.ASKED_PARTY);
});
} else if (parties.length == 1) {
logger.debug("Single party found");
return registrationSource.updateRegistrationName(r.registration_id, parties[0].name).then(function () {
return (0, _events.sendNonReplyMessage)(r.contact, _messaging2.default.askReminder(r.contact, r, parties[0]), r.communication_type);
}).then(function () {
return registrationSource.updateRegistrationState(r.registration_id, _registrationState2.default.ASKED_REMINDER);
});
}
} else if ((0, _moment2.default)(parties.create_date).diff((0, _moment2.default)(), 'days') > options.UnboundTTL) {
logger.debug("Expired registration found.");
return (0, _events.sendNonReplyMessage)(r.phone, _messaging2.default.expiredRegistration(r), options).then(function () {
return registrationSource.updateRegistrationState(r.registration_id, _registrationState2.default.UNSUBSCRIBED);
});
}
});
}));
}).catch(function (err) {
return logger.error("Error checking missing cases:", err);
});
};
var _moment = require("moment");
var _moment2 = _interopRequireDefault(_moment);
var _defaultOptions = require("./defaultOptions");
var _defaultOptions2 = _interopRequireDefault(_defaultOptions);
var _sources = require("./sources");
var _registrationState = require("./registrationState");
var _registrationState2 = _interopRequireDefault(_registrationState);
var _events = require("./events");
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 }; }