Completed
Push — master ( f0da19...ae4aee )
by
unknown
17s queued 11s
created

GetUserAdministrativeByIdQueryHandler.execute   A

Complexity

Conditions 3

Size

Total Lines 33
Code Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 29
dl 0
loc 33
rs 9.184
c 0
b 0
f 0
1
import { Inject } from '@nestjs/common';
2
import { QueryHandler } from '@nestjs/cqrs';
3
import { UserNotFoundException } from 'src/Domain/HumanResource/User/Exception/UserNotFoundException';
4
import { IUserAdministrativeRepository } from 'src/Domain/HumanResource/User/Repository/IUserAdministrativeRepository';
5
import { IUserRepository } from 'src/Domain/HumanResource/User/Repository/IUserRepository';
6
import { UserAdministrativeView } from '../View/UserAdministrativeView';
7
import { UserView } from '../View/UserView';
8
import { GetUserAdministrativeByIdQuery } from './GetUserAdministrativeByIdQuery';
9
import { GetUserByIdQuery } from './GetUserByIdQuery';
10
11
@QueryHandler(GetUserAdministrativeByIdQuery)
12
export class GetUserAdministrativeByIdQueryHandler {
13
  constructor(
14
    @Inject('IUserRepository')
15
    private readonly userRepository: IUserRepository,
16
    @Inject('IUserAdministrativeRepository')
17
    private readonly userAdministrativeRepository: IUserAdministrativeRepository
18
  ) {}
19
20
  public async execute(
21
    query: GetUserByIdQuery
22
  ): Promise<UserView> {
23
    const user = await this.userRepository.findOneById(query.id);
24
    if (!user) {
25
      throw new UserNotFoundException();
26
    }
27
    const userAdministrative = await this.userAdministrativeRepository.findOneByUserId(
28
      query.id
29
    );
30
31
    let userAdministrativeView: UserAdministrativeView = null;
32
    if (userAdministrative) {
33
      userAdministrativeView = new UserAdministrativeView(
34
        userAdministrative.getAnnualEarnings() * 0.01,
35
        userAdministrative.getContract(),
36
        userAdministrative.isExecutivePosition(),
37
        userAdministrative.haveHealthInsurance(),
38
        userAdministrative.getJoiningDate(),
39
        userAdministrative.getLeavingDate(),
40
        userAdministrative.getTransportFee() * 0.01
41
      );
42
    }
43
44
    return new UserView(
45
      user.getId(),
46
      user.getFirstName(),
47
      user.getLastName(),
48
      user.getEmail(),
49
      user.getRole(),
50
      user.isAdministrativeEditable(),
51
      userAdministrativeView
52
    );
53
  }
54
}
55