GetDataStatisticsClass.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import {HttpMethod, Route, StatusCodes, Request, Response} from 'org.crazydoctor.expressts';
  2. import ServerApp from '..';
  3. import { ISession } from '../session/ISession';
  4. import DBEvents from '../db/DBEvents';
  5. class GetDataStatisticsClass extends Route {
  6. protected action = (req: Request, res: Response): any => {
  7. const session = req.session as ISession;
  8. if(!session.isEditor) {
  9. res.status(StatusCodes.FORBIDDEN).send('Access denied');
  10. return;
  11. }
  12. if(ServerApp.SourcesUpdating) {
  13. res.status(StatusCodes.ACCEPTED).send('Sources are being updated');
  14. return;
  15. }
  16. const cls = req.params.class;
  17. const { page, pageSize } = req.query;
  18. DBEvents.getClassEventsCount(cls).then((count) => {
  19. DBEvents.getClassEvents(cls, parseInt(page as string), parseInt(pageSize as string)).then((classEvents) => {
  20. res.set({
  21. 'Content-Type': 'application/json'
  22. });
  23. res.status(StatusCodes.OK).send({ count: count, records: JSON.parse(JSON.stringify(classEvents).replaceAll('__static__', '')) });
  24. });
  25. });
  26. };
  27. protected method = HttpMethod.GET;
  28. protected order = 10;
  29. protected route = '/data/statistics/class/:class';
  30. }
  31. export default GetDataStatisticsClass;