Passed
Push — master ( fa5b81...8559eb )
by Mathieu
01:32
created

UpdateShippingCostAction   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 23
dl 0
loc 24
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A index 0 14 2
1
import {
2
  Body,
3
  Controller,
4
  Inject,
5
  BadRequestException,
6
  UseGuards,
7
  Put,
8
  Param
9
} from '@nestjs/common';
10
import { AuthGuard } from '@nestjs/passport';
11
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
12
import { ICommandBus } from 'src/Application/ICommandBus';
13
import { UpdateShippingCostCommand } from 'src/Application/Order/Command/ShippingCost/UpdateShippingCostCommand';
14
import { UserRole } from 'src/Domain/User/User.entity';
15
import { IdDTO } from 'src/Infrastructure/Common/DTO/IdDTO';
16
import { Roles } from 'src/Infrastructure/User/Decorator/Roles';
17
import { RolesGuard } from 'src/Infrastructure/User/Security/RolesGuard';
18
import { ShippingCostDTO } from '../../DTO/ShippingCostDTO';
19
20
@Controller('shipping-costs')
21
@ApiTags('Order')
22
@ApiBearerAuth()
23
@UseGuards(AuthGuard('bearer'), RolesGuard)
24
export class UpdateShippingCostAction {
25
  constructor(
26
    @Inject('ICommandBus')
27
    private readonly commandBus: ICommandBus
28
  ) {}
29
30
  @Put(':id')
31
  @Roles(UserRole.PHOTOGRAPHER)
32
  @ApiOperation({ summary: 'Update shipping cost' })
33
  public async index(@Param() idDto: IdDTO, @Body() dto: ShippingCostDTO) {
34
    try {
35
      const { price, grams } = dto;
36
      const id = await this.commandBus.execute(
37
        new UpdateShippingCostCommand(idDto.id, grams, price)
38
      );
39
40
      return { id };
41
    } catch (e) {
42
      throw new BadRequestException(e.message);
43
    }
44
  }
45
}
46