@universis/evaluations
Version:
Universis evaluations library
132 lines (113 loc) • 3.72 kB
JavaScript
;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