Passed
Push — master ( 829953...28db6b )
by Mathieu
01:39
created

CreateShippingCostCommandHandler   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 19
dl 0
loc 21
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 13 2
1
import { Inject } from '@nestjs/common';
2
import { CommandHandler } from '@nestjs/cqrs';
3
import { ShippingCostAlreadyExistException } from 'src/Domain/Order/Exception/ShippingCostAlreadyExistException';
4
import { IShippingCostRepository } from 'src/Domain/Order/Repository/IShippingCostRepository';
5
import { ShippingCost } from 'src/Domain/Order/ShippingCost.entity';
6
import { IsShippingCostAlreadyExist } from 'src/Domain/Order/Specification/IsShippingCostAlreadyExist';
7
import { CreateShippingCostCommand } from './CreateShippingCostCommand';
8
9
@CommandHandler(CreateShippingCostCommand)
10
export class CreateShippingCostCommandHandler {
11
  constructor(
12
    @Inject('IShippingCostRepository')
13
    private readonly shippingcostRepository: IShippingCostRepository,
14
    private readonly isShippingCostAlreadyExist: IsShippingCostAlreadyExist
15
  ) {}
16
17
  public async execute(command: CreateShippingCostCommand): Promise<string> {
18
    const { grams, price } = command;
19
20
    if (true === (await this.isShippingCostAlreadyExist.isSatisfiedBy(grams))) {
21
      throw new ShippingCostAlreadyExistException();
22
    }
23
24
    const shippingCost = await this.shippingcostRepository.save(
25
      new ShippingCost(grams, Math.round(price * 100))
26
    );
27
28
    return shippingCost.getId();
29
  }
30
}
31