Passed
Pull Request — master (#213)
by
unknown
01:40
created

UpdateLeaveRequestAction   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 34
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 2

1 Function

Rating   Name   Duplication   Size   Complexity  
A index 0 28 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 { LeaveRequestDTO } from '../DTO/LeaveRequestDTO';
14
import { RolesGuard } from 'src/Infrastructure/HumanResource/User/Security/RolesGuard';
15
import { UserRole, } from 'src/Domain/HumanResource/User/User.entity';
16
import { Roles } from 'src/Infrastructure/HumanResource/User/Decorator/Roles';
17
import { UpdateLeaveRequestCommand } from 'src/Application/HumanResource/Leave/Command/UpdateLeaveRequestCommand';
18
19
@Controller('leave-requests')
20
@ApiTags('Human Resource')
21
@ApiBearerAuth()
22
@UseGuards(AuthGuard('bearer'), RolesGuard)
23
export class UpdateLeaveRequestAction {
24
  constructor(
25
    @Inject('ICommandBus')
26
    private readonly commandBus: ICommandBus
27
  ) { }
28
29
  @Put(':id')
30
  @Roles(UserRole.COOPERATOR, UserRole.EMPLOYEE)
31
  @ApiOperation({ summary: 'Update existing leave request' })
32
  public async index(
33
    @Param() { id },
34
    @Body() dto: LeaveRequestDTO,
35
  ) {
36
    const { type, startDate, startsAllDay, endDate, endsAllDay, comment } = dto;
37
38
39
40
    try {
41
      await this.commandBus.execute(
42
        new UpdateLeaveRequestCommand(
43
          id,
44
          type,
45
          startDate,
46
          startsAllDay,
47
          endDate,
48
          endsAllDay,
49
          comment
50
        )
51
      );
52
53
      return { id };
54
    } catch (e) {
55
      throw new BadRequestException(e.message);
56
    }
57
  }
58
}
59