@universis/dining
Version:
Universis api for dining
101 lines (80 loc) • 2.82 kB
JavaScript
;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