Passed
Pull Request — master (#210)
by Nicolas
01:41
created

GetOnLeaveUsersQueryHandler   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 31
dl 0
loc 37
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 27 2
1
import { QueryHandler } from '@nestjs/cqrs';
2
import { Inject } from '@nestjs/common';
3
import { IDateUtils } from 'src/Application/IDateUtils';
4
import { UserSummaryView } from '../../User/View/UserSummaryView';
5
import { ILeaveRepository } from 'src/Domain/HumanResource/Leave/Repository/ILeaveRepository';
6
import { GetOnLeaveUsersQuery } from "./GetOnLeaveUsersQuery";
7
import { OnLeaveUserView } from "../View/OnLeaveUserView";
8
9
@QueryHandler(GetOnLeaveUsersQuery)
10
export class GetOnLeaveUsersQueryHandler {
11
  constructor(
12
    @Inject('ILeaveRepository')
13
    private readonly leaveRepository: ILeaveRepository,
14
    @Inject('IDateUtils')
15
    private readonly dateUtils: IDateUtils
16
  ) {
17
  }
18
19
  public async execute({}: GetOnLeaveUsersQuery): Promise<Array<OnLeaveUserView>> {
20
    const onLeaveUserViews: OnLeaveUserView[] = [];
21
22
    const date = this.dateUtils.getCurrentDate();
23
    const day = date.getDate();
24
    const month = date.getMonth() + 1;
25
    const year = date.getFullYear();
26
27
    const leaves = await this.leaveRepository.findLeavesForDate(year + '-' + month + '-' + day);
28
29
    for (const leave of leaves) {
30
      const user = leave.getLeaveRequest().getUser();
31
32
      onLeaveUserViews.push(
33
        new OnLeaveUserView(
34
          leave.getId(),
35
          new UserSummaryView(
36
            user.getId(),
37
            user.getFirstName(),
38
            user.getLastName()
39
          )
40
        )
41
      );
42
    }
43
44
    return onLeaveUserViews;
45
  }
46
}
47