private DateTime CheckEndDate(DateTime newStartDate, int minutes, HolidayProvider holidays) { var endDate = TimeTools.AddMinutes(newStartDate, minutes, holidays); endDate = holidays.Validate(endDate); endDate = WorkDayProvider.Validate(endDate, holidays); endDate = WorkHourProvider.Validate(endDate, holidays); return(endDate); }
public static DateTime Validate(DateTime date, HolidayProvider holidays) { var time = date.TimeOfDay; //time is at or before 8AM if (time < clockIn) { return(GetNewDate(date, time, clockIn)); } //time is between 8AM and 12noon if (time >= clockIn && time <= clockOut) { return(date); } //time is between 12noon and 1pm if (time >= clockOut && time <= clockInAfter) { return(GetNewDate(date, time, clockInAfter)); } //time is between 1pm and 5pm if (time >= clockInAfter && time < clockOutAfter) { return(date); } //time is 5pm if (time == clockOutAfter) { return(date); } //time is after 5pm if (time >= clockOutAfter) { date = TimeTools.GetNewDate(date.AddDays(1), clockIn); date = WorkDayProvider.Validate(date, holidays); date = holidays.Validate(date); } return(date); }
private DateTime?GetThanksgiving() { var thanksgiving = TimeTools.GetLastDay(targetYear, 11, DayOfWeek.Thursday); return(thanksgiving == null ? DateTime.MinValue : thanksgiving); }
private DateTime?GetLaborDay() { var laborDay = TimeTools.GetFirstDay(targetYear, 9, DayOfWeek.Monday); return(laborDay == null ? DateTime.MinValue : laborDay); }
private DateTime?GetMemorialDay() { var memorialDay = TimeTools.GetLastDay(targetYear, 5, DayOfWeek.Monday); return(memorialDay == null ? DateTime.MinValue : memorialDay); }