Compare commits
3 Commits
5b7df0e372
...
9bc2f5fde2
Author | SHA1 | Date |
---|---|---|
|
9bc2f5fde2 | |
|
0d8ec858eb | |
|
c97399ae8f |
|
@ -0,0 +1,65 @@
|
||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { BaseIndexManager } from 'src/core/modules/domain/usecase/managers/base-index.manager';
|
||||||
|
import { TimeGroupEntity } from '../../entities/time-group.entity';
|
||||||
|
import { SelectQueryBuilder } from 'typeorm';
|
||||||
|
import {
|
||||||
|
Param,
|
||||||
|
RelationParam,
|
||||||
|
} from 'src/core/modules/domain/entities/base-filter.entity';
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// Implementasikan filter by start_time, end_timen, dan max_usage_time
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class IndexPublicTimeGroupManager extends BaseIndexManager<TimeGroupEntity> {
|
||||||
|
async prepareData(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async beforeProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async afterProcess(): Promise<void> {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
get relations(): RelationParam {
|
||||||
|
return {
|
||||||
|
joinRelations: ['items'],
|
||||||
|
selectRelations: [],
|
||||||
|
countRelations: ['items'],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get selects(): string[] {
|
||||||
|
return [
|
||||||
|
`${this.tableName}.id`,
|
||||||
|
`${this.tableName}.status`,
|
||||||
|
`${this.tableName}.name`,
|
||||||
|
`${this.tableName}.start_time`,
|
||||||
|
`${this.tableName}.end_time`,
|
||||||
|
`${this.tableName}.max_usage_time`,
|
||||||
|
`${this.tableName}.created_at`,
|
||||||
|
`${this.tableName}.creator_name`,
|
||||||
|
`${this.tableName}.updated_at`,
|
||||||
|
`${this.tableName}.editor_name`,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
get specificFilter(): Param[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
cols: `${this.tableName}.name`,
|
||||||
|
data: this.filterParam.names,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
setQueryFilter(
|
||||||
|
queryBuilder: SelectQueryBuilder<TimeGroupEntity>,
|
||||||
|
): SelectQueryBuilder<TimeGroupEntity> {
|
||||||
|
queryBuilder.andWhere(`items.id is not null`);
|
||||||
|
return queryBuilder;
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,11 +6,13 @@ import { PaginationResponse } from 'src/core/response/domain/ok-response.interfa
|
||||||
import { BaseReadOrchestrator } from 'src/core/modules/domain/usecase/orchestrators/base-read.orchestrator';
|
import { BaseReadOrchestrator } from 'src/core/modules/domain/usecase/orchestrators/base-read.orchestrator';
|
||||||
import { DetailTimeGroupManager } from './managers/detail-time-group.manager';
|
import { DetailTimeGroupManager } from './managers/detail-time-group.manager';
|
||||||
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
||||||
|
import { IndexPublicTimeGroupManager } from './managers/index-public-time-group.manager';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TimeGroupReadOrchestrator extends BaseReadOrchestrator<TimeGroupEntity> {
|
export class TimeGroupReadOrchestrator extends BaseReadOrchestrator<TimeGroupEntity> {
|
||||||
constructor(
|
constructor(
|
||||||
private indexManager: IndexTimeGroupManager,
|
private indexManager: IndexTimeGroupManager,
|
||||||
|
private indexPublicManager: IndexPublicTimeGroupManager,
|
||||||
private detailManager: DetailTimeGroupManager,
|
private detailManager: DetailTimeGroupManager,
|
||||||
private serviceData: TimeGroupReadService,
|
private serviceData: TimeGroupReadService,
|
||||||
) {
|
) {
|
||||||
|
@ -24,6 +26,16 @@ export class TimeGroupReadOrchestrator extends BaseReadOrchestrator<TimeGroupEnt
|
||||||
return this.indexManager.getResult();
|
return this.indexManager.getResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async indexPublic(params): Promise<PaginationResponse<TimeGroupEntity>> {
|
||||||
|
this.indexPublicManager.setFilterParam(params);
|
||||||
|
this.indexPublicManager.setService(
|
||||||
|
this.serviceData,
|
||||||
|
TABLE_NAME.TIME_GROUPS,
|
||||||
|
);
|
||||||
|
await this.indexPublicManager.execute();
|
||||||
|
return this.indexPublicManager.getResult();
|
||||||
|
}
|
||||||
|
|
||||||
async detail(dataId: string): Promise<TimeGroupEntity> {
|
async detail(dataId: string): Promise<TimeGroupEntity> {
|
||||||
this.detailManager.setData(dataId);
|
this.detailManager.setData(dataId);
|
||||||
this.detailManager.setService(this.serviceData, TABLE_NAME.TIME_GROUPS);
|
this.detailManager.setService(this.serviceData, TABLE_NAME.TIME_GROUPS);
|
||||||
|
|
|
@ -28,3 +28,19 @@ export class TimeGroupReadController {
|
||||||
return await this.orchestrator.detail(id);
|
return await this.orchestrator.detail(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiTags(`${MODULE_NAME.TIME_GROUPS.split('-').join(' ')} List- read`)
|
||||||
|
// @Controller(`v1/${MODULE_NAME.TIME_GROUPS}-list`)
|
||||||
|
@Controller(``)
|
||||||
|
@Public()
|
||||||
|
export class TimeGroupPublicReadController {
|
||||||
|
constructor(private orchestrator: TimeGroupReadOrchestrator) {}
|
||||||
|
|
||||||
|
@Get('v1/time-group-list-by-items')
|
||||||
|
@Pagination()
|
||||||
|
async indexPublic(
|
||||||
|
@Query() params: FilterTimeGroupDto,
|
||||||
|
): Promise<PaginationResponse<TimeGroupEntity>> {
|
||||||
|
return await this.orchestrator.indexPublic(params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,7 +4,10 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants';
|
import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants';
|
||||||
import { TimeGroupDataService } from './data/services/time-group-data.service';
|
import { TimeGroupDataService } from './data/services/time-group-data.service';
|
||||||
import { TimeGroupReadService } from './data/services/time-group-read.service';
|
import { TimeGroupReadService } from './data/services/time-group-read.service';
|
||||||
import { TimeGroupReadController } from './infrastructure/time-group-read.controller';
|
import {
|
||||||
|
TimeGroupPublicReadController,
|
||||||
|
TimeGroupReadController,
|
||||||
|
} from './infrastructure/time-group-read.controller';
|
||||||
import { TimeGroupReadOrchestrator } from './domain/usecases/time-group-read.orchestrator';
|
import { TimeGroupReadOrchestrator } from './domain/usecases/time-group-read.orchestrator';
|
||||||
import { TimeGroupDataController } from './infrastructure/time-group-data.controller';
|
import { TimeGroupDataController } from './infrastructure/time-group-data.controller';
|
||||||
import { TimeGroupDataOrchestrator } from './domain/usecases/time-group-data.orchestrator';
|
import { TimeGroupDataOrchestrator } from './domain/usecases/time-group-data.orchestrator';
|
||||||
|
@ -22,6 +25,7 @@ import { BatchActiveTimeGroupManager } from './domain/usecases/managers/batch-ac
|
||||||
import { BatchConfirmTimeGroupManager } from './domain/usecases/managers/batch-confirm-time-group.manager';
|
import { BatchConfirmTimeGroupManager } from './domain/usecases/managers/batch-confirm-time-group.manager';
|
||||||
import { BatchInactiveTimeGroupManager } from './domain/usecases/managers/batch-inactive-time-group.manager';
|
import { BatchInactiveTimeGroupManager } from './domain/usecases/managers/batch-inactive-time-group.manager';
|
||||||
import { TimeGroupModel } from './data/models/time-group.model';
|
import { TimeGroupModel } from './data/models/time-group.model';
|
||||||
|
import { IndexPublicTimeGroupManager } from './domain/usecases/managers/index-public-time-group.manager';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -29,8 +33,13 @@ import { TimeGroupModel } from './data/models/time-group.model';
|
||||||
TypeOrmModule.forFeature([TimeGroupModel], CONNECTION_NAME.DEFAULT),
|
TypeOrmModule.forFeature([TimeGroupModel], CONNECTION_NAME.DEFAULT),
|
||||||
CqrsModule,
|
CqrsModule,
|
||||||
],
|
],
|
||||||
controllers: [TimeGroupDataController, TimeGroupReadController],
|
controllers: [
|
||||||
|
TimeGroupDataController,
|
||||||
|
TimeGroupReadController,
|
||||||
|
TimeGroupPublicReadController,
|
||||||
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
IndexPublicTimeGroupManager,
|
||||||
IndexTimeGroupManager,
|
IndexTimeGroupManager,
|
||||||
DetailTimeGroupManager,
|
DetailTimeGroupManager,
|
||||||
CreateTimeGroupManager,
|
CreateTimeGroupManager,
|
||||||
|
|
Loading…
Reference in New Issue