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

CreateMealTicketRemovalCommandHandler.execute   A

Complexity

Conditions 2

Size

Total Lines 16
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 13
dl 0
loc 16
rs 9.75
c 0
b 0
f 0
1
import { CommandHandler } from '@nestjs/cqrs';
2
import { Inject } from '@nestjs/common';
3
import { IMealTicketRemovalRepository } from 'src/Domain/HumanResource/MealTicket/Repository/IMealTicketRemovalRepository';
4
import { MealTicketRemoval } from 'src/Domain/HumanResource/MealTicket/MealTicketRemoval.entity';
5
import { MealTicketRemovalAlreadyExistException } from 'src/Domain/HumanResource/MealTicket/Exception/MealTicketRemovalAlreadyExistException';
6
import { IsMealTicketRemovalAlreadyExist } from 'src/Domain/HumanResource/MealTicket/Specification/IsMealTicketRemovalAlreadyExist';
7
import { CreateMealTicketRemovalCommand } from './CreateMealTicketRemovalCommand';
8
9
@CommandHandler(CreateMealTicketRemovalCommand)
10
export class CreateMealTicketRemovalCommandHandler {
11
  constructor(
12
    @Inject('IMealTicketRemovalRepository')
13
    private readonly mealTicketRemovalRepository: IMealTicketRemovalRepository,
14
    private readonly isMealTicketRemovalAlreadyExist: IsMealTicketRemovalAlreadyExist,
15
  ) {}
16
17
  public async execute(command: CreateMealTicketRemovalCommand): Promise<string> {
18
    const { date, comment, user } = command;
19
20
    if (
21
      true ===
22
      (await this.isMealTicketRemovalAlreadyExist.isSatisfiedBy(user, new Date(date)))
23
    ) {
24
      throw new MealTicketRemovalAlreadyExistException();
25
    }
26
27
    const mealTicketRemoval = await this.mealTicketRemovalRepository.save(
28
      new MealTicketRemoval(date, comment, user)
29
    );
30
31
    return mealTicketRemoval.getId();
32
  }
33
}
34