12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import { Result, RoleName, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
- import { GetTransitionStatusDTO } from './GetTransitionStatusDTO'
- import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
- import { TransitionStatusRepositoryInterface } from '../../Transition/TransitionStatusRepositoryInterface'
- export class GetTransitionStatus
- implements UseCaseInterface<'TO-DO' | 'STARTED' | 'IN_PROGRESS' | 'FINISHED' | 'FAILED'>
- {
- constructor(
- private transitionStatusRepository: TransitionStatusRepositoryInterface,
- private userRepository: UserRepositoryInterface,
- ) {}
- async execute(
- dto: GetTransitionStatusDTO,
- ): Promise<Result<'TO-DO' | 'STARTED' | 'IN_PROGRESS' | 'FINISHED' | 'FAILED'>> {
- const userUuidOrError = Uuid.create(dto.userUuid)
- if (userUuidOrError.isFailed()) {
- return Result.fail(userUuidOrError.getError())
- }
- const userUuid = userUuidOrError.getValue()
- const user = await this.userRepository.findOneByUuid(userUuid)
- if (user === null) {
- return Result.fail('User not found.')
- }
- const roles = await user.roles
- for (const role of roles) {
- if (role.name === RoleName.NAMES.TransitionUser) {
- return Result.ok('FINISHED')
- }
- }
- const transitionStatus = await this.transitionStatusRepository.getStatus(userUuid.value, dto.transitionType)
- if (transitionStatus === null) {
- return Result.ok('TO-DO')
- }
- return Result.ok(transitionStatus)
- }
- }
|