Passed
Pull Request — master (#182)
by Mathieu
04:35
created

server/src/Application/HumanResource/MealTicket/Command/CreateMealTicketRemovalCommandHandler.ts   A

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 39
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A CreateMealTicketRemovalCommandHandler.execute 0 21 2
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(
18
    command: CreateMealTicketRemovalCommand
19
  ): Promise<string> {
20
    const { date, comment, user } = command;
21
22
    if (
23
      true ===
24
      (await this.isMealTicketRemovalAlreadyExist.isSatisfiedBy(
25
        user,
26
        new Date(date)
27
      ))
28
    ) {
29
      throw new MealTicketRemovalAlreadyExistException();
30
    }
31
32
    const mealTicketRemoval = await this.mealTicketRemovalRepository.save(
33
      new MealTicketRemoval(date, comment, user)
34
    );
35
36
    return mealTicketRemoval.getId();
37
  }
38
}
39