Adding
This commit is contained in:
+92
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace LCU.Api.Internal.DispatcherSharedLib.Utilities;
|
||||
|
||||
public static class HolidayHelpers
|
||||
{
|
||||
public static DateTime? HandleHolidays(DateTime? nextRunTime)
|
||||
{
|
||||
if (nextRunTime != null)
|
||||
{
|
||||
List<DateTime> holidays = GetHolidays(nextRunTime.Value.Year);
|
||||
var today = Convert.ToDateTime(nextRunTime).Date;
|
||||
var isHoliday = holidays.Where(x => today == x).Any();
|
||||
|
||||
if (isHoliday)
|
||||
{
|
||||
nextRunTime = nextRunTime.Value.AddDays(1);
|
||||
}
|
||||
}
|
||||
return nextRunTime;
|
||||
}
|
||||
|
||||
private static List<DateTime> GetHolidays(int year)
|
||||
{
|
||||
List<DateTime> holidays = new List<DateTime>
|
||||
{
|
||||
GetNewYearsDay(year),
|
||||
GetMemorialDay(year),
|
||||
GetIndependenceDay(year),
|
||||
GetLaborDay(year),
|
||||
GetThanksgivingDay(year),
|
||||
GetChristmasDay(year)
|
||||
};
|
||||
|
||||
return holidays;
|
||||
}
|
||||
|
||||
///<summary> New Years Day - Jan 1st </summary>
|
||||
public static DateTime GetNewYearsDay(int year)
|
||||
{
|
||||
return new DateTime(year, 1, 1).Date;
|
||||
}
|
||||
|
||||
///<summary> Memorial Day - last Monday in May </summary>
|
||||
public static DateTime GetMemorialDay(int year)
|
||||
{
|
||||
DateTime memorialDay = new DateTime(year, 5, 31);
|
||||
var dayOfWeek = memorialDay.DayOfWeek;
|
||||
while (dayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
memorialDay = memorialDay.AddDays(-1);
|
||||
dayOfWeek = memorialDay.DayOfWeek;
|
||||
}
|
||||
return memorialDay.Date;
|
||||
}
|
||||
|
||||
///<summary> Independence Day - July 4th </summary>
|
||||
public static DateTime GetIndependenceDay(int year)
|
||||
{
|
||||
return new DateTime(year, 7, 4).Date;
|
||||
}
|
||||
|
||||
///<summary> Labor Day -- 1st Monday in September </summary>
|
||||
public static DateTime GetLaborDay(int year)
|
||||
{
|
||||
DateTime laborDay = new DateTime(year, 9, 1);
|
||||
var dayOfWeek = laborDay.DayOfWeek;
|
||||
while (dayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
laborDay = laborDay.AddDays(1);
|
||||
dayOfWeek = laborDay.DayOfWeek;
|
||||
}
|
||||
return laborDay.Date;
|
||||
}
|
||||
|
||||
///<summary> Thanksgiving Day - 4th Thursday in November </summary>
|
||||
public static DateTime GetThanksgivingDay(int year)
|
||||
{
|
||||
var thanksgiving = (from day in Enumerable.Range(1, 30)
|
||||
where new DateTime(year, 11, day).DayOfWeek == DayOfWeek.Thursday
|
||||
select day).ElementAt(3);
|
||||
return new DateTime(year, 11, thanksgiving).Date;
|
||||
}
|
||||
|
||||
///<summary> Christmas Day - Dec 25th </summary>
|
||||
public static DateTime GetChristmasDay(int year)
|
||||
{
|
||||
return new DateTime(year, 12, 25).Date;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user