Updated the main form with a slightly new look. Finished all the code for the main for to pull in all the data from the database and perform calculations on it. Currently can only load the most recent date. Added detection for holidays in the weekly and taxable lists.

This commit is contained in:
2017-01-21 18:38:19 -06:00
parent d429f2b931
commit 96e61546c3
13 changed files with 1821 additions and 1257 deletions
+89
View File
@@ -0,0 +1,89 @@
using System;
using System.Linq;
namespace AdvertsingProfitControl
{
internal class Holiday
{
public static Holidays IsHoliday(DateTime date)
{
if(IsNewYearsDay(date) == Holidays.NewYearsDay) return Holidays.NewYearsDay;
if(IsFourthOfJuly(date) == Holidays.FourthOfJuly) return Holidays.FourthOfJuly;
if(IsThanksgivingDay(date) == Holidays.Thanksgiving) return Holidays.Thanksgiving;
return IsChristmasDay(date) == Holidays.Christmas ? Holidays.Christmas : Holidays.NoHoliday;
}
public static Holidays IsNewYearsEve(DateTime date)
{
return date.DayOfYear == AdjustForWeekendHoliday(new DateTime(date.Year, 12, 31)).DayOfYear ? Holidays.NewYearsEve : Holidays.NoHoliday;
}
public static Holidays IsNewYearsDay(DateTime date)
{
return date.DayOfYear == AdjustForWeekendHoliday(new DateTime(date.Year, 1, 1)).DayOfYear ? Holidays.NewYearsDay : Holidays.NoHoliday;
}
public static Holidays IsMemorialDay(DateTime date)
{ //Last Monday in May
var memorialDay = new DateTime(date.Year, 5, 31);
var dayOfWeek = memorialDay.DayOfWeek;
while (dayOfWeek != DayOfWeek.Monday)
{
memorialDay = memorialDay.AddDays(-1);
dayOfWeek = memorialDay.DayOfWeek;
}
return date.DayOfYear == memorialDay.DayOfYear ? Holidays.MemorialDay : Holidays.NoHoliday;
}
public static Holidays IsFourthOfJuly(DateTime date)
{
return date.DayOfYear == AdjustForWeekendHoliday(new DateTime(date.Year, 7, 4)).DayOfYear ? Holidays.FourthOfJuly : Holidays.NoHoliday;
}
public static Holidays IsLaborDay(DateTime date)
{ // First Monday in September
var laborDay = new DateTime(date.Year, 9, 1);
var dayOfWeek = laborDay.DayOfWeek;
while (dayOfWeek != DayOfWeek.Monday)
{
laborDay = laborDay.AddDays(1);
dayOfWeek = laborDay.DayOfWeek;
}
return date.DayOfYear == laborDay.DayOfYear ? Holidays.LaborDay : Holidays.NoHoliday;
}
public static Holidays IsThanksgivingDay(DateTime date)
{//4th Thursday in November
var thanksgiving = (from day in Enumerable.Range(1, 30)
where new DateTime(date.Year, 11, day).DayOfWeek == DayOfWeek.Thursday
select day).ElementAt(3);
var thanksgivingDay = new DateTime(date.Year, 11, thanksgiving);
return date.DayOfYear == thanksgivingDay.DayOfYear ? Holidays.Thanksgiving : Holidays.NoHoliday;
}
public static Holidays IsChristmasEve(DateTime date)
{
return date.DayOfYear == AdjustForWeekendHoliday(new DateTime(date.Year, 12, 24)).DayOfYear ? Holidays.ChristmasEve : Holidays.NoHoliday;
}
public static Holidays IsChristmasDay(DateTime date)
{
return date.DayOfYear == new DateTime(date.Year, 12, 25).DayOfYear ? Holidays.Christmas : Holidays.NoHoliday;
}
private static DateTime AdjustForWeekendHoliday(DateTime holiday)
{
switch (holiday.DayOfWeek)
{
case DayOfWeek.Saturday:
return holiday.AddDays(-1);
case DayOfWeek.Sunday:
return holiday.AddDays(1);
}
return holiday;
}
}
public enum Holidays
{
NoHoliday = 0,
NewYearsEve = 1,
NewYearsDay = 2,
MemorialDay = 3,
FourthOfJuly = 4,
LaborDay = 5,
Thanksgiving = 6,
ChristmasEve = 7,
Christmas = 8
}
}