UNPKG

@universis/candidates

Version:

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

254 lines (103 loc) 11 kB
"use strict";var _data = require("@themost/data"); var _EnableAttachmentModel = _interopRequireDefault(require("./EnableAttachmentModel")); var _common = require("@themost/common");var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _class;function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}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);});};}function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {var desc = {};Object.keys(descriptor).forEach(function (key) {desc[key] = descriptor[key];});desc.enumerable = !!desc.enumerable;desc.configurable = !!desc.configurable;if ('value' in desc || desc.initializer) {desc.writable = true;}desc = decorators.slice().reverse().reduce(function (desc, decorator) {return decorator(target, property, desc) || desc;}, desc);if (context && desc.initializer !== void 0) {desc.value = desc.initializer ? desc.initializer.call(context) : void 0;desc.initializer = undefined;}if (desc.initializer === void 0) {Object.defineProperty(target, property, desc);desc = null;}return desc;} function tryCloseStream(stream) { if (stream && typeof stream.close === 'function') { try { stream.close(); } catch (error) { _common.TraceUtils.warn(`(tryCloseStream) An error occurred while trying to close a stream.`); _common.TraceUtils.warn(error); } } }let StudyProgramRegisterAction = (_dec = _data.EdmMapping.param('extraAttributes', 'Object', true, true), _dec2 = _data.EdmMapping.param('file', _data.EdmType.EdmStream, false), _dec3 = _data.EdmMapping.action('AddAttachment', 'Attachment'), _dec4 = _data.EdmMapping.param('attachment', 'Attachment', true, true), _dec5 = _data.EdmMapping.action('RemoveAttachment', 'Attachment'), _dec6 = _data.EdmMapping.param('items', _data.EdmType.CollectionOf('CourseClassRegisterAction'), true, true), _dec7 = _data.EdmMapping.action('CourseRegistrations', _data.EdmType.CollectionOf('CourseClassRegisterAction')), _dec8 = _data.EdmMapping.param('items', _data.EdmType.CollectionOf('InternshipRegisterAction'), true, true), _dec9 = _data.EdmMapping.action('InternshipRegistrations', _data.EdmType.CollectionOf('InternshipRegisterAction')), _dec10 = _data.EdmMapping.param('item', 'StudyProgramRegisterActionMessage', true, true), _dec11 = _data.EdmMapping.action('messages', 'StudyProgramRegisterActionMessage'), _dec12 = _data.EdmMapping.func('review', 'StudyProgramRegisterActionReview'), _dec13 = _data.EdmMapping.param('item', 'StudyProgramRegisterActionReview', true, true), _dec14 = _data.EdmMapping.action('review', 'StudyProgramRegisterActionReview'), _dec15 = _data.EdmMapping.param('message', 'Object', true, true), _dec16 = _data.EdmMapping.param('attachment', _data.EdmType.EdmStream, false), _dec17 = _data.EdmMapping.action('SendMessage', 'RegisterActionMessage'), (_class = class StudyProgramRegisterAction extends _EnableAttachmentModel.default {constructor() {super();} /** * Adds an attachment * @param {*} file * @param {*=} extraAttributes */addAttachment(file, extraAttributes) {var _superprop_getAddAttachment = () => super.addAttachment,_this = this;return _asyncToGenerator(function* () {try {const attachment = Object.assign({ name: file.contentFileName, originalname: file.contentFileName }, file, extraAttributes);const result = yield _superprop_getAddAttachment().call(_this, attachment);tryCloseStream(file);return result;} catch (err) {// try to close stream tryCloseStream(file); // and throw error throw err;}})();} /** * Removes an attachment * @param {*} attachment */removeAttachment(attachment) {var _superprop_getRemoveAttachment = () => super.removeAttachment,_this2 = this;return _asyncToGenerator(function* () {return yield _superprop_getRemoveAttachment().call(_this2, attachment.id);})();} /** * Set preferred course classes * @param {Array<any>} items */setCourseRegistrations(items) {var _this3 = this;return _asyncToGenerator(function* () {// set initiator items.forEach(item => {item.initiator = { id: _this3.getId() };});return _this3.context.model('CourseClassRegisterAction').save(items);})();} /** * Set preferred internships * @param {Array<any>} items */setInternshipRegistrations(items) {var _this4 = this;return _asyncToGenerator(function* () {// set initiator items.forEach(item => {item.initiator = { id: _this4.getId() };});return _this4.context.model('InternshipRegisterAction').save(items);})();} /** * Add action messages * @param {Array<any>} items */postMessages(item) {var _this5 = this;return _asyncToGenerator(function* () {// set initiator item.action = _this5.getId();if ((yield _this5.validateRegisterViewer()) === true) {return _this5.context.model('StudyProgramRegisterActionMessage').silent().save(item);}return _this5.context.model('StudyProgramRegisterActionMessage').save(item);})();} /** * Gets item review */getReview() {var _this6 = this;return _asyncToGenerator(function* () {let query = _this6.context.model('StudyProgramRegisterActionReview').where('itemReviewed').equal(_this6.getId());if ((yield _this6.validateRegisterViewer()) === true) {return query.silent().prepare();}return query.prepare();})();} /** * Set item review * @param {*} item */setReview(item) {var _this7 = this;return _asyncToGenerator(function* () {const StudyProgramRegisterActionReviews = _this7.context.model('StudyProgramRegisterActionReview'); // infer object state let currentReview;const validViewer = yield _this7.validateRegisterViewer();if (validViewer) {currentReview = yield StudyProgramRegisterActionReviews.where('itemReviewed').equal(_this7.getId()).and('createdBy/name').equal(_this7.context.user.name).silent().getItem();} else {currentReview = yield StudyProgramRegisterActionReviews.where('itemReviewed').equal(_this7.getId()).and('createdBy/name').equal(_this7.context.user.name).getItem();}if (currentReview == null) {if (item == null) {return;} // a new item is going to be inserted delete item.id; // set reviewed item item.itemReviewed = _this7.getId();} else {if (item == null) {// delete review StudyProgramRegisterActionReviews.remove(currentReview);} // up item.id = currentReview.id; // set reviewed item item.itemReviewed = _this7.getId();}if (validViewer === true) {return StudyProgramRegisterActionReviews.silent().save(item);}return StudyProgramRegisterActionReviews.save(item);})();} /** * Adds an attachment * @param {*} file * @param {*=} extraAttributes */sendMessage(attachment, message) {var _this8 = this;const thisArg = this;return new Promise((resolve, reject) => {this.context.db.executeInTransaction(cb => {_asyncToGenerator(function* () {const StudyProgramRegisterActionMessage = thisArg.context.model('StudyProgramRegisterActionMessage');const newMessage = StudyProgramRegisterActionMessage.convert(message);Object.assign(newMessage, { action: thisArg.getId() }); // add message if ((yield _this8.validateRegisterViewer()) === true) {yield StudyProgramRegisterActionMessage.silent().save(newMessage);} else {yield StudyProgramRegisterActionMessage.save(newMessage);} // if message has an attachment if (attachment) {// prepare attachment data const newAttachment = Object.assign({ name: attachment.contentFileName, originalname: attachment.contentFileName }, attachment); // and add attachment yield newMessage.addAttachment(newAttachment);}})().then(() => {return cb();}).catch(err => {return cb(err);});}, err => {if (err) {return reject(err);}return resolve(message);});});} // Function that validates if the current user is a viewer of the StudyProgramEnrollmentEvent of this StudyProgramRegisterAction validateRegisterViewer() {var _this9 = this;return _asyncToGenerator(function* () { const currentUser = yield _this9.context. model('User'). where('name'). equal(_this9.context.user.name). select('id'). value(); const action = yield _this9.context. model('StudyProgramRegisterAction'). where('id'). equal(_this9.getId()). select('id', 'studyProgramEnrollmentEvent'). expand( { 'name': 'studyProgramEnrollmentEvent', 'options': { '$select': 'id, viewers', '$expand': 'viewers($select=id)' } }). silent(). getItem(); if (action != null && action.studyProgramEnrollmentEvent != null) { for (const viewer of action.studyProgramEnrollmentEvent.viewers) { if (viewer.id === currentUser) { return true; } } } return false;})(); }}, (_applyDecoratedDescriptor(_class.prototype, "addAttachment", [_dec, _dec2, _dec3], Object.getOwnPropertyDescriptor(_class.prototype, "addAttachment"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "removeAttachment", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class.prototype, "removeAttachment"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "setCourseRegistrations", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class.prototype, "setCourseRegistrations"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "setInternshipRegistrations", [_dec8, _dec9], Object.getOwnPropertyDescriptor(_class.prototype, "setInternshipRegistrations"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "postMessages", [_dec10, _dec11], Object.getOwnPropertyDescriptor(_class.prototype, "postMessages"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getReview", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getReview"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "setReview", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class.prototype, "setReview"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "sendMessage", [_dec15, _dec16, _dec17], Object.getOwnPropertyDescriptor(_class.prototype, "sendMessage"), _class.prototype)), _class)); module.exports = StudyProgramRegisterAction; //# sourceMappingURL=StudyProgramRegisterAction.js.map