public static bool IsHoliday(DateTime day)
 {
     return
         (NonWorkingDays
          .GetNonWorkingDays(day.Year)
          .Contains(day));
 }
Beispiel #2
0
    internal static bool isWeekend(this DateOnly thisDate, NonWorkingDays?nonWorkingDays = null)
    {
        NonWorkingDays considerAsNonWorkingDays = nonWorkingDays ?? new();

        DayOfWeek[] weekendDays = considerAsNonWorkingDays.Weekend.ToArray();
        return(weekendDays.Contains(thisDate.DayOfWeek));
    }
    public static IList <DateTime> GetNonWorkingDays(int year)
    {
        IList <DateTime> days = new List <DateTime>();

        days.Add(new DateTime(year, 01, 01));
        days.Add(new DateTime(year, 01, 06));
        days.Add(new DateTime(year, 04, 25));
        days.Add(new DateTime(year, 05, 01));
        days.Add(new DateTime(year, 06, 02));
        days.Add(new DateTime(year, 06, 24));
        days.Add(new DateTime(year, 08, 15));
        days.Add(new DateTime(year, 10, 01));
        days.Add(new DateTime(year, 12, 08));
        days.Add(new DateTime(year, 12, 25));
        days.Add(new DateTime(year, 12, 26));
        days.Add(NonWorkingDays.EasterDay(year));
        days.Add(NonWorkingDays.EasterDay(year).AddDays(1));


        DateTime dummy = new DateTime(year, 1, 1);

        while (dummy.Year == year)
        {
            if (!days.Contains(dummy) && dummy.DayOfWeek == DayOfWeek.Saturday || dummy.DayOfWeek == DayOfWeek.Sunday)
            {
                days.Add(dummy);
            }

            dummy = dummy.AddDays(1);
        }

        return(days);//a
    }
Beispiel #4
0
    public void Should_respect_custom_non_working_day_definition()
    {
        var someDate = new DateOnly(2022, 3, 17); // THU
        var nwd      = new NonWorkingDays {
            CustomNonWorkingsDays = new List <DateOnly> {
                someDate
            }
        };
        var isWorkingDayBefore  = someDate.IsWorkingDay();
        var isNoWorkingDayAfter = !someDate.IsWorkingDay(nwd);
        var respectsCustomNonWorkingDayDefinition = isWorkingDayBefore && isNoWorkingDayAfter;

        Assert.True(respectsCustomNonWorkingDayDefinition);
    }
Beispiel #5
0
 private void NonWorkingDaysGridView_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
 {
     nonworkingdays = new NonWorkingDays();
     try
     {
         GridView view = sender as GridView;
         object   row  = view.GetRow(e.RowHandle);
         nonworkingdays        = (NonWorkingDays)row;
         NamteTE.Text          = nonworkingdays.Name;
         DateMC.SelectionStart = nonworkingdays.Date;
     }
     catch
     {
     }
 }
        public bool Execute(NonWorkingDays nonWorkingDays)
        {
            try
            {
                var request = WebRequest.Create("http://localhost:3000/DeleteNeradniDani");
                request.Headers["ID"] = nonWorkingDays.ID.ToString();
                request.GetResponse();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);

                throw ex;
            }
        }
Beispiel #7
0
        public bool Execute(NonWorkingDays nonWorkingDays)
        {
            try
            {
                var request = WebRequest.Create("http://localhost:3000/InsertNeradniDan");
                request.Headers["name"]      = nonWorkingDays.Name;
                request.Headers["date_time"] = nonWorkingDays.Date.ToString("yyyy-MM-dd");
                request.GetResponse();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);

                throw ex;
            }
        }
Beispiel #8
0
        public bool UpdateNonWokringDays(NonWorkingDays nonWorkingDays)
        {
            try
            {
                UpdateNonWorkingDays updateNonWorkingDays = new UpdateNonWorkingDays();
                updateNonWorkingDays.Execute(nonWorkingDays);
                return(true);
            }
            catch (Exception ex)
            {
                return(false);

                throw ex;
            }
            finally
            {
            }
        }
Beispiel #9
0
        public bool InsertNonWorkingDays(NonWorkingDays nonWorkingDays)
        {
            try
            {
                InsertNonWorkingDays insertNonWorkingDays = new InsertNonWorkingDays();
                insertNonWorkingDays.Execute(nonWorkingDays);
                return(true);
            }
            catch (Exception ex)
            {
                return(false);

                throw ex;
            }
            finally
            {
            }
        }
Beispiel #10
0
        public bool DeleteNonWorkingDays(NonWorkingDays nonWorkingDays)
        {
            try
            {
                DeleteNonWorkingDays deleteNonWorkingDays = new DeleteNonWorkingDays();
                deleteNonWorkingDays.Execute(nonWorkingDays);
                return(true);
            }
            catch (Exception ex)
            {
                return(false);

                throw ex;
            }
            finally
            {
            }
        }
Beispiel #11
0
        public int getBusinessDates(DateTime dateSt, DateTime dateNd, NonWorkingDays nonWorkingDays = NonWorkingDays.SaturdaySunday)
        {
            List <DateTime> datelist = new List <DateTime>();

            while (dateSt.Date < dateNd.Date)
            {
                datelist.Add((dateSt = dateSt.AddDays(1)));
            }
            if (nonWorkingDays == NonWorkingDays.SaturdaySunday)
            {
                return(datelist.Count(d => d.DayOfWeek != DayOfWeek.Saturday &&
                                      d.DayOfWeek != DayOfWeek.Friday));
            }
            else
            {
                return(datelist.Count(d => d.DayOfWeek != DayOfWeek.Friday &&
                                      d.DayOfWeek != DayOfWeek.Saturday));
            }
        }
Beispiel #12
0
 private void NewBarItem_ItemClick(object sender, ItemClickEventArgs e)
 {
     if (!string.IsNullOrWhiteSpace(NamteTE.Text) && DateMC.SelectionStart != null && DateMC.SelectionStart > DateTime.Now)
     {
         nonworkingdays      = new NonWorkingDays();
         nonworkingdays.Date = DateMC.SelectionStart;
         nonworkingdays.Name = NamteTE.Text;
         if (!_DB.InsertNonWorkingDays(nonworkingdays))
         {
             XtraMessageBox.Show("Element is not added!");
         }
         _nonWorkingdays = _DB.GetNonWorkingDays();
         NonWorkingDaysGridControl.DataSource = _nonWorkingdays;
         NamteTE.Text          = string.Empty;
         DateMC.SelectionStart = DateTime.Now;
     }
     else
     {
         XtraMessageBox.Show("All fields should be filled!");
     }
 }
Beispiel #13
0
    public void Should_respect_deviating_weekend_definition()
    {
        var saturday  = new DateOnly(2022, 4, 23);
        var sunday    = saturday.AddDays(1);
        var monday    = sunday.AddDays(1);
        var tuesday   = monday.AddDays(1);
        var wednesday = tuesday.AddDays(1);
        var thursday  = wednesday.AddDays(1);
        var friday    = thursday.AddDays(1);

        //weekend is WED + FRI
        var nwd = new NonWorkingDays {
            Weekend = new List <DayOfWeek> {
                DayOfWeek.Wednesday, DayOfWeek.Friday
            }
        };
        var customWeekendIsWedAndFri = !saturday.isWeekend(nwd) &&
                                       !sunday.isWeekend(nwd) &&
                                       !monday.isWeekend(nwd) &&
                                       !tuesday.isWeekend(nwd) &&
                                       wednesday.isWeekend(nwd) &&
                                       !thursday.isWeekend(nwd) &&
                                       friday.isWeekend(nwd);

        //there is no weekend
        var nwd2 = new NonWorkingDays {
            Weekend = new List <DayOfWeek>()
        };
        var thereIsNoWeekend = !saturday.isWeekend(nwd2) &&
                               !sunday.isWeekend(nwd2) &&
                               !monday.isWeekend(nwd2) &&
                               !tuesday.isWeekend(nwd2) &&
                               !wednesday.isWeekend(nwd2) &&
                               !thursday.isWeekend(nwd2) &&
                               !friday.isWeekend(nwd2);

        Assert.True(customWeekendIsWedAndFri && thereIsNoWeekend);
    }
Beispiel #14
0
    internal static bool isHoliday(this DateOnly thisDate, NonWorkingDays?nonWorkingDays = null)
    {
        HashSet <DateOnly> holidays          = new();
        NonWorkingDays     considerAsHoliday = nonWorkingDays ?? new();

        if (considerAsHoliday.EuropeanTARGET)
        {
            holidays.UnionWith(Holidays.TargetBankHolidays(thisDate.Year));
        }

        var selectedState = considerAsHoliday.GermanPublicHolidays;

        if (selectedState != GermanState.NONE)
        {
            holidays.UnionWith(Holidays.GermanPublicHolidays(thisDate.Year, selectedState));
        }

        if (considerAsHoliday.CustomNonWorkingsDays.Any())
        {
            holidays.UnionWith(considerAsHoliday.CustomNonWorkingsDays);
        }

        return(holidays.Contains(thisDate));
    }
Beispiel #15
0
        private void GetMonth(DateTime day)
        {
            // add holidays
            var holidays = new HolidayCalculator(day, Utils.ReadConfig("Holidays", "Path"));

            foreach (HolidayCalculator.Holiday h in holidays.OrderedHolidays)
            {
                if (h.Date.Month == day.Month)
                {
                    Holidays.Add(new Holiday(h.Name, h.Date));
                }
                // and days before holidays if theye're not weekends or holidays
                var yesterday = h.Date.AddDays(-1);
                if (yesterday.Month == day.Month &&
                    Holidays.FirstOrDefault(hl => hl.Date == yesterday) == default(Holiday) &&
                    yesterday.DayOfWeek != DayOfWeek.Saturday &&
                    yesterday.DayOfWeek != DayOfWeek.Sunday)
                {
                    SpecialDays.Add(new SpecialDay("Day before " + h.Name, yesterday.Date));
                }
            }

            // if the last day in month is day before holiday
            var firstInNextMonth = Last.AddDays(1);
            var hol = Holidays.FirstOrDefault(h => h.Date == firstInNextMonth);

            if (hol != null &&
                Last.Date.DayOfWeek != DayOfWeek.Saturday &&
                Last.Date.DayOfWeek != DayOfWeek.Sunday)
            {
                SpecialDays.Add(new SpecialDay("Day before " + hol.Name, Last.Date));
            }

            // get all fridays, if they're not holidays
            var startDate = First;

            while (startDate.DayOfWeek != DayOfWeek.Friday)
            {
                startDate = startDate.AddDays(1);
            }

            while (startDate < Last)
            {
                if (Holidays.FirstOrDefault(h => h.Date == startDate) == default(Holiday))
                {
                    SpecialDays.Add(new SpecialDay("Friday", startDate));
                }
                startDate = startDate.AddDays(7);
            }

            // get all weekends, if they're not holidays
            startDate = First;
            while (startDate.DayOfWeek != DayOfWeek.Saturday)
            {
                startDate = startDate.AddDays(1);
            }

            while (startDate < Last)
            {
                if (Holidays.FirstOrDefault(h => h.Date == startDate) == default(Holiday))
                {
                    NonWorkingDays.Add(new NonWorkingDay(startDate));
                }
                startDate = startDate.AddDays(1);
                if (Holidays.FirstOrDefault(h => h.Date == startDate) == default(Holiday))
                {
                    NonWorkingDays.Add(new NonWorkingDay(startDate));
                }
                startDate = startDate.AddDays(6);
            }
        }
Beispiel #16
0
    public void Should_correctly_calculate_next_working_day(NonWorkingDays nwd, DateOnly current, DateOnly expected)
    {
        var actual = current.GetNextWorkingDay(nwd);

        Assert.Equal(expected, actual);
    }
        protected static bool IsNonWorkingDay(DateTime date)
        {
            var dt = date.Date;

            return(NonWorkingDays.IsWeekend(dt) || NonWorkingDays.IsBankHoliday(dt));
        }