/// <summary> /// Create a special day with a code /// </summary> /// <param name="date"></param> /// <param name="dayCode"></param> /// <param name="dayType"></param> /// <param name="timeCode"></param> public SpecialDay(BadiDate date, HolyDayCode dayCode, SpecialDayType dayType, SpecialTimeCode timeCode) : this() { Date = date; DayType = dayType; DayCode = dayCode; TimeCode = timeCode; }
/// <summary> /// A listing of special days in this year /// </summary> /// <param name="typesWanted">What type's of days?</param> /// <param name="holyDaysWanted">If Holy Days are wanted, but not all of them, which ones?</param> /// <returns></returns> public List <SpecialDay> GetSpecialDays(SpecialDayType typesWanted, HolyDayCode holyDaysWanted = HolyDayCode._NoCode_) { var final = new List <SpecialDay>(); if (typesWanted.HasFlag(SpecialDayType.FeastDay)) { for (int i = 0; i < 19; i++) { final.Add(new SpecialDay(new BadiDate(_year, i + 1, 1), SpecialDayType.FeastDay)); } } if (typesWanted.HasFlag(SpecialDayType.FastingDay)) { for (int i = 0; i < 19; i++) { final.Add(new SpecialDay(new BadiDate(_year, 19, i + 1), SpecialDayType.FastingDay)); } } if (typesWanted.HasFlag(SpecialDayType.HolyDay_WorkSuspended)) { final.Add(new SpecialDay(new BadiDate(_year, 1, 1), HolyDayCode.NawRuz, SpecialDayType.HolyDay_WorkSuspended)); final.Add(new SpecialDay(new BadiDate(_year, 2, 13), HolyDayCode.Ridvan1, SpecialDayType.HolyDay_WorkSuspended, SpecialTimeCode.H15)); final.Add(new SpecialDay(new BadiDate(_year, 3, 2), HolyDayCode.Ridvan9, SpecialDayType.HolyDay_WorkSuspended)); final.Add(new SpecialDay(new BadiDate(_year, 3, 5), HolyDayCode.Ridvan12, SpecialDayType.HolyDay_WorkSuspended)); final.Add(new SpecialDay(new BadiDate(_year, 4, 13), HolyDayCode.AscBaha, SpecialDayType.HolyDay_WorkSuspended, SpecialTimeCode.H03)); if (_year <= 171) { final.Add(new SpecialDay(new BadiDate(_year, 4, 7), HolyDayCode.DeclBab, SpecialDayType.HolyDay_WorkSuspended, SpecialTimeCode.SS2)); final.Add(new SpecialDay(new BadiDate(_year, 6, 16), HolyDayCode.Martrydom, SpecialDayType.HolyDay_WorkSuspended, SpecialTimeCode.H12)); final.Add(new SpecialDay(new BadiDate(_year, 12, 5), HolyDayCode.BirthBab, SpecialDayType.HolyDay_WorkSuspended)); final.Add(new SpecialDay(new BadiDate(_year, 13, 9), HolyDayCode.BirthBaha, SpecialDayType.HolyDay_WorkSuspended)); } else { final.Add(new SpecialDay(new BadiDate(_year, 4, 8), HolyDayCode.DeclBab, SpecialDayType.HolyDay_WorkSuspended, SpecialTimeCode.SS2)); final.Add(new SpecialDay(new BadiDate(_year, 6, 17), HolyDayCode.Martrydom, SpecialDayType.HolyDay_WorkSuspended, SpecialTimeCode.H12)); // Get from Twin Holy Birthday compressed code // code is CHAR((month - 11) * 20 + 32 + day) -- 32 is added to avoid control characters var codeNum = (int)_twinHolyBirthdaysCode[_year - 172] - 32; var month = 11 + codeNum / 20; var day = codeNum % 20; final.Add(new SpecialDay(new BadiDate(_year, month, day), HolyDayCode.BirthBab, SpecialDayType.HolyDay_WorkSuspended)); day++; if (day > 19) { day = 1; month++; } final.Add(new SpecialDay(new BadiDate(_year, month, day), HolyDayCode.BirthBaha, SpecialDayType.HolyDay_WorkSuspended)); } } if (typesWanted.HasFlag(SpecialDayType.HolyDay_Other)) { final.Add(new SpecialDay(new BadiDate(_year, 14, 4), HolyDayCode.Covenant, SpecialDayType.HolyDay_Other)); final.Add(new SpecialDay(new BadiDate(_year, 14, 6), HolyDayCode.AscAbdul, SpecialDayType.HolyDay_Other, SpecialTimeCode.H01)); } return(final .Where(sd => holyDaysWanted == HolyDayCode._NoCode_ || !sd.DayType.HasFlag(SpecialDayType.HolyDay_WorkSuspended | SpecialDayType.HolyDay_Other) || sd.DayCode.HasFlag(holyDaysWanted)) .OrderBy(sd => sd.Date.LocalDate.DayOfYear) .ToList()); }
public SpecialDay(DateTime date, SpecialDayType type, string name) { Date = date; SpecialDayType = type; this.name = name; }
/// <summary> /// Create a special day /// </summary> /// <param name="date"></param> /// <param name="dayType"></param> public SpecialDay(BadiDate date, SpecialDayType dayType) : this() { Date = date; DayType = dayType; }