Total Complexity | 2 |
Complexity/F | 2 |
Lines of Code | 34 |
Function Count | 1 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { Inject } from '@nestjs/common'; |
||
2 | import { IEventRepository } from '../Repository/IEventRepository'; |
||
3 | import { Event } from '../Event.entity'; |
||
4 | import { ILeaveRepository } from 'src/Domain/HumanResource/Leave/Repository/ILeaveRepository'; |
||
5 | |||
6 | export class IsMaximumTimeSpentReached { |
||
7 | constructor( |
||
8 | @Inject('IEventRepository') |
||
9 | private readonly eventRepository: IEventRepository, |
||
10 | @Inject('ILeaveRepository') |
||
11 | private readonly leaveRepository: ILeaveRepository |
||
12 | ) {} |
||
13 | |||
14 | public async isSatisfiedBy( |
||
15 | event: Event, |
||
16 | newTime: number = 0 |
||
17 | ): Promise<boolean> { |
||
18 | const user = event.getUser(); |
||
19 | const date = event.getDate(); |
||
20 | |||
21 | const [eventTime, leaveTime] = await Promise.all([ |
||
22 | this.eventRepository.sumOfTimeSpentByUserAndDate(user, date), |
||
23 | this.leaveRepository.sumOfDurationLeaveByUserAndDate(user, date) |
||
24 | ]); |
||
25 | |||
26 | const timeSpent = eventTime + leaveTime; |
||
27 | const dayTime = event.getId() |
||
28 | ? timeSpent - event.getTime() + newTime |
||
29 | : timeSpent + event.getTime(); |
||
30 | |||
31 | return dayTime > Event.MAXIMUM_TIMESPENT_PER_DAY; |
||
32 | } |
||
33 | } |
||
34 |