Passed
Pull Request — master (#141)
by Mathieu
01:39
created

AddEventsAction   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 31
dl 0
loc 33
c 0
b 0
f 0
rs 10

1 Function

Rating   Name   Duplication   Size   Complexity  
A index 0 23 2
1
import {
2
  Body,
3
  Post,
4
  Controller,
5
  Inject,
6
  BadRequestException,
7
  UseGuards
8
} from '@nestjs/common';
9
import { AuthGuard } from '@nestjs/passport';
10
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
11
import { ICommandBus } from 'src/Application/ICommandBus';
12
import { LoggedUser } from 'src/Infrastructure/HumanResource/User/Decorator/LoggedUser';
13
import { User, UserRole } from 'src/Domain/HumanResource/User/User.entity';
14
import { AddEventCommand } from 'src/Application/FairCalendar/Command/AddEventCommand';
15
import { AddEventDTO } from '../DTO/AddEventDTO';
16
import { RolesGuard } from 'src/Infrastructure/HumanResource/User/Security/RolesGuard';
17
import { Roles } from 'src/Infrastructure/HumanResource/User/Decorator/Roles';
18
19
@Controller('events')
20
@ApiTags('Event')
21
@ApiBearerAuth()
22
@UseGuards(AuthGuard('bearer'), RolesGuard)
23
export class AddEventsAction {
24
  constructor(
25
    @Inject('ICommandBus')
26
    private readonly commandBus: ICommandBus
27
  ) {}
28
29
  @Post()
30
  @Roles(UserRole.COOPERATOR, UserRole.EMPLOYEE)
31
  @ApiOperation({summary: 'Add new event(s)'})
32
  public async index(@Body() dto: AddEventDTO, @LoggedUser() user: User) {
33
    try {
34
      const {type, startDate, endDate, projectId, taskId, summary, time} = dto;
35
      const result = await this.commandBus.execute(
36
        new AddEventCommand(
37
          type,
38
          user,
39
          Number(time),
40
          new Date(startDate),
41
          new Date(endDate),
42
          projectId,
43
          taskId,
44
          summary
45
        )
46
      );
47
48
      return { ...result };
49
    } catch (e) {
50
      throw new BadRequestException(e.message);
51
    }
52
  }
53
}
54