Passed
Pull Request — master (#258)
by Mathieu
02:03
created

server/src/Application/HumanResource/Savings/Query/GetUsersSavingsRecordsBalanceQueryHandler.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 32
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 GetUsersSavingsRecordsBalanceQueryHandler.execute 0 20 2
1
import { QueryHandler } from '@nestjs/cqrs';
2
import { Inject } from '@nestjs/common';
3
import { GetUsersSavingsRecordsBalanceQuery } from './GetUsersSavingsRecordsBalanceQuery';
4
import { IUserSavingsRecordRepository } from 'src/Domain/HumanResource/Savings/Repository/IUserSavingsRecordRepository';
5
import { UserSavingsRecordsBalanceView } from '../View/UserSavingsRecordsBalanceView';
6
import { GetUserSavingsRecordBalance } from 'src/Domain/HumanResource/Savings/GetUserSavingsRecordBalance';
7
8
@QueryHandler(GetUsersSavingsRecordsBalanceQuery)
9
export class GetUsersSavingsRecordsBalanceQueryHandler {
10
  constructor(
11
    @Inject('IUserSavingsRecordRepository')
12
    private readonly userSavingsRecordRepository: IUserSavingsRecordRepository,
13
    private readonly getUserSavingsRecordBalance: GetUserSavingsRecordBalance,
14
  ) {}
15
16
  public async execute(
17
    query: GetUsersSavingsRecordsBalanceQuery
18
  ): Promise<UserSavingsRecordsBalanceView[]> {
19
    const userSavingsRecords = await this.userSavingsRecordRepository.findUsersSavingsRecords();
20
    const userSavingsRecordsBalances: UserSavingsRecordsBalanceView[] = [];
21
    const usersBalances = this.getUserSavingsRecordBalance.get(userSavingsRecords);
22
23
    for (const [userId, {firstName, lastName, balance}] of Object.entries(usersBalances)) {
24
      userSavingsRecordsBalances.push(
25
        new UserSavingsRecordsBalanceView(
26
          userId,
27
          firstName,
28
          lastName,
29
          balance / 100,
30
        )
31
      );
32
    };
33
34
    return userSavingsRecordsBalances;
35
  }
36
}
37