Passed
Push — master ( 887a78...27b9b7 )
by
unknown
01:54
created

GetUserAdministrativeByIdQueryHandler.execute   B

Complexity

Conditions 5

Size

Total Lines 32
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 28
dl 0
loc 32
rs 8.7413
c 0
b 0
f 0
cc 5
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(query: GetUserByIdQuery): Promise<UserView> {
21
    const user = await this.userRepository.findOneById(query.id);
22
    if (!user) {
23
      throw new UserNotFoundException();
24
    }
25
    const userAdministrative = await this.userAdministrativeRepository.findOneByUserId(
26
      query.id
27
    );
28
29
    let userAdministrativeView: UserAdministrativeView = null;
30
    if (userAdministrative) {
31
      userAdministrativeView = new UserAdministrativeView(
32
        userAdministrative.getAnnualEarnings() * 0.01,
33
        userAdministrative.getContract(),
34
        userAdministrative.getWorkingTime(),
35
        userAdministrative.isExecutivePosition() ? 'true' : 'false',
36
        userAdministrative.haveHealthInsurance() ? 'true' : 'false',
37
        userAdministrative.getJoiningDate(),
38
        userAdministrative.getLeavingDate(),
39
        userAdministrative.getTransportFee() * 0.01
40
      );
41
    }
42
43
    return new UserView(
44
      user.getId(),
45
      user.getFirstName(),
46
      user.getLastName(),
47
      user.getEmail(),
48
      user.getRole(),
49
      user.isAdministrativeEditable(),
50
      userAdministrativeView
51
    );
52
  }
53
}
54