From 7bb539db0c3918aeec6016543c700aa7533ebe67 Mon Sep 17 00:00:00 2001 From: shancheas Date: Wed, 25 Jun 2025 16:39:01 +0700 Subject: [PATCH] fix(SPG-1266): Penyesuaian time zone server untuk field pilih waktu - meminimalisasi timezone user/ client --- .../managers/index-public-time-group.manager.ts | 15 +++++++++++++++ .../infrastructure/dto/filter-time-group.dto.ts | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/src/modules/item-related/time-group/domain/usecases/managers/index-public-time-group.manager.ts b/src/modules/item-related/time-group/domain/usecases/managers/index-public-time-group.manager.ts index c626f1d..912fca8 100644 --- a/src/modules/item-related/time-group/domain/usecases/managers/index-public-time-group.manager.ts +++ b/src/modules/item-related/time-group/domain/usecases/managers/index-public-time-group.manager.ts @@ -6,6 +6,8 @@ import { Param, RelationParam, } from 'src/core/modules/domain/entities/base-filter.entity'; +import * as moment from 'moment'; +import { ORDER_TYPE } from 'src/core/strings/constants/base.constants'; // TODO: // Implementasikan filter by start_time, end_timen, dan max_usage_time @@ -13,6 +15,10 @@ import { @Injectable() export class IndexPublicTimeGroupManager extends BaseIndexManager { async prepareData(): Promise { + Object.assign(this.filterParam, { + order_by: `${this.tableName}.start_time`, + order_type: ORDER_TYPE.ASC, + }); return; } @@ -60,6 +66,15 @@ export class IndexPublicTimeGroupManager extends BaseIndexManager, ): SelectQueryBuilder { queryBuilder.andWhere(`items.id is not null`); + + if (!this.filterParam.date) { + const currentTime = moment().utcOffset('+07:00').format('HH:mm:ss'); + + queryBuilder.andWhere(`${this.tableName}.end_time >= :current_time`, { + current_time: currentTime, + }); + } + return queryBuilder; } } diff --git a/src/modules/item-related/time-group/infrastructure/dto/filter-time-group.dto.ts b/src/modules/item-related/time-group/infrastructure/dto/filter-time-group.dto.ts index b4b6cd9..e445d85 100644 --- a/src/modules/item-related/time-group/infrastructure/dto/filter-time-group.dto.ts +++ b/src/modules/item-related/time-group/infrastructure/dto/filter-time-group.dto.ts @@ -30,4 +30,12 @@ export class FilterTimeGroupDto @ApiProperty({ type: 'string', required: false }) @ValidateIf((body) => body.max_usage_time_to) max_usage_time_to: string; + + @ApiProperty({ + type: Date, + required: false, + example: '2024-01-01', + }) + @ValidateIf((body) => body.date) + date: Date; }