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

GetUserSavingsRecordBalance   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 30
dl 0
loc 35
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A get 0 29 4
1
import { Inject } from '@nestjs/common';
2
import { IDateUtils } from 'src/Application/IDateUtils';
3
import { SavingsRecordType, UserSavingsRecord } from './UserSavingsRecord.entity';
4
5
type UserSavingsRecordBalanceType = {
6
  [id: string]: {
7
    firstName: string;
8
    lastName: string;
9
    balance: number;
10
  }
11
}
12
13
export class GetUserSavingsRecordBalance {
14
  constructor(
15
    @Inject('IDateUtils')
16
    private readonly dateUtils: IDateUtils
17
  ) {}
18
19
  public get(userSavingsRecords: UserSavingsRecord[]): UserSavingsRecordBalanceType {
20
    let usersBalances: UserSavingsRecordBalanceType = {};
21
    const currentDate = this.dateUtils.getCurrentDate();
22
23
    for (const savingsRecord of userSavingsRecords) {
24
      const user = savingsRecord.getUser();
25
      const previousBalance = usersBalances[user.getId()]?.balance || 0;
26
27
      let balance = 0;
28
29
      if (savingsRecord.getType() === SavingsRecordType.INPUT) {
30
        //if ()
31
        balance = previousBalance + savingsRecord.getAmountWithInterestRate();
32
      } else {
33
        balance = previousBalance - savingsRecord.getAmount();
34
      }
35
36
      usersBalances = {
37
        ...usersBalances,
38
        [user.getId()]: {
39
          firstName: user.getFirstName(),
40
          lastName: user.getLastName(),
41
          balance,
42
        }
43
      };
44
    }
45
46
    return usersBalances;
47
  }
48
}
49