33 */
44
55import { Context } from '@open-template-hub/common' ;
6- import { EventCategory } from '../enum/event-category.enum ' ;
6+ import { Environment } from '../../environment ' ;
77import { EventFilter } from '../interface/event-filter.interface' ;
88import { Event } from '../interface/event.interface' ;
9+ import { EventConfigRepository } from '../repository/event-config.repository' ;
910import { EventRepository } from '../repository/event.repository' ;
1011
1112export class EventController {
13+
14+ constructor ( private environment = new Environment ( ) ) {
15+ // Intentionally blank
16+ }
17+
1218 /**
1319 * creates event
1420 * @param context context
1521 * @param event event
1622 * @returns created event
1723 */
18- createEvent = async ( context : Context , event : Event ) => {
24+ createEvent = async ( context : Context , event : Event ) => {
1925 const eventRepository = await new EventRepository ( ) . initialize (
20- context . mongodb_provider . getConnection ( )
26+ context . mongodb_provider . getConnection ( )
2127 ) ;
2228
23- if ( ! event . timestamp ) {
29+ if ( ! event . timestamp ) {
2430 event . timestamp = Date . now ( ) ;
2531 }
2632
27- if ( ! event . category ) {
28- event . category = EventCategory . DEFAULT ;
33+ if ( ! event . category ) {
34+ event . category = ' DEFAULT' ;
2935 }
3036
3137 event . reporter = context . username ;
3238
33- return eventRepository . createEvent ( event ) ;
39+ return eventRepository . createEvent ( event ) ;
3440 } ;
3541
3642 /**
@@ -39,42 +45,58 @@ export class EventController {
3945 * @param filter filter
4046 * @returns filtered events
4147 */
42- filterEvents = async ( context : Context , filter : EventFilter ) => {
48+ filterEvents = async ( context : Context , filter : EventFilter ) => {
4349 const eventRepository = await new EventRepository ( ) . initialize (
44- context . mongodb_provider . getConnection ( )
50+ context . mongodb_provider . getConnection ( )
4551 ) ;
4652
47- const query = this . getQueryFromFilter ( context , filter ) ;
53+ const query = this . getQueryFromFilter ( context , filter ) ;
4854
49- return eventRepository . filterEvents ( query , filter . limit ) ;
55+ return eventRepository . filterEvents ( query , filter . skip , filter . limit ) ;
5056 } ;
5157
5258 /**
5359 * creates query from the filter
60+ *@param context context
5461 * @param filter filter
5562 * @returns query
5663 */
57- getQueryFromFilter = ( context : Context , filter : EventFilter ) => {
58- var query = { } as any ;
64+ getQueryFromFilter = ( context : Context , filter : EventFilter ) => {
65+ let query = { } as any ;
5966
6067 query . reporter = context . username ;
6168
62- if ( filter . name ) {
69+ if ( filter . name ) {
6370 query . name = { $eq : filter . name } ;
6471 }
6572
66- if ( filter . category ) {
73+ if ( filter . category && filter . category !== 'ALL' ) {
6774 query . category = { $eq : filter . category } ;
6875 }
6976
70- if ( filter . start ) {
77+ if ( filter . start ) {
7178 query . timestamp = { $gte : filter . start } ;
7279 }
7380
74- if ( filter . end ) {
81+ if ( filter . end ) {
7582 query . timestamp = { $lte : filter . end } ;
7683 }
7784
85+ const maxQueryLimit = + ( this . environment . args ( ) . serverSpecificArgs ?. maxQueryLimit ?? '1000' ) ;
86+ if ( filter . limit > maxQueryLimit ) {
87+ filter . limit = maxQueryLimit ;
88+ }
89+
7890 return query ;
7991 } ;
92+
93+ getCategories = async ( context : Context , language : string ) => {
94+ const eventConfigRepository = await new EventConfigRepository ( ) . initialize (
95+ context . mongodb_provider . getConnection ( )
96+ ) ;
97+
98+ const defaultLanguage = process . env . DEFAULT_LANGUAGE ?? 'en' ;
99+
100+ return eventConfigRepository . getCategories ( context . role , language , defaultLanguage ) ;
101+ } ;
80102}
0 commit comments