@universis/candidates
Version:
Universis api server plugin for study program candidates, internship selection etc
48 lines (18 loc) • 2.48 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });exports.beforeSave = beforeSave;var _common = require("@themost/common");
var _data = require("@themost/data");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
beforeSaveAsync(_x) {return _beforeSaveAsync.apply(this, arguments);}
/**
* @param {DataEventArgs} event
* @param {Function} callback
*/function _beforeSaveAsync() {_beforeSaveAsync = _asyncToGenerator(function* (event) {// validate consent if current user is the owner of this object (candidate)
let owner = event.target.owner;const context = event.model.context;let agree = false;if (owner) {// get owner
owner = yield context.model('User').find(event.target.owner).select('name').silent().value();} else {if (event.state === _data.DataObjectState.Update) {owner = yield context.model('User').find(event.previous.owner).select('name').silent().value();} else {// throw error
throw new _common.DataNotFoundError('Action owner cannot be found or is inaccessible', null, event.model.name, event.target.id);}}if (owner === context.user.name) {if (Object.prototype.hasOwnProperty.call(event.target, 'agree')) {agree = event.target.agree;} else {if (event.state === _data.DataObjectState.Update) {agree = yield context.model(event.model.name).where('id').equal(event.target.id).select('agree').value();}}if (!agree) {throw Object.assign(new _common.DataError('ERR_CONSENT_REQUIRED', 'If consent is not provided, the application cannot be submitted', null, 'StudyProgramRegisterAction'), { statusCode: 409 });}}});return _beforeSaveAsync.apply(this, arguments);}function beforeSave(event, callback) {return beforeSaveAsync(event).then(() => {return callback();
}).catch(err => {
return callback(err);
});
}
//# sourceMappingURL=validate-consent-listener.js.map