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 { DetailTimeGroupManager } from './managers/detail-time-group.manager';
|
||||
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
|
||||
import { IndexPublicTimeGroupManager } from './managers/index-public-time-group.manager';
|
||||
|
||||
@Injectable()
|
||||
export class TimeGroupReadOrchestrator extends BaseReadOrchestrator<TimeGroupEntity> {
|
||||
constructor(
|
||||
private indexManager: IndexTimeGroupManager,
|
||||
private indexPublicManager: IndexPublicTimeGroupManager,
|
||||
private detailManager: DetailTimeGroupManager,
|
||||
private serviceData: TimeGroupReadService,
|
||||
) {
|
||||
|
@ -24,6 +26,16 @@ export class TimeGroupReadOrchestrator extends BaseReadOrchestrator<TimeGroupEnt
|
|||
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> {
|
||||
this.detailManager.setData(dataId);
|
||||
this.detailManager.setService(this.serviceData, TABLE_NAME.TIME_GROUPS);
|
||||
|
|
|
@ -28,3 +28,19 @@ export class TimeGroupReadController {
|
|||
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 { TimeGroupDataService } from './data/services/time-group-data.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 { TimeGroupDataController } from './infrastructure/time-group-data.controller';
|
||||
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 { BatchInactiveTimeGroupManager } from './domain/usecases/managers/batch-inactive-time-group.manager';
|
||||
import { TimeGroupModel } from './data/models/time-group.model';
|
||||
import { IndexPublicTimeGroupManager } from './domain/usecases/managers/index-public-time-group.manager';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
|
@ -29,8 +33,13 @@ import { TimeGroupModel } from './data/models/time-group.model';
|
|||
TypeOrmModule.forFeature([TimeGroupModel], CONNECTION_NAME.DEFAULT),
|
||||
CqrsModule,
|
||||
],
|
||||
controllers: [TimeGroupDataController, TimeGroupReadController],
|
||||
controllers: [
|
||||
TimeGroupDataController,
|
||||
TimeGroupReadController,
|
||||
TimeGroupPublicReadController,
|
||||
],
|
||||
providers: [
|
||||
IndexPublicTimeGroupManager,
|
||||
IndexTimeGroupManager,
|
||||
DetailTimeGroupManager,
|
||||
CreateTimeGroupManager,
|
||||
|
|
Loading…
Reference in New Issue