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

server/src/Application/HumanResource/User/Command/UpdateUserCommandHandler.ts   A

Complexity

Total Complexity 4
Complexity/F 4

Size

Lines of Code 57
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 42
dl 0
loc 57
rs 10
c 0
b 0
f 0
wmc 4
mnd 3
bc 3
fnc 1
bpm 3
cpm 4
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A UpdateUserCommandHandler.execute 0 38 4
1
import {Inject} from '@nestjs/common';
2
import {CommandHandler} from '@nestjs/cqrs';
3
import { UserAdministrativeMissingException } from 'src/Domain/HumanResource/User/Exception/UserAdministrativeMissingException';
4
import {UserNotFoundException} from 'src/Domain/HumanResource/User/Exception/UserNotFoundException';
5
import {IUserAdministrativeRepository} from 'src/Domain/HumanResource/User/Repository/IUserAdministrativeRepository';
6
import {IUserRepository} from 'src/Domain/HumanResource/User/Repository/IUserRepository';
7
import {UpdateUserCommand} from './UpdateUserCommand';
8
9
@CommandHandler(UpdateUserCommand)
10
export class UpdateUserCommandHandler {
11
  constructor(
12
    @Inject('IUserRepository')
13
    private readonly userRepository: IUserRepository,
14
    @Inject('IUserAdministrativeRepository')
15
    private readonly userAdministrativeRepository: IUserAdministrativeRepository
16
  ) {}
17
18
  public async execute(command: UpdateUserCommand): Promise<void> {
19
    const {
20
      id,
21
      role,
22
      annualEarnings,
23
      contract,
24
      executivePosition,
25
      healthInsurance,
26
      joiningDate,
27
      leavingDate,
28
      transportFee
29
    } = command;
30
31
    const user = await this.userRepository.findOneById(id);
32
    if (!user) {
33
      throw new UserNotFoundException();
34
    }
35
36
    const userAdministrative = await this.userAdministrativeRepository.findOneByUserId(id);
37
38
    if (!userAdministrative) {
39
      throw new UserAdministrativeMissingException();
40
    }
41
42
    user.updateRole(role);
43
    userAdministrative.update(
44
      Math.round(annualEarnings * 100),
45
      contract,
46
      executivePosition,
47
      healthInsurance,
48
      joiningDate,
49
      leavingDate,
50
      transportFee ? Math.round(transportFee * 100) : 0
51
    );
52
53
    await this.userRepository.save(user);
54
    await this.userAdministrativeRepository.save(userAdministrative);
55
  }
56
}
57