Completed
Push — master ( ce7cb4...236e78 )
by Nicolas
15s queued 13s
created

GetPaySlipByIdQueryHandler   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 19 2
1
import {QueryHandler} from '@nestjs/cqrs';
2
import {Inject} from '@nestjs/common';
3
import {GetPaySlipByIdQuery} from './GetPaySlipByIdQuery';
4
import {PaySlipView} from '../View/PaySlipView';
5
import {IPaySlipRepository} from 'src/Domain/HumanResource/PaySlip/Repository/IPaySlipRepository';
6
import {UserSummaryView} from '../../User/View/UserSummaryView';
7
import {FileView} from 'src/Application/File/View/FileView';
8
import {PaySlipNotFoundException} from 'src/Domain/HumanResource/PaySlip/Exception/PaySlipNotFoundException';
9
10
@QueryHandler(GetPaySlipByIdQuery)
11
export class GetPaySlipByIdQueryHandler {
12
  constructor(
13
    @Inject('IPaySlipRepository')
14
    private readonly payslipRepository: IPaySlipRepository
15
  ) {}
16
17
  public async execute(query: GetPaySlipByIdQuery): Promise<PaySlipView> {
18
    const paySlip = await this.payslipRepository.findOneById(query.id);
19
    if (!paySlip) {
20
      throw new PaySlipNotFoundException();
21
    }
22
23
    const user = paySlip.getUser();
24
    const file = paySlip.getFile();
25
26
    return new PaySlipView(
27
      paySlip.getId(),
28
      paySlip.getDate(),
29
      new UserSummaryView(
30
        user.getId(),
31
        user.getFirstName(),
32
        user.getLastName()
33
      ),
34
      new FileView(file.getId(), file.getOriginalName(), file.getSize())
35
    );
36
  }
37
}
38