Passed
Pull Request — master (#406)
by
unknown
02:02 queued 14s
created

server/src/Infrastructure/HumanResource/Leave/Controller/GetLeaveRequestController.ts   A

Complexity

Total Complexity 1
Complexity/F 1

Size

Lines of Code 52
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A GetLeaveRequestController.get 0 17 1
1
import {
2
  Controller,
3
  Inject,
4
  UseGuards,
5
  Get,
6
  Render,
7
  Query,
8
  Param
9
} from '@nestjs/common';
10
import { IQueryBus } from 'src/Application/IQueryBus';
11
import { User } from 'src/Domain/HumanResource/User/User.entity';
12
import { IsAuthenticatedGuard } from 'src/Infrastructure/HumanResource/User/Security/IsAuthenticatedGuard';
13
import { WithName } from 'src/Infrastructure/Common/ExtendedRouting/WithName';
14
import { LoggedUser } from '../../User/Decorator/LoggedUser';
15
import { LeaveRequestTableFactory } from '../Table/LeaveRequestTableFactory';
16
import { GetLeaveRequestByIdQuery } from 'src/Application/HumanResource/Leave/Query/GetLeaveRequestByIdQuery';
17
import { IdDTO } from 'src/Infrastructure/Common/DTO/IdDTO';
18
import { CanLeaveRequestBeModerated } from 'src/Domain/HumanResource/Leave/Specification/CanLeaveRequestBeModerated';
19
import { LeaveRequestView } from 'src/Application/HumanResource/Leave/View/LeaveRequestView';
20
import { LeaveRequestDetailView } from 'src/Application/HumanResource/Leave/View/LeaveRequestDetailView';
21
22
@Controller('app/people/leaves')
23
@UseGuards(IsAuthenticatedGuard)
24
export class GetLeaveRequestController {
25
  constructor(
26
    @Inject('IQueryBus')
27
    private readonly queryBus: IQueryBus,
28
    private readonly tableFactory: LeaveRequestTableFactory,
29
    private readonly canLeaveRequestBeModerated: CanLeaveRequestBeModerated
30
  ) {}
31
32
  @Get(':id')
33
  @WithName('people_leave_requests_detail')
34
  @Render('pages/leave_requests/detail.njk')
35
  public async get(@Param() { id }: IdDTO, @LoggedUser() user: User) {
36
    const leaveRequest: LeaveRequestDetailView = await this.queryBus.execute(
37
      new GetLeaveRequestByIdQuery(id)
38
    );
39
40
    const inline = this.tableFactory.createInline(leaveRequest);
41
42
    return {
43
      leaveRequest,
44
      inline,
45
      canModerate: this.canLeaveRequestBeModerated.isSatisfiedBy(
46
        leaveRequest,
47
        user
48
      )
49
    };
50
  }
51
}
52