Passed
Pull Request — master (#104)
by Mathieu
01:35
created

server/src/Infrastructure/HumanResource/PaySlip/Repository/PaySlipRepository.ts   A

Complexity

Total Complexity 3
Complexity/F 1

Size

Lines of Code 52
Function Count 3

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 43
mnd 0
bc 0
fnc 3
dl 0
loc 52
bpm 0
cpm 1
noi 0
c 0
b 0
f 0
rs 10

3 Functions

Rating   Name   Duplication   Size   Complexity  
A PaySlipRepository.findOneByUserAndDate 0 14 1
A PaySlipRepository.findAll 0 17 1
A PaySlipRepository.save 0 3 1
1
import {InjectRepository} from '@nestjs/typeorm';
2
import {Repository} from 'typeorm';
3
import {IPaySlipRepository} from 'src/Domain/HumanResource/PaySlip/Repository/IPaySlipRepository';
4
import {PaySlip} from 'src/Domain/HumanResource/PaySlip/PaySlip.entity';
5
import {User} from 'src/Domain/HumanResource/User/User.entity';
6
7
export class PaySlipRepository implements IPaySlipRepository {
8
  constructor(
9
    @InjectRepository(PaySlip)
10
    private readonly repository: Repository<PaySlip>
11
  ) {}
12
13
  public save(paySlip: PaySlip): Promise<PaySlip> {
14
    return this.repository.save(paySlip);
15
  }
16
17
  public findOneByUserAndDate(
18
    user: User,
19
    date: Date
20
  ): Promise<PaySlip | undefined> {
21
    const month = new Date(date).getMonth() + 1;
22
    const year = new Date(date).getFullYear();
23
24
    return this.repository
25
      .createQueryBuilder('paySlip')
26
      .select(['paySlip.id'])
27
      .where('paySlip.user = :userId', {userId: user.getId()})
28
      .andWhere('extract(month FROM paySlip.date) = :month', {month})
29
      .andWhere('extract(year FROM paySlip.date) = :year', {year})
30
      .getOne();
31
  }
32
33
  public findAll(): Promise<PaySlip[]> {
34
    return this.repository
35
      .createQueryBuilder('paySlip')
36
      .select([
37
        'paySlip.id',
38
        'paySlip.date',
39
        'user.id',
40
        'user.firstName',
41
        'user.lastName',
42
        'file.id',
43
        'file.name',
44
        'file.size'
45
      ])
46
      .innerJoin('paySlip.file', 'file')
47
      .innerJoin('paySlip.user', 'user')
48
      .orderBy('paySlip.date', 'DESC')
49
      .getMany();
50
  }
51
}
52