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

UpdateLeaveRequestAction.index   A

Complexity

Conditions 2

Size

Total Lines 28
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 24
dl 0
loc 28
rs 9.304
c 0
b 0
f 0
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