UNPKG

@universis/dining

Version:

Universis api for dining

137 lines (114 loc) 5.97 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.beforeSave = beforeSave;exports.afterSave = afterSave;var _common = require("@themost/common"); var CancelDiningCardListener = _interopRequireWildcard(require("./OnCancelDiningCardListener"));function _getRequireWildcardCache() {if (typeof WeakMap !== "function") return null;var cache = new WeakMap();_getRequireWildcardCache = function () {return cache;};return cache;}function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache();if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;} async function afterSaveAsync(event) { // if (event.state !== 2) { return; } const context = event.model.context; if (!(event.target.hasOwnProperty('studentStatus') && event.target.studentStatus != null)) { return; } let targetStudentStatus = await context.model('StudentStatus').find(event.target.studentStatus).getItem(); if (targetStudentStatus == null) { return; } const translateService = context.application.getStrategy(function TranslateService() {}); const previousStudentStatus = event.previous && event.previous.studentStatus; if (previousStudentStatus == null) { throw new _common.DataError('E_PREVIOUS', 'The previous student status cannot be determined'); } // students on active or declared actionStatus keep their StudentDiningCard on active state if (targetStudentStatus && ( previousStudentStatus.alternateName === 'active' && targetStudentStatus.alternateName != 'active' && targetStudentStatus.alternateName != 'declared' || previousStudentStatus.alternateName === 'declared' && targetStudentStatus.alternateName != 'declared' && targetStudentStatus.alternateName != 'active')) { // find StudentDiningCard const studentDiningCard = await context.model('StudentDiningCards'). where('student'). equal(event.target.id). and('active'). equal(true). select('id', 'active', 'student'). flatten(). silent(). getItem(); if (typeof studentDiningCard != 'undefined' && studentDiningCard != null) { const cancelReason = translateService.translate('StudentDiningCardSystemCancelReason'); let actionDateNote; //dateCancelled value ONLY for the "cancelReason" info field let dateCancelled; studentDiningCard.active = false; // StudentDiningCard's valid through date is the date when the event (student-suspended, student-erased, student-graduated) is taking place studentDiningCard.validThrough = event.target.dateModified; // StudentDiningCard's date cancelled is the date when the event (student-suspended, student-erased, student-graduated) is taking place studentDiningCard.dateCancelled = event.target.dateModified; // set dateCancelled value in relation to target studentStatus switch (targetStudentStatus.alternateName) { case "erased": if (typeof event.target.removalDate !== 'undefined' && event.target.removalDate != null) { dateCancelled = event.target.removalDate; actionDateNote = translateService.translate('RemovalDate'); } break; case "graduated": if (typeof event.target.graduationDate !== 'undefined' && event.target.graduationDate != null) { dateCancelled = event.target.graduationDate; actionDateNote = translateService.translate('GraduationDate'); } break; case "suspended": // eslint-disable-next-line no-case-declarations const suspensions = await context.model('StudentSuspension'). where('student'). equal(event.target.id). and('reintegrated'). equal(false). orderByDescending('suspensionDate'). flatten(). silent(). getItems(); if (Array.isArray(suspensions)) { dateCancelled = suspensions[0].suspensionDate; actionDateNote = translateService.translate('SuspensionDate'); } else { throw new _common.DataError('E_STUDENT_DINING_CARD', 'Invalid student\'s suspension data'); } break;} // dateCancelled studentDiningCard.cancelReason = cancelReason + ' ' + translateService.translate(targetStudentStatus.alternateName) + ' ' + actionDateNote + ' ' + dateCancelled.toLocaleDateString(context.locale); /** * @type {import("@themost/data").DataModel} */ const StudentDiningCard = context.model('StudentDiningCard'); StudentDiningCard.removeListener('before.save', CancelDiningCardListener.beforeSave); StudentDiningCard.removeListener('after.save', CancelDiningCardListener.afterSave); await StudentDiningCard.silent().save(studentDiningCard); } } } async function beforeSaveAsync(event) { // } /** * @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=UpdateStudenDiningCardListener.js.map