Passed
Push — master ( f675c2...5b9c5e )
by Mathieu
01:55
created

server/src/Application/Billing/Query/DailyRate/GetDailyRatesQueryHandler.ts   A

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 45
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A GetDailyRatesQueryHandler.execute 0 27 2
1
import {QueryHandler} from '@nestjs/cqrs';
2
import {Inject} from '@nestjs/common';
3
import {GetDailyRatesQuery} from './GetDailyRatesQuery';
4
import {IDailyRateRepository} from 'src/Domain/Billing/Repository/IDailyRateRepository';
5
import {DailyRateView} from '../../View/DailyRate/DailyRateView';
6
import {UserView} from 'src/Application/User/View/UserView';
7
import {TaskView} from 'src/Application/Task/View/TaskView';
8
import {CustomerView} from 'src/Application/Customer/View/CustomerView';
9
10
@QueryHandler(GetDailyRatesQuery)
11
export class GetDailyRatesQueryHandler {
12
  constructor(
13
    @Inject('IDailyRateRepository')
14
    private readonly dailyRateRepository: IDailyRateRepository
15
  ) {}
16
17
  public async execute(query: GetDailyRatesQuery): Promise<DailyRateView[]> {
18
    const dailyRates = await this.dailyRateRepository.findAll();
19
    const results: DailyRateView[] = [];
20
21
    for (const dailyRate of dailyRates) {
22
      const user = dailyRate.getUser();
23
      const task = dailyRate.getTask();
24
      const customer = dailyRate.getCustomer();
25
26
      results.push(
27
        new DailyRateView(
28
          dailyRate.getId(),
29
          dailyRate.getAmount() / 100,
30
          new UserView(
31
            user.getId(),
32
            user.getFirstName(),
33
            user.getLastName(),
34
            user.getEmail()
35
          ),
36
          new TaskView(task.getId(), task.getName()),
37
          new CustomerView(customer.getId(), customer.getName())
38
        )
39
      );
40
    }
41
42
    return results;
43
  }
44
}
45