namespace WorkTracker.Formatting; public static class DurationFormatter { public static string FormatHours(decimal value, bool blankWhenZero = false) { var totalMinutes = (int)Math.Round(value * 60m, MidpointRounding.AwayFromZero); if (totalMinutes == 0) { return blankWhenZero ? string.Empty : "0"; } var sign = totalMinutes < 0 ? "-" : string.Empty; totalMinutes = Math.Abs(totalMinutes); var hours = totalMinutes / 60; var minutes = totalMinutes % 60; return minutes == 0 ? $"{sign}{hours}" : $"{sign}{hours}:{minutes:00}"; } public static string FormatSignedHours(decimal value) { if (value > 0m) { return $"+{FormatHours(value)}"; } if (value < 0m) { return $"-{FormatHours(Math.Abs(value))}"; } return "0"; } }