Completed
Push — master ( 2108a7...065ee0 )
by Mathieu
26s queued 12s
created

server/src/Application/HumanResource/Savings/Command/IncreaseUserSavingsRecordCommandHandler.ts   A

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 37
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A IncreaseUserSavingsRecordCommandHandler.execute 0 18 2
1
import { CommandHandler } from '@nestjs/cqrs';
2
import { Inject } from '@nestjs/common';
3
import { IncreaseUserSavingsRecordCommand } from './IncreaseUserSavingsRecordCommand';
4
import { IUserRepository } from 'src/Domain/HumanResource/User/Repository/IUserRepository';
5
import { SavingsRecordType, UserSavingsRecord } from 'src/Domain/HumanResource/Savings/UserSavingsRecord.entity';
6
import { UserNotFoundException } from 'src/Domain/HumanResource/User/Exception/UserNotFoundException';
7
import { IUserSavingsRecordRepository } from 'src/Domain/HumanResource/Savings/Repository/IUserSavingsRecordRepository';
8
9
@CommandHandler(IncreaseUserSavingsRecordCommand)
10
export class IncreaseUserSavingsRecordCommandHandler {
11
  constructor(
12
    @Inject('IUserRepository')
13
    private readonly userRepository: IUserRepository,
14
    @Inject('IUserSavingsRecordRepository')
15
    private readonly userSavingsRecordRepository: IUserSavingsRecordRepository,
16
  ) {}
17
18
  public async execute(command: IncreaseUserSavingsRecordCommand): Promise<string> {
19
    const { userId, amount } = command;
20
21
    const user = await this.userRepository.findOneById(userId);
22
    if (!user) {
23
      throw new UserNotFoundException();
24
    }
25
26
    const userSavingsRecord = await this.userSavingsRecordRepository.save(
27
      new UserSavingsRecord(
28
        Math.round(amount * 100),
29
        SavingsRecordType.INPUT,
30
        user,
31
      )
32
    );
33
34
    return userSavingsRecord.getId();
35
  }
36
}
37