@universis/candidates
Version:
Universis api server plugin for study program candidates, internship selection etc
74 lines (64 loc) • 3.67 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });exports.beforeRemove = beforeRemove;exports.beforeSave = beforeSave;var _data = require("@themost/data");
var _util = require("util");
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
beforeRemoveAsync(_x) {return _beforeRemoveAsync.apply(this, arguments);}
/**
* @param {DataEventArgs} event
* @param {Function} callback
*/function _beforeRemoveAsync() {_beforeRemoveAsync = _asyncToGenerator(function* (event) {const context = event.model.context; // remove also attachment types
const attachmentTypes = yield context.model('EnrollmentAttachmentConfiguration').where('object').equal(event.target.identifier).silent().getItems();yield context.model('EnrollmentAttachmentConfiguration').remove(attachmentTypes);});return _beforeRemoveAsync.apply(this, arguments);}function beforeRemove(event, callback) {
return beforeRemoveAsync(event).then(() => {
return callback();
}).catch(err => {
return callback(err);
});
}
/**
* @param {DataEventArgs} event
* @param {Function} callback
*/
function beforeSave(event, callback) {
return beforeSaveAsync(event).then(() => {
return callback();
}).catch(err => {
return callback(err);
});
}
/**
* @param {DataEventArgs} event
*/function
beforeSaveAsync(_x2) {return _beforeSaveAsync.apply(this, arguments);}function _beforeSaveAsync() {_beforeSaveAsync = _asyncToGenerator(function* (event) {
// operate only if target object has the autoRegisterCourses property
if (!event.target.hasOwnProperty('autoRegisterCourses')) {
return;
}
// get previous and target states
const previousAutoRegisterValue = event.state === _data.DataObjectState.Insert ?
null : event.previous && event.previous.autoRegisterCourses;
const targetAutoRegisterValue = event.target.autoRegisterCourses;
// exit if this is an update operation and the value has not changed
// or if this is an insert operation and the value is null or false
if (event.state === _data.DataObjectState.Update && previousAutoRegisterValue === targetAutoRegisterValue ||
event.state === _data.DataObjectState.Insert && !targetAutoRegisterValue) {
return;
}
// validate StudyProgramEnrollmentEvent/ModifyAutoCourseRegistration execute permission
const canModifyAutoRegisterValue = {
model: event.model,
privilege: `${event.model.name}/ModifyAutoCourseRegistration`,
mask: _data.PermissionMask.Execute,
target: event.target,
throwError: false };
const validator = new _data.DataPermissionEventListener();
const validateAsync = (0, _util.promisify)(validator.validate);
yield validateAsync(canModifyAutoRegisterValue);
if (canModifyAutoRegisterValue.result === true) {
return;
}
// throw forbidden error
throw new _common.HttpForbiddenError();
});return _beforeSaveAsync.apply(this, arguments);}
//# sourceMappingURL=study-program-enrollment-event-listener.js.map