Passed
Pull Request — master (#75)
by Mathieu
02:33 queued 01:09
created

server/src/Application/FairCalendar/Query/GetMonthlyEventsQueryHandler.ts   A

Complexity

Total Complexity 3
Complexity/F 3

Size

Lines of Code 57
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 48
mnd 2
bc 2
fnc 1
dl 0
loc 57
rs 10
bpm 2
cpm 3
noi 0
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A GetMonthlyEventsQueryHandler.execute 0 35 3
1
import {Inject} from '@nestjs/common';
2
import {QueryHandler} from '@nestjs/cqrs';
3
import {GetMonthlyEventsQuery} from './GetMonthlyEventsQuery';
4
import {IEventRepository} from 'src/Domain/FairCalendar/Repository/IEventRepository';
5
import {EventView} from '../View/EventView';
6
import {IDateUtils} from 'src/Application/IDateUtils';
7
import {EventType} from 'src/Domain/FairCalendar/Event.entity';
8
import {GetEventsOverview} from 'src/Domain/FairCalendar/GetEventsOverview';
9
import {MonthlyEventsView} from '../View/MonthlyEventsView';
10
11
@QueryHandler(GetMonthlyEventsQuery)
12
export class GetMonthlyEventsQueryHandler {
13
  constructor(
14
    @Inject('IEventRepository')
15
    private readonly eventRepository: IEventRepository,
16
    @Inject('IDateUtils')
17
    private readonly dateUtils: IDateUtils,
18
    private readonly getEventsOverview: GetEventsOverview
19
  ) {}
20
21
  public async execute(
22
    query: GetMonthlyEventsQuery
23
  ): Promise<MonthlyEventsView> {
24
    const {date, userId} = query;
25
    const eventViews: EventView[] = [];
26
    const events = await this.eventRepository.findMonthlyEvents(
27
      this.dateUtils.format(date, 'y-MM-dd'),
28
      userId
29
    );
30
31
    const overview = this.getEventsOverview.index(events);
32
33
    for (const event of events) {
34
      const project = event.getProject();
35
      const task = event.getTask();
36
37
      let title = event.getType();
38
      if (EventType.MISSION && project && task) {
39
        title = `[${task.getName()}] ${project.getName()}`;
40
      }
41
42
      eventViews.push(
43
        new EventView(
44
          event.getId(),
45
          title,
46
          event.getType(),
47
          event.getTime() / 100,
48
          event.getDate(),
49
          event.getSummary()
50
        )
51
      );
52
    }
53
54
    return new MonthlyEventsView(eventViews, overview);
55
  }
56
}
57