import { BaseBatchUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-batch-update-status.manager'; import { EventTopics, validateRelations, } from 'src/core/strings/constants/interface.constants'; import { TenantChangeStatusEvent } from '../../entities/event/tenant-change-status.event'; import { BatchResult } from 'src/core/response/domain/ok-response.interface'; import { Injectable } from '@nestjs/common'; import { UserEntity } from 'src/modules/user-related/user/domain/entities/user.entity'; import { UserModel } from 'src/modules/user-related/user/data/models/user.model'; import { SelectQueryBuilder } from 'typeorm'; import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class BatchInactiveTenantManager extends BaseBatchUpdateStatusManager { get validateRelations(): validateRelations[] { return [ { relation: 'items', query: (qb: SelectQueryBuilder) => { return qb.andWhere('total_items.status In (:...statuses)', { statuses: [STATUS.ACTIVE], }); }, message: 'Failed! There is active item', }, ]; } validateData(data: UserEntity): Promise { return; } beforeProcess(): Promise { return; } afterProcess(): Promise { return; } get entityTarget(): any { return UserModel; } get eventTopics(): EventTopics[] { return [ { topic: TenantChangeStatusEvent, }, ]; } getResult(): BatchResult { return this.result; } }