From d5822d4d80e74e4deb2dcaebcfb4732773999b9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=8F=84=EA=B2=BD?= Date: Wed, 30 Oct 2024 20:21:15 +0900 Subject: [PATCH] modify :: QueryIsWeekendMealPeriodService --- .../response/QueryIsPeriodStatusResponse.kt | 6 ++-- .../QueryIsWeekendMealPeriodService.kt | 28 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/dsm/pick2024/domain/weekendmeal/presentation/dto/response/QueryIsPeriodStatusResponse.kt b/src/main/kotlin/dsm/pick2024/domain/weekendmeal/presentation/dto/response/QueryIsPeriodStatusResponse.kt index fe923727..5fe0b0c7 100644 --- a/src/main/kotlin/dsm/pick2024/domain/weekendmeal/presentation/dto/response/QueryIsPeriodStatusResponse.kt +++ b/src/main/kotlin/dsm/pick2024/domain/weekendmeal/presentation/dto/response/QueryIsPeriodStatusResponse.kt @@ -1,7 +1,9 @@ package dsm.pick2024.domain.weekendmeal.presentation.dto.response +import java.time.LocalDate + data class QueryIsPeriodStatusResponse( val status: Boolean, - val start: String, - val end: String + val start: LocalDate?, + val end: LocalDate? ) diff --git a/src/main/kotlin/dsm/pick2024/domain/weekendmeal/service/QueryIsWeekendMealPeriodService.kt b/src/main/kotlin/dsm/pick2024/domain/weekendmeal/service/QueryIsWeekendMealPeriodService.kt index ba805fe3..11026273 100644 --- a/src/main/kotlin/dsm/pick2024/domain/weekendmeal/service/QueryIsWeekendMealPeriodService.kt +++ b/src/main/kotlin/dsm/pick2024/domain/weekendmeal/service/QueryIsWeekendMealPeriodService.kt @@ -1,10 +1,12 @@ package dsm.pick2024.domain.weekendmeal.service +import dsm.pick2024.domain.weekendmeal.domain.WeekendMealPeriod import dsm.pick2024.domain.weekendmeal.port.`in`.QueryIsWeekendMealPeriodUseCase import dsm.pick2024.domain.weekendmeal.port.out.QueryWeekendMealPeriodPort import dsm.pick2024.domain.weekendmeal.presentation.dto.response.QueryIsPeriodStatusResponse import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional +import java.time.LocalDate import java.time.LocalDate.now @Service @@ -12,20 +14,30 @@ class QueryIsWeekendMealPeriodService( private val queryWeekendMealPeriodPort: QueryWeekendMealPeriodPort ) : QueryIsWeekendMealPeriodUseCase { - @Transactional + @Transactional(readOnly = true) override fun isWeekendMealPeriod(): QueryIsPeriodStatusResponse { val today = now() - val periods = queryWeekendMealPeriodPort.queryAllWeekendMeal() - val period = periods.find { - today.isAfter(it.start.minusDays(1)) && today.isBefore(it.end.plusDays(1)) - } + val currentPeriod = findCurrentPeriod(today, periods) - val status = period != null - val start = period?.start?.toString() ?: "" - val end = period?.end?.toString() ?: "" + val nextPeriod = currentPeriod ?: findNextPeriod(today, periods) + + val status = currentPeriod != null + val start = nextPeriod?.start + val end = nextPeriod?.end return QueryIsPeriodStatusResponse(status, start, end) } + + private fun findCurrentPeriod(today: LocalDate, periods: List): WeekendMealPeriod? { + return periods.find { + today.isAfter(it.start.minusDays(1)) && today.isBefore(it.end.plusDays(1)) + } + } + + private fun findNextPeriod(today: LocalDate, periods: List): WeekendMealPeriod? { + return periods.filter { it.start.isAfter(today) } + .minByOrNull { it.start } + } }