UpdateTransitionStatus.ts 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. import { Result, RoleName, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
  2. import { TransitionStatusRepositoryInterface } from '../../Transition/TransitionStatusRepositoryInterface'
  3. import { UpdateTransitionStatusDTO } from './UpdateTransitionStatusDTO'
  4. import { RoleServiceInterface } from '../../Role/RoleServiceInterface'
  5. export class UpdateTransitionStatus implements UseCaseInterface<void> {
  6. constructor(
  7. private transitionStatusRepository: TransitionStatusRepositoryInterface,
  8. private roleService: RoleServiceInterface,
  9. ) {}
  10. async execute(dto: UpdateTransitionStatusDTO): Promise<Result<void>> {
  11. const userUuidOrError = Uuid.create(dto.userUuid)
  12. if (userUuidOrError.isFailed()) {
  13. return Result.fail(userUuidOrError.getError())
  14. }
  15. const userUuid = userUuidOrError.getValue()
  16. if (dto.status === 'FINISHED') {
  17. await this.transitionStatusRepository.removeStatus(dto.userUuid)
  18. await this.roleService.addRoleToUser(userUuid, RoleName.create(RoleName.NAMES.TransitionUser).getValue())
  19. return Result.ok()
  20. }
  21. await this.transitionStatusRepository.updateStatus(dto.userUuid, dto.status)
  22. return Result.ok()
  23. }
  24. }