UNPKG

@universis/dining

Version:

Universis api for dining

84 lines (78 loc) 3.23 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.DiningService = void 0;var _common = require("@themost/common"); var _scopeAccess = _interopRequireDefault(require("./config/scope.access.json")); var _StudentReplacer = require("./StudentReplacer"); var _path = _interopRequireDefault(require("path"));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} const el = require('./locales/el.json'); class DiningService extends _common.ApplicationService { constructor(app) { super(app); // extend Student new _StudentReplacer.StudentReplacer(app).apply(); // extend universis api scope access configuration if (app && app.container) { app.container.subscribe(container => { if (container) { // add extra scope access elements const scopeAccess = app.getConfiguration().getStrategy(function ScopeAccessConfiguration() {}); if (scopeAccess != null) { scopeAccess.elements.push.apply(scopeAccess.elements, _scopeAccess.default); } const translateService = app.getService(function TranslateService() {}); if (translateService) { translateService.setTranslation('el', el); } } }); } const mailTemplateService = this.getApplication().getService(function MailTemplateService() {}); if (mailTemplateService != null) { mailTemplateService.extraTemplates.push({ name: 'mail-after-dining-request-status-change', path: _path.default.resolve(__dirname, './templates/mail-after-dining-request-status-change/html.ejs') }); mailTemplateService.extraTemplates.push({ name: 'mail-after-dining-card-active-status-change', path: _path.default.resolve(__dirname, './templates/mail-after-dining-card-active-status-change/html.ejs') }); } } /** * Returns the next request number based on the given request event * @param {*} context * @param {*} requestEvent * @returns */ async nextNumber(context, requestEvent) { // validate id const model = context.model('DiningRequestEvent'); const parentRequestEvent = model.convert(requestEvent); const id = parentRequestEvent.id; _common.Args.notNumber(id, 'Item identifier'); let lastIndex; await new Promise((resolve, reject) => { context.db.executeInTransaction(cb => { // execute async method (async function () { /** * @type {{lastIndex: any}} */ const item = await model.where('id').equal(id).select('lastIndex').silent().getItem(); //get last index or 0 lastIndex = item.lastIndex ? item.lastIndex : 0; // increase last index lastIndex += 1; // save last index await model.silent().save({ id, lastIndex }); })().then(() => { return cb(); }).catch(err => { return cb(err); }); }, err => { if (err) { return reject(err); } return resolve(); }); }); return lastIndex; }}exports.DiningService = DiningService; //# sourceMappingURL=DiningService.js.map