pos-be/src/modules/season-related/season-period/domain/usecases/season-period-read.orchestr...

61 lines
2.8 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { IndexSeasonPeriodManager } from './managers/index-season-period.manager';
import { SeasonPeriodReadService } from '../../data/services/season-period-read.service';
import { SeasonPeriodEntity } from '../entities/season-period.entity';
import { PaginationResponse } from 'src/core/response/domain/ok-response.interface';
import { BaseReadOrchestrator } from 'src/core/modules/domain/usecase/orchestrators/base-read.orchestrator';
import { DetailSeasonPeriodManager } from './managers/detail-season-period.manager';
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
import { IndexSeasonPeriodeItemManager } from './managers/index-season-period-item.manager';
import { ItemRateEntity } from 'src/modules/item-related/item-rate/domain/entities/item-rate.entity';
import { ItemRateReadService } from 'src/modules/item-related/item-rate/data/services/item-rate-read.service';
import { CurrentSeasonPeriodManager } from './managers/get-current-period.manager';
import { FilterSeasonPeriodDto } from '../../infrastructure/dto/filter-season-period.dto';
@Injectable()
export class SeasonPeriodReadOrchestrator extends BaseReadOrchestrator<SeasonPeriodEntity> {
constructor(
private indexManager: IndexSeasonPeriodManager,
private detailManager: DetailSeasonPeriodManager,
private indexItemManager: IndexSeasonPeriodeItemManager,
private currentPeriodManager: CurrentSeasonPeriodManager,
private serviceData: SeasonPeriodReadService,
private itemServiceRead: ItemRateReadService,
) {
super();
}
async index(params): Promise<PaginationResponse<SeasonPeriodEntity>> {
this.indexManager.setFilterParam(params);
this.indexManager.setService(this.serviceData, TABLE_NAME.SEASON_PERIOD);
await this.indexManager.execute();
return this.indexManager.getResult();
}
async detail(dataId: string): Promise<SeasonPeriodEntity> {
this.detailManager.setData(dataId);
this.detailManager.setService(this.serviceData, TABLE_NAME.SEASON_PERIOD);
await this.detailManager.execute();
return this.detailManager.getResult();
}
async currentPeriod(): Promise<SeasonPeriodEntity> {
const params = new FilterSeasonPeriodDto();
this.currentPeriodManager.setFilterParam(params);
this.currentPeriodManager.setService(this.serviceData, TABLE_NAME.SEASON_PERIOD);
await this.currentPeriodManager.execute();
const data = this.currentPeriodManager.getResult();
return data.data[0]
}
async indexItem(params): Promise<PaginationResponse<ItemRateEntity>> {
this.indexItemManager.setFilterParam(params);
this.indexItemManager.setService(
this.itemServiceRead,
TABLE_NAME.SEASON_PERIOD,
);
await this.indexItemManager.execute();
return this.indexItemManager.getResult();
}
}