From 1e0766dc5047e0bacfbd91fe1222d413974ca6fd Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah <98192542+Asharaswin@users.noreply.github.com> Date: Wed, 26 Jun 2024 17:33:14 +0700 Subject: [PATCH] fix(SPG-566) BE - Validasi season periode tipe range date --- .../managers/helpers/validate.helper.ts | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts b/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts index 4e880c3..eb233bd 100644 --- a/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts +++ b/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts @@ -1,4 +1,6 @@ import { HttpStatus, UnprocessableEntityException } from "@nestjs/common"; +import { Brackets } from "typeorm"; +import * as _ from 'lodash'; // function ini bergungsi untuk validasi season period yang sama export async function ValidateSeasonPeriodHelper(dataService, data) { @@ -31,8 +33,28 @@ export async function ValidateSeasonPeriodHelper(dataService, data) { const datas = await query .andWhere('data.priority = :priority', { priority: priority }) - .andWhere('data.start_date BETWEEN :inputStartDate AND :inputEndDate', { inputStartDate: data.start_date, inputEndDate: data.end_date }) - .andWhere('data.end_date BETWEEN :inputStartDate AND :inputEndDate', { inputStartDate: data.start_date, inputEndDate: data.end_date }).getCount(); + .andWhere( + new Brackets(query => { + + // contoh data tanggal 1 Agustus - 31 Agustus + query.orWhere( + new Brackets(q => { + return q.andWhere('data.start_date <= :inputStartDate ', { inputStartDate: data.start_date }) + .andWhere('data.end_date >= :inputEndDate', { inputEndDate: data.end_date }); + }) + ) + + query.orWhere( + new Brackets(q => { + return q.andWhere('data.start_date >= :inputStartDate ', { inputStartDate: data.start_date }) + .andWhere('data.end_date <= :inputEndDate', { inputEndDate: data.end_date }); + }) + ) + + return query; + }) + ) + .getCount(); if (datas > 0) { throw new UnprocessableEntityException({