public Workday(IDate date, IEntryExitTime entryExitTime, IMutableTimeSpan correctionOfWorktime) { if (date == null) throw new ArgumentNullException(nameof(date)); if (entryExitTime == null) throw new ArgumentNullException(nameof(entryExitTime)); if (correctionOfWorktime == null) throw new ArgumentNullException(nameof(correctionOfWorktime)); _date = date; _entryExitTime = entryExitTime; _correctionOfWorktime = correctionOfWorktime; }
public IMutableTimeSpan CreateAsAdditionOf(IMutableTimeSpan timeSpan, IMutableTimeSpan andTimeSpan) { var hourInMinutes = (timeSpan.Hour + andTimeSpan.Hour) * MinutesPerHour; var minuteSignedInMinutes = OneIfZeroSignOf(timeSpan.Hour) * timeSpan.Minute + OneIfZeroSignOf(andTimeSpan.Hour) * andTimeSpan.Minute; var totalMinutes = hourInMinutes + minuteSignedInMinutes; var hoursFromTotalMinutes = totalMinutes / MinutesPerHour; var remainingMinutesFromTotalMinutes = totalMinutes % MinutesPerHour; if (hoursFromTotalMinutes != 0) remainingMinutesFromTotalMinutes = Math.Abs(remainingMinutesFromTotalMinutes); return CreateFrom(hoursFromTotalMinutes, remainingMinutesFromTotalMinutes); }
public IMutableTimeSpan CreateAsSubstractionOf(IMutableTimeSpan timeSpan, IMutableTimeSpan fromTimeSpan) { var negativeTimeSpan = CreateFrom(-timeSpan.Hour, timeSpan.Hour == 0 ? -timeSpan.Minute : timeSpan.Minute); return CreateAsAdditionOf(negativeTimeSpan, fromTimeSpan); }
private void AssertEqualHourMinuteAndTimeSpan(int hour, int minute, IMutableTimeSpan timeSpan) { Assert.Equal(hour, timeSpan.Hour); Assert.Equal(minute, timeSpan.Minute); }