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

IncreaseUserSavingsRecordCommandHandler.execute   A

Complexity

Conditions 2

Size

Total Lines 18
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 18
rs 9.65
c 0
b 0
f 0
cc 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