Passed
Pull Request — master (#248)
by
unknown
01:59
created

GetUsersElementsQueryHandler   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 36
dl 0
loc 44
c 0
b 0
f 0
rs 10

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 35 3
1
import { QueryHandler } from '@nestjs/cqrs';
2
import { Inject } from '@nestjs/common';
3
import { IUserRepository } from 'src/Domain/HumanResource/User/Repository/IUserRepository';
4
import { UserElementsView } from '../View/UserElementsView';
5
import { GetUsersElementsQuery } from './GetUsersElementsQuery';
6
import { ILeaveRepository } from 'src/Domain/HumanResource/Leave/Repository/ILeaveRepository';
7
8
@QueryHandler(GetUsersElementsQuery)
9
export class GetUsersElementsQueryHandler {
10
  constructor(
11
    @Inject('IUserRepository')
12
    private readonly userRepository: IUserRepository,
13
    @Inject('ILeaveRepository')
14
    private readonly leaveRepository: ILeaveRepository,
15
  ) {}
16
17
  public async execute(
18
    query: GetUsersElementsQuery
19
  ): Promise<UserElementsView[]> {
20
21
    const userViews: UserElementsView[] = [];
22
23
    const [ users, leaves ] = await Promise.all([
24
      this.userRepository.findUsersWithPayslipInfo(),
25
      this.leaveRepository.findAllMonthlyLeaves(new Date()),
26
    ]);
27
28
    console.log('leaves', leaves);
29
30
    for (const user of users) {
31
        userViews.push(new UserElementsView(
32
            user.getFirstName(),
33
            user.getLastName(),
34
            user.getUserAdministrative().getContract(),
35
            user.getUserAdministrative().isExecutivePosition(),
36
            user.getUserAdministrative().getJoiningDate(),
37
            user.getUserAdministrative().getAnnualEarnings() * 0.01,
38
            user.getUserAdministrative().getAnnualEarnings() / 1200,
39
            user.getUserAdministrative().getWorkingTime(),
40
            user.getUserAdministrative().getTransportFee() * 0.01,
41
            0,
42
            user.getUserAdministrative().haveHealthInsurance() ? 'yes' : 'no',
43
            0,
44
            0,
45
            0,
46
            0
47
        ));
48
    }
49
50
    return userViews;
51
  }
52
}
53