Passed
Pull Request — master (#63)
by Nicolas
01:22
created

DeleteActivityCommandHandler   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 19
dl 0
loc 21
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A execute 0 14 3
1
import {CommandHandler} from '@nestjs/cqrs';
2
import {Inject} from '@nestjs/common';
3
import {IActivityRepository} from 'src/Domain/Activity/Repository/IActivityRepository';
4
import {DeleteActivityCommand} from './DeleteActivityCommand';
5
import {ActivityNotFoundException} from '../../../Domain/Activity/Exception/ActivityNotFoundException';
6
import {Activity} from '../../../Domain/Activity/Activity.entity';
7
import {NotActivityOwnerException} from '../../../Domain/Activity/Exception/NotActivityOwnerException';
8
9
@CommandHandler(DeleteActivityCommand)
10
export class DeleteActivityCommandHandler {
11
  constructor(
12
    @Inject('IActivityRepository')
13
    private readonly activityRepository: IActivityRepository
14
  ) {}
15
16
  public async execute(command: DeleteActivityCommand): Promise<void> {
17
    const {activityId, user} = command;
18
    const activity = await this.activityRepository.findOneById(activityId);
19
20
    if (!(activity instanceof Activity)) {
21
      throw new ActivityNotFoundException();
22
    }
23
24
    if (activity.getUser().getId() !== user.getId()) {
25
      throw new NotActivityOwnerException();
26
    }
27
28
    this.activityRepository.deleteById(activityId);
29
  }
30
}
31