From 067025312efc9972acd2c29002975894d4dbf9cf Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah <98192542+Asharaswin@users.noreply.github.com> Date: Mon, 24 Jun 2024 16:01:06 +0700 Subject: [PATCH] fix(SPG-550) Season Period - Generate hari libur belum terfilter berdasarkan periode tanggal --- .../entities/filter-google-calendar.entity.ts | 4 ++++ .../usecases/google-calendar.orchestrator.ts | 6 +++--- .../index-holiday-google-calendar.manager.ts | 7 ++++--- .../dto/filter-google-calendar.dto.ts | 18 ++++++++++++++++++ .../google-calendar.controller.ts | 11 +++++++---- 5 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts create mode 100644 src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts diff --git a/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts b/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts new file mode 100644 index 0000000..f02bfc6 --- /dev/null +++ b/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts @@ -0,0 +1,4 @@ +export interface FilterGoogleCalendarEntity { + start_date: Date; + end_date: Date; +} \ No newline at end of file diff --git a/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts b/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts index 3dfcad7..a13406c 100644 --- a/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts +++ b/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts @@ -3,9 +3,9 @@ import { IndexHolidayCalendarManager } from './managers/index-holiday-google-cal @Injectable() export class GoogleCalendarOrchestrator { - constructor(private indexHoliday: IndexHolidayCalendarManager) {} + constructor(private indexHoliday: IndexHolidayCalendarManager) { } - async holiday() { - return await this.indexHoliday.execute(); + async holiday(params) { + return await this.indexHoliday.execute(params); } } diff --git a/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts b/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts index 191b755..67eced1 100644 --- a/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts +++ b/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { google } from 'googleapis'; +import { FilterGoogleCalendarEntity } from '../../entities/filter-google-calendar.entity'; @Injectable() export class IndexHolidayCalendarManager { - async execute() { + async execute(param: FilterGoogleCalendarEntity) { const events = []; const calendar = google.calendar({ version: 'v3', @@ -13,8 +14,8 @@ export class IndexHolidayCalendarManager { const res = await calendar.events.list({ calendarId: calendarId, - timeMin: new Date().getFullYear() + '-01-01T00:00:00Z', - timeMax: new Date().getFullYear() + '-12-31T23:59:59Z', + timeMin: param.start_date ? param.start_date + 'T00:00:00Z' : new Date().getFullYear() + '-01-01T00:00:00Z', + timeMax: param.end_date ? param.end_date + 'T23:59:59Z' : new Date().getFullYear() + '-12-31T23:59:59Z', singleEvents: true, orderBy: 'startTime', }); diff --git a/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts b/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts new file mode 100644 index 0000000..9d730ec --- /dev/null +++ b/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts @@ -0,0 +1,18 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { FilterGoogleCalendarEntity } from "../../domain/entities/filter-google-calendar.entity"; + +export class FilterGoogleCalendarDto implements FilterGoogleCalendarEntity { + @ApiProperty({ + required: false, + type: Date, + example: '2024-04-01' + }) + start_date: Date; + + @ApiProperty({ + required: false, + type: Date, + example: '2024-04-30' + }) + end_date: Date; +} \ No newline at end of file diff --git a/src/modules/configuration/google-calendar/infrastructure/google-calendar.controller.ts b/src/modules/configuration/google-calendar/infrastructure/google-calendar.controller.ts index 0cee860..10262cc 100644 --- a/src/modules/configuration/google-calendar/infrastructure/google-calendar.controller.ts +++ b/src/modules/configuration/google-calendar/infrastructure/google-calendar.controller.ts @@ -1,16 +1,19 @@ import { GoogleCalendarOrchestrator } from './../domain/usecases/google-calendar.orchestrator'; -import { Controller, Get } from '@nestjs/common'; +import { Controller, Get, Query } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { Public } from 'src/core/guards'; +import { FilterGoogleCalendarDto } from './dto/filter-google-calendar.dto'; @ApiTags(`google calendar - read`) @Controller('google-calendar') @Public(true) export class GoogleCalendarController { - constructor(private orchestrator: GoogleCalendarOrchestrator) {} + constructor(private orchestrator: GoogleCalendarOrchestrator) { } @Get('/holiday') - async calendar() { - return await this.orchestrator.holiday(); + async calendar( + @Query() params: FilterGoogleCalendarDto, + ) { + return await this.orchestrator.holiday(params); } }