UNPKG

@universis/evaluations

Version:

Universis evaluations library

132 lines (113 loc) 3.72 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.evaluationRouter = evaluationRouter;var _express = _interopRequireDefault(require("express")); var _evaluationKeyHandler = require("./handlers/evaluation-key-handler"); var _express2 = require("@themost/express"); var _i18n = _interopRequireDefault(require("i18n"));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} const el = require('./locales/el.json'); /** * * @param {ExpressDataApplication} app * @returns {*} */ function evaluationRouter(app) { const router = _express.default.Router(); // add translations if (app && app.parentApplication) { const translateService = app.parentApplication.getService(function TranslateService() { }); if (translateService) { translateService.setTranslation('el', el); } } router.use((req, res, next) => { // create router context const newContext = app.createContext(); /** * try to find if request has already a data context * @type {ExpressDataContext|*} */ const interactiveContext = req.context; // finalize already assigned context if (interactiveContext) { if (typeof interactiveContext.finalize === 'function') { // finalize interactive context return interactiveContext.finalize(() => { // and assign new context Object.defineProperty(req, 'context', { enumerable: false, configurable: true, get: () => { return newContext; } }); // exit handler return next(); }); } } // otherwise assign context Object.defineProperty(req, 'context', { enumerable: false, configurable: true, get: () => { return newContext; } }); // and exit handler return next(); }); router.use((req, res, next) => { // set context locale from request req.context.locale = req.locale; // set translation req.context.translate = function () { return _i18n.default.__.apply(req.context, Array.from(arguments)); }; return next(); }); // use this handler to finalize router context // important note: context finalization is very important in order // to close and finalize database connections, cache connections etc. router.use((req, res, next) => { req.on('end', () => { //on end if (req.context) { //finalize data context return req.context.finalize(() => { // }); } }); return next(); }); router.use(async (req, res, next) => { try { await new _evaluationKeyHandler.EvaluationKeyHandler().beginRequestAsync(req, res); return next(); } catch (err) { return next(err); } }); router.get('/', (req, res, next) => { // set entity set parameters Object.assign(req.params, { entitySetFunction: 'Current' }); return next(); }, (0, _express2.getEntitySetFunction)({ entitySet: 'EvaluationEvents' })); router.get('/Form', (req, res, next) => { // set entity set parameters Object.assign(req.params, { entitySetFunction: 'Current', entityFunction: 'Form' }); return next(); }, (0, _express2.getEntitySetFunction)({ entitySet: 'EvaluationEvents' })); router.post('/Evaluate', (req, res, next) => { // set entity set parameters Object.assign(req.params, { entitySetFunction: 'Current', entityAction: 'Evaluate' }); return next(); }, (0, _express2.postEntitySetFunction)({ entitySet: 'EvaluationEvents' })); return router; } //# sourceMappingURL=evaluationRouter.js.map