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