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

api/src/Application/Order/Command/ShippingCost/CreateShippingCostCommandHandler.ts   A

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 31
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A CreateShippingCostCommandHandler.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