From 9ec483593028a6eefd7cd99911f8960a629d1a90 Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Sun, 7 Apr 2024 14:32:22 +0300 Subject: [PATCH] feat: Dynamic shift of working hours don't exceed end time or precede start time --- internal/utils/utils.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 631c0fa..ae276a2 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -35,8 +35,12 @@ func IsInWorkingHours(timeWindow string) bool { return true } - startTimeBefore := MakeRandomTime(parts[0]) - endTimeAfter := MakeRandomTime(parts[1]) + // Generate a datetime 3-14 minutes earlier than the specified time + startTimeBefore := addRandomTimeInterval(parts[0]) + + // Generate a datetime 3-14 minutes later than the specified time + endTimeAfter := subtractRandomTimeInterval(parts[1]) + currentTime := time.Now() // Check if the current time is within the dynamic range @@ -46,7 +50,15 @@ func IsInWorkingHours(timeWindow string) bool { return false } -func MakeRandomTime(inputTime string) time.Time { +func addRandomTimeInterval(inputTime string) time.Time { + return makeRandomTime(inputTime, true) +} + +func subtractRandomTimeInterval(inputTime string) time.Time { + return makeRandomTime(inputTime, false) +} + +func makeRandomTime(inputTime string, isPositive bool) time.Time { // Parse input time like 19:00 to date time parsedTime, err := time.Parse(timeLayout, inputTime) if err != nil { @@ -58,7 +70,7 @@ func MakeRandomTime(inputTime string) time.Time { randomInterval := time.Duration(rand.N(12)+3) * time.Minute // Randomly decide whether to add or subtract the interval - if rand.N(2) == 0 { + if isPositive { parsedTime = parsedTime.Add(randomInterval) } else { parsedTime = parsedTime.Add(-randomInterval)