UNPKG

@universis/candidates

Version:

Universis api server plugin for study program candidates, internship selection etc

77 lines (18 loc) 3.02 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.afterSave = afterSave;var _mailer = require("@themost/mailer"); var _common = require("@themost/common");function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};} /** * @param {DataEventArgs} event */function afterSaveAsync(_x) {return _afterSaveAsync.apply(this, arguments);} /** * @param {DataEventArgs} event * @param {Function} callback */function _afterSaveAsync() {_afterSaveAsync = _asyncToGenerator(function* (event) {if (event.state === 1) {const context = event.model.context;const recipient = yield context.model('Account').find(event.target.recipient).silent().getItem();if (recipient == null) {return;} // get mail template const mailTemplate = yield context.model('MailConfiguration').where('target').equal('CandidateSendEmailAfterMessage').silent().getItem();if (mailTemplate == null) {return;} /** * @type {import('@themost/mailer').MailerHelper} */const mailer = (0, _mailer.getMailer)(context); // get parent action data const item = yield context.model('StudyProgramRegisterAction').where('id').equal(event.target.action).expand({ name: 'candidate', options: { $expand: 'person' } }, 'owner').silent().getItem();if (item) {if (recipient.id !== item.owner.id) {return;} // check if candidate's email exists const email = item.candidate.person.email;if (email == null || typeof email !== 'string') {_common.TraceUtils.warn(`Cannot send email for ${item.candidate.person.familyName} ${item.candidate.person.givenName}. Candidate [${item.candidate.inscriptionNumber}] email does not exist.`);return;}yield new Promise(resolve => {mailer.template(mailTemplate.template).subject(mailTemplate.subject).bcc(mailTemplate.bcc || '').to(email).send({ model: item }, err => {if (err) {try {_common.TraceUtils.error('An error occurred while trying to send an email notification after candidate message.');_common.TraceUtils.error(`candidate=${item.candidate.id}, template=${mailTemplate.template}`);_common.TraceUtils.error(err);} catch (err1) {// do nothing }return resolve();}return resolve();});});}}});return _afterSaveAsync.apply(this, arguments);}function afterSave(event, callback) {return afterSaveAsync(event).then(() => {return callback();}).catch(err => {return callback(err);}); } //# sourceMappingURL=send-mail-after-message-listener.js.map