Passed
Pull Request — master (#182)
by Mathieu
01:41
created

MealTicketRemovalRepository.findOneByUserAndDate   A

Complexity

Conditions 1

Size

Total Lines 16
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 15
dl 0
loc 16
rs 9.65
c 0
b 0
f 0
1
import { InjectRepository } from '@nestjs/typeorm';
2
import { Repository } from 'typeorm';
3
import { MealTicketRemoval } from 'src/Domain/HumanResource/MealTicket/MealTicketRemoval.entity';
4
import { IMealTicketRemovalRepository } from 'src/Domain/HumanResource/MealTicket/Repository/IMealTicketRemovalRepository';
5
import { User } from 'src/Domain/HumanResource/User/User.entity';
6
7
export class MealTicketRemovalRepository implements IMealTicketRemovalRepository {
8
  constructor(
9
    @InjectRepository(MealTicketRemoval)
10
    private readonly repository: Repository<MealTicketRemoval>
11
  ) {}
12
13
  public save(mealTicketRemoval: MealTicketRemoval): Promise<MealTicketRemoval> {
14
    return this.repository.save(mealTicketRemoval);
15
  }
16
17
  public findOneByUserAndDate(
18
    user: User,
19
    date: Date
20
  ): Promise<MealTicketRemoval | undefined> {
21
    const month = new Date(date).getMonth() + 1;
22
    const year = new Date(date).getFullYear();
23
    const day = new Date(date).getDay();
24
25
    return this.repository
26
      .createQueryBuilder('mealTicketRemoval')
27
      .select(['mealTicketRemoval.id'])
28
      .where('mealTicketRemoval.user = :userId', { userId: user.getId() })
29
      .andWhere('extract(month FROM mealTicketRemoval.date) = :month', { month })
30
      .andWhere('extract(year FROM mealTicketRemoval.date) = :year', { year })
31
      .andWhere('extract(day FROM mealTicketRemoval.date) = :day', { day })
32
      .getOne();
33
  }
34
}
35