fix(SPG-595) Pemesanan - Penyesuaian flow booking
parent
1cd933d64f
commit
40c92dacd1
|
@ -0,0 +1,81 @@
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { BaseIndexManager } from 'src/core/modules/domain/usecase/managers/base-index.manager';
|
||||||
|
import { SeasonPeriodEntity } from '../../entities/season-period.entity';
|
||||||
|
import { SelectQueryBuilder } from 'typeorm';
|
||||||
|
import {
|
||||||
|
Param,
|
||||||
|
RelationParam,
|
||||||
|
} from 'src/core/modules/domain/entities/base-filter.entity';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class CurrentSeasonPeriodManager extends BaseIndexManager<SeasonPeriodEntity> {
|
||||||
|
async prepareData(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async beforeProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async afterProcess(): Promise<void> {
|
||||||
|
Object.assign(this.result, {
|
||||||
|
data: this.result.data.sort((a, b) => a.priority - b.priority)
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
get relations(): RelationParam {
|
||||||
|
return {
|
||||||
|
// relation only join (for query purpose)
|
||||||
|
joinRelations: ['season_type'],
|
||||||
|
|
||||||
|
// relation join and select (relasi yang ingin ditampilkan),
|
||||||
|
selectRelations: [],
|
||||||
|
|
||||||
|
// relation yang hanya ingin dihitung (akan return number)
|
||||||
|
countRelations: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get selects(): string[] {
|
||||||
|
return [
|
||||||
|
`${ this.tableName }.id`,
|
||||||
|
`${ this.tableName }.priority`,
|
||||||
|
`${ this.tableName }.created_at`,
|
||||||
|
`${ this.tableName }.creator_name`,
|
||||||
|
`${ this.tableName }.editor_name`,
|
||||||
|
`${ this.tableName }.updated_at`,
|
||||||
|
`${ this.tableName }.status`,
|
||||||
|
`${ this.tableName }.start_date`,
|
||||||
|
`${ this.tableName }.end_date`,
|
||||||
|
`${ this.tableName }.days`,
|
||||||
|
`${ this.tableName }.holiday_name`,
|
||||||
|
|
||||||
|
'season_type.id',
|
||||||
|
'season_type.name',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
get specificFilter(): Param[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
cols: `${ this.tableName }.holiday_name`,
|
||||||
|
data: this.filterParam.holiday_names,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
setQueryFilter(
|
||||||
|
queryBuilder: SelectQueryBuilder<SeasonPeriodEntity>,
|
||||||
|
): SelectQueryBuilder<SeasonPeriodEntity> {
|
||||||
|
queryBuilder.andWhere(
|
||||||
|
`${ this.tableName }.start_date BETWEEN :from AND :to`,
|
||||||
|
{
|
||||||
|
from: new Date().toLocaleDateString(),
|
||||||
|
to: new Date().toLocaleDateString(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
return queryBuilder;
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,8 +8,9 @@ import { DetailSeasonPeriodManager } from './managers/detail-season-period.manag
|
||||||
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
||||||
import { IndexSeasonPeriodeItemManager } from './managers/index-season-period-item.manager';
|
import { IndexSeasonPeriodeItemManager } from './managers/index-season-period-item.manager';
|
||||||
import { ItemRateEntity } from 'src/modules/item-related/item-rate/domain/entities/item-rate.entity';
|
import { ItemRateEntity } from 'src/modules/item-related/item-rate/domain/entities/item-rate.entity';
|
||||||
import { FilterItemRateDto } from 'src/modules/item-related/item-rate/infrastructure/dto/filter-item-rate.dto';
|
|
||||||
import { ItemRateReadService } from 'src/modules/item-related/item-rate/data/services/item-rate-read.service';
|
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()
|
@Injectable()
|
||||||
export class SeasonPeriodReadOrchestrator extends BaseReadOrchestrator<SeasonPeriodEntity> {
|
export class SeasonPeriodReadOrchestrator extends BaseReadOrchestrator<SeasonPeriodEntity> {
|
||||||
|
@ -17,6 +18,7 @@ export class SeasonPeriodReadOrchestrator extends BaseReadOrchestrator<SeasonPer
|
||||||
private indexManager: IndexSeasonPeriodManager,
|
private indexManager: IndexSeasonPeriodManager,
|
||||||
private detailManager: DetailSeasonPeriodManager,
|
private detailManager: DetailSeasonPeriodManager,
|
||||||
private indexItemManager: IndexSeasonPeriodeItemManager,
|
private indexItemManager: IndexSeasonPeriodeItemManager,
|
||||||
|
private currentPeriodManager: CurrentSeasonPeriodManager,
|
||||||
private serviceData: SeasonPeriodReadService,
|
private serviceData: SeasonPeriodReadService,
|
||||||
private itemServiceRead: ItemRateReadService,
|
private itemServiceRead: ItemRateReadService,
|
||||||
) {
|
) {
|
||||||
|
@ -37,6 +39,15 @@ export class SeasonPeriodReadOrchestrator extends BaseReadOrchestrator<SeasonPer
|
||||||
return this.detailManager.getResult();
|
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>> {
|
async indexItem(params): Promise<PaginationResponse<ItemRateEntity>> {
|
||||||
this.indexItemManager.setFilterParam(params);
|
this.indexItemManager.setFilterParam(params);
|
||||||
this.indexItemManager.setService(
|
this.indexItemManager.setService(
|
||||||
|
|
|
@ -25,6 +25,11 @@ export class SeasonPeriodReadController {
|
||||||
return await this.orchestrator.index(params);
|
return await this.orchestrator.index(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Get('current-period')
|
||||||
|
async currentPeriod(): Promise<SeasonPeriodEntity> {
|
||||||
|
return await this.orchestrator.currentPeriod();
|
||||||
|
}
|
||||||
|
|
||||||
@Get(':id')
|
@Get(':id')
|
||||||
async detail(@Param('id') id: string): Promise<SeasonPeriodEntity> {
|
async detail(@Param('id') id: string): Promise<SeasonPeriodEntity> {
|
||||||
return await this.orchestrator.detail(id);
|
return await this.orchestrator.detail(id);
|
||||||
|
|
|
@ -28,6 +28,7 @@ import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/it
|
||||||
import { ItemRateReadService } from 'src/modules/item-related/item-rate/data/services/item-rate-read.service';
|
import { ItemRateReadService } from 'src/modules/item-related/item-rate/data/services/item-rate-read.service';
|
||||||
import { SeasonPeriodPriceUpdatedHandler } from './domain/usecases/handlers/season-period-price-updated.handler';
|
import { SeasonPeriodPriceUpdatedHandler } from './domain/usecases/handlers/season-period-price-updated.handler';
|
||||||
import { UpdateSeasonPeriodPriceManager } from './domain/usecases/managers/update-season-period-price.manager';
|
import { UpdateSeasonPeriodPriceManager } from './domain/usecases/managers/update-season-period-price.manager';
|
||||||
|
import { CurrentSeasonPeriodManager } from './domain/usecases/managers/get-current-period.manager';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -57,6 +58,7 @@ import { UpdateSeasonPeriodPriceManager } from './domain/usecases/managers/updat
|
||||||
BatchActiveSeasonPeriodManager,
|
BatchActiveSeasonPeriodManager,
|
||||||
BatchConfirmSeasonPeriodManager,
|
BatchConfirmSeasonPeriodManager,
|
||||||
BatchInactiveSeasonPeriodManager,
|
BatchInactiveSeasonPeriodManager,
|
||||||
|
CurrentSeasonPeriodManager,
|
||||||
|
|
||||||
SeasonPeriodDataService,
|
SeasonPeriodDataService,
|
||||||
SeasonPeriodReadService,
|
SeasonPeriodReadService,
|
||||||
|
|
Loading…
Reference in New Issue