Passed
Pull Request — master (#256)
by Mathieu
02:22
created

AddUserSavingsRecordCommandHandler   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 24
dl 0
loc 27
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 18 2
1
import { CommandHandler } from '@nestjs/cqrs';
2
import { Inject } from '@nestjs/common';
3
import { AddUserSavingsRecordCommand } from './AddUserSavingsRecordCommand';
4
import { IUserRepository } from 'src/Domain/HumanResource/User/Repository/IUserRepository';
5
import { 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(AddUserSavingsRecordCommand)
10
export class AddUserSavingsRecordCommandHandler {
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: AddUserSavingsRecordCommand): Promise<string> {
19
    const { userId, amount, type } = 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
        type,
30
        user,
31
      )
32
    );
33
34
    return userSavingsRecord.getId();
35
  }
36
}
37