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

DeleteActivityCommandHandler.execute   A

Complexity

Conditions 3

Size

Total Lines 14
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 14
rs 9.8
c 0
b 0
f 0
cc 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