Fix OpeningSchedule.isOpen

Fix #838
This commit is contained in:
MM20 2024-05-17 18:18:33 +02:00
parent 44e40cde1d
commit f68f0175a6
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -11,6 +11,7 @@ import java.time.DayOfWeek
import java.time.Duration
import java.time.LocalDateTime
import java.time.LocalTime
import java.time.temporal.TemporalAdjusters
import android.location.Location as AndroidLocation
interface Location : SavableSearchable {
@ -235,9 +236,9 @@ data class OpeningHours(
) {
fun isOpen(date: LocalDateTime = LocalDateTime.now()): Boolean {
return date.dayOfWeek == dayOfWeek &&
date.toLocalTime().isAfter(startTime) &&
date.toLocalTime().isBefore(startTime.plus(duration))
val startTime = date.with(TemporalAdjusters.previousOrSame(dayOfWeek)).with(startTime)
val endTime = startTime.plus(duration)
return date in startTime..<endTime
}
override fun toString(): String = "$dayOfWeek $startTime-${startTime.plus(duration)}"
@ -250,4 +251,4 @@ data class OpeningSchedule(
fun isOpen(date: LocalDateTime = LocalDateTime.now()): Boolean {
return isTwentyFourSeven || openingHours.any { it.isOpen(date) }
}
}
}