Skip to content

Commit

Permalink
✨ Refactor duration computation for YouTrack alignment
Browse files Browse the repository at this point in the history
Add computeRealDuration method to align duration calculation with YouTrack's 8-hour workday and 5-day workweek convention.
  • Loading branch information
CXwudi committed Jun 21, 2024
1 parent e40eb4a commit a331e1e
Showing 1 changed file with 17 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -97,14 +97,30 @@ class AlarmMapper {
return null
}
val durationMinutes = valueJson["minutes"].asLong()
return Duration.ofMinutes(durationMinutes).let {

return computeRealDuration(durationMinutes).let {
if (isNegative) {
it.negated()
} else {
it
}
}
}

/**
* Simulate how YouTrack represent the duration, where a day is 8 hours, and a week is 5 days only to exclude weekend
*/
private fun computeRealDuration(minutes: Long): Duration {
val hours = minutes / 60
val weeks = hours / (8 * 5)
val remainingHoursAfterWeeks = hours % (8 * 5)
val days = remainingHoursAfterWeeks / 8
val remainingHours = remainingHoursAfterWeeks % 8
val remainingMinutes = minutes % 60

return Duration.ofDays(weeks * 7 + days).plusHours(remainingHours).plusMinutes(remainingMinutes)
}

}

private val log = KInlineLogging.logger()

0 comments on commit a331e1e

Please sign in to comment.