UNPKG

@universis/dining

Version:

Universis api for dining

101 lines (80 loc) 2.82 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.beforeSave = beforeSave;exports.afterSave = afterSave;var _data = require("@themost/data"); var _common = require("@themost/common"); var _util = require("util"); var _moment = _interopRequireDefault(require("moment"));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} async function beforeSaveAsync(event) { // if (event.state !== 2) { return; } const context = event.model.context; const previous = event.previous; if (previous == null) { throw new _common.DataError('E_PREVIOUS', 'The previous state of the object cannot be determined'); } const target = event.target; if (target.active === false && previous.active === true) { // get validator listener const validator = new _data.DataPermissionEventListener(); // noinspection JSUnresolvedFunction const validateAsync = (0, _util.promisify)(validator.validate). bind(validator); // required when user cancels StudentDiningCard and sets the DiningRequest in ActiveActionStatus // set today (now) studentDiningCard validThrough date const todayDate = new Date(); if ((0, _moment.default)(previous.validThrough).isAfter(todayDate)) { target.validThrough = todayDate; } else { target.validThrough = previous.validThrough; } // validate StudentDiningCard/Cancel execute permission const validateEvent = { model: context.model('StudentDiningCard'), privilege: 'StudentDiningCard/Cancel', mask: _data.PermissionMask.Execute, target: event.target && event.target.id, throwError: true }; await validateAsync(validateEvent); } } async function afterSaveAsync(event) { if (event.state !== 2) { return; } const context = event.model.context; const previous = event.previous; if (previous == null) { throw new _common.DataError('E_PREVIOUS', 'The previous state of the object cannot be determined'); } const target = event.target; if (target.active === false && previous.active === true) { //save await context.model('CancelDiningCardAction').save({ diningCard: target.id, actionStatus: { alternateName: 'CompletedActionStatus' } }); } } /** * @param {DataEventArgs} event * @param {Function} callback */ function beforeSave(event, callback) { return beforeSaveAsync(event).then(() => { return callback(); }).catch(err => { return callback(err); }); } /** * @param {DataEventArgs} event * @param {Function} callback */ function afterSave(event, callback) { return afterSaveAsync(event).then(() => { return callback(); }).catch(err => { return callback(err); }); } //# sourceMappingURL=OnCancelDiningCardListener.js.map