Esempio n. 1
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///     A DateTime extension method that query if 'date' is day off. The days off is configured
        ///     using the Add-calendar event methods.
        /// </summary>
        ///
        /// <param name="date">	The date. </param>
        ///
        /// <returns>	True if day off, false if not. </returns>
        ///
        /// <example>
        ///     <code>
        ///     // LINQ example.
        ///     var starting = new DateTime(2018, 1, 1);
        ///     var ending = new DateTime(2018, 12, 31);
        ///     var allDates = Enumerable.Range(0, 1 + ending.Subtract(starting).Days).Select(i=&gt; starting.AddDays(i));
        ///
        ///     CalendarDateTime.AddYearlyDateEvent("theDate", true, 6, 10, false, false);
        ///     var result = allDates.Where(d =&gt; d.IsDayOff());
        ///     // result = [0] = {6/10/2018 12:00:00 AM}
        ///     </code>
        /// </example>
        ///-------------------------------------------------------------------------------------------------
        public static bool IsDayOff(this DateTime date)
        {
            date = date.Date;
            var p = YearlyEventsDictionary.Any(v => v.Value.DayOff && v.Value.Date(date.Year) == date);
            var m = MonthlyEventsDictionary.Any(v => v.Value.DayOff && v.Value.Date(date.Year, date.Month) == date);
            var w = WeeklyEventsDictionary.Any(v => v.Value.DayOff && v.Value.IsEventDay(date));
            var a = DateEventsDictionary.Any(v => v.Value.DayOff && v.Value.Date == date);

            return(p || m || w || a);
        }