Passed
Pull Request — master (#122)
by
unknown
01:40
created

server/src/Application/HumanResource/User/Query/GetUserAdministrativeByIdQueryHandler.ts   A

Complexity

Total Complexity 3
Complexity/F 3

Size

Lines of Code 55
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A GetUserAdministrativeByIdQueryHandler.execute 0 33 3
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