コード例 #1
0
        public void RedDays_YearIs2020_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2020);

            Assert.Contains(new DateTime(2020, 01, 01), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2020, 04, 04), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 05), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 06), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 07), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 08), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 09), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 10), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 11), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 12), redDays.Dates);
            Assert.Contains(new DateTime(2020, 04, 13), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2020, 04, 14), redDays.Dates);
            Assert.Contains(new DateTime(2020, 05, 01), redDays.Dates);
            Assert.Contains(new DateTime(2020, 05, 17), redDays.Dates);
            Assert.Contains(new DateTime(2020, 05, 21), redDays.Dates);
            Assert.Contains(new DateTime(2020, 05, 31), redDays.Dates);
            Assert.Contains(new DateTime(2020, 06, 01), redDays.Dates);
            Assert.Contains(new DateTime(2020, 12, 24), redDays.Dates);
            Assert.Contains(new DateTime(2020, 12, 25), redDays.Dates);
            Assert.Contains(new DateTime(2020, 12, 26), redDays.Dates);
            Assert.Contains(new DateTime(2020, 12, 31), redDays.Dates);
        }
コード例 #2
0
        public void RedDays_YearIs2000_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2000);

            Assert.Contains(new DateTime(2000, 01, 01), redDays.Dates);
            Assert.Contains(new DateTime(2000, 04, 16), redDays.Dates);
            Assert.Contains(new DateTime(2000, 06, 01), redDays.Dates);
            Assert.Contains(new DateTime(2000, 06, 11), redDays.Dates);
        }
コード例 #3
0
        public void RedDays_YearIs2010_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2010);

            Assert.Contains(new DateTime(2010, 04, 01), redDays.Dates);
            Assert.Contains(new DateTime(2010, 04, 02), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2010, 04, 06), redDays.Dates);
            Assert.Contains(new DateTime(2010, 05, 01), redDays.Dates);
            Assert.Contains(new DateTime(2010, 05, 24), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2010, 05, 22), redDays.Dates);
        }
コード例 #4
0
 private IEnumerable <DateTime> GetAlvDays(RedDays redDays, int year)
 {
     // Get the amount of days in romjula that is not a wekkend day
     // The 3 represents the three days of easter
     return(redDays.Dates.Where(days => days.Month == 12 &&
                                days.Day > 26 &&
                                days.Day <= 31 &&
                                days.DayOfWeek != DayOfWeek.Saturday &&
                                days.DayOfWeek != DayOfWeek.Sunday).Concat(new List <DateTime> {
         redDays.GetMondayInEaster(year), redDays.GetTuesdayInEaster(year), redDays.GetWednesdayInEaster(year)
     }));
 }
コード例 #5
0
        public void RedDays_YearIs2022_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2022);

            Assert.Contains(new DateTime(2022, 04, 10), redDays.Dates);
            Assert.Contains(new DateTime(2022, 04, 15), redDays.Dates);
            Assert.Contains(new DateTime(2022, 04, 18), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2022, 04, 19), redDays.Dates);
            Assert.Contains(new DateTime(2022, 06, 05), redDays.Dates);
            Assert.Contains(new DateTime(2022, 06, 06), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2022, 06, 04), redDays.Dates);
        }
コード例 #6
0
        public void RedDays_YearIs2021_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2021);

            Assert.Contains(new DateTime(2021, 03, 28), redDays.Dates);
            Assert.Contains(new DateTime(2021, 03, 30), redDays.Dates);
            Assert.Contains(new DateTime(2021, 03, 31), redDays.Dates);
            Assert.Contains(new DateTime(2021, 04, 05), redDays.Dates);
            Assert.Contains(new DateTime(2021, 05, 13), redDays.Dates);
            Assert.Contains(new DateTime(2021, 05, 23), redDays.Dates);
            Assert.Contains(new DateTime(2021, 05, 24), redDays.Dates);
        }
コード例 #7
0
        public void RedDays_YearIs2019_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2019);

            Assert.Contains(new DateTime(2019, 04, 14), redDays.Dates);
            Assert.Contains(new DateTime(2019, 04, 17), redDays.Dates);
            Assert.Contains(new DateTime(2019, 04, 22), redDays.Dates);
            Assert.Contains(new DateTime(2019, 04, 19), redDays.Dates);
            Assert.Contains(new DateTime(2019, 05, 30), redDays.Dates);
            Assert.Contains(new DateTime(2019, 06, 09), redDays.Dates);
            Assert.Contains(new DateTime(2019, 06, 10), redDays.Dates);
        }
コード例 #8
0
        public void RedDays_YearIs2030_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2030);

            Assert.Contains(new DateTime(2030, 04, 21), redDays.Dates);
            Assert.Contains(new DateTime(2030, 04, 16), redDays.Dates);
            Assert.Contains(new DateTime(2030, 04, 22), redDays.Dates);
            Assert.Contains(new DateTime(2030, 06, 09), redDays.Dates);
            Assert.Contains(new DateTime(2030, 06, 10), redDays.Dates);
            Assert.Contains(new DateTime(2030, 12, 24), redDays.Dates);
            Assert.Contains(new DateTime(2030, 12, 31), redDays.Dates);
            Assert.DoesNotContain(new DateTime(2030, 12, 23), redDays.Dates);
        }
コード例 #9
0
        public void RedDays_YearIs2018_ListHasCorrectRedDays()
        {
            var redDays = new RedDays(2018);

            Assert.Contains(new DateTime(2018, 01, 01), redDays.Dates);
            Assert.Contains(new DateTime(2018, 03, 25), redDays.Dates);
            Assert.Contains(new DateTime(2018, 03, 26), redDays.Dates);
            Assert.Contains(new DateTime(2018, 04, 02), redDays.Dates);
            Assert.Contains(new DateTime(2018, 05, 17), redDays.Dates);
            Assert.Contains(new DateTime(2018, 05, 20), redDays.Dates);
            Assert.Contains(new DateTime(2018, 05, 21), redDays.Dates);
            Assert.Contains(new DateTime(2018, 12, 27), redDays.Dates);
        }
コード例 #10
0
        public List <string> GetRedDaysFromYear(int year)
        {
            var dates = new List <string>();

            var redDays = new RedDays(year);

            foreach (var date in redDays.Dates)
            {
                dates.Add(date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
            }

            return(dates);
        }
コード例 #11
0
        public List <string> GetRedDaysFromYears(int fromYearInclusive, int toYearInclusive)
        {
            var dates = new List <string>();

            var yearsToInclude = toYearInclusive - fromYearInclusive + 1;
            var years          = Enumerable.Range(fromYearInclusive, yearsToInclude);

            foreach (var yearToFindDays in years)
            {
                var redDays = new RedDays(yearToFindDays);

                foreach (var date in redDays.Dates)
                {
                    dates.Add(date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
                }
            }

            return(dates);
        }
コード例 #12
0
        public VacationDaysDTO GetVacationDays(int userId, int year, int month, int day)
        {
            IEnumerable <TimeEntriesResponseDto> paidVacationEntries = timeEntryStorage.GetTimeEntries(new TimeEntryQuerySearch
            {
                FromDateInclusive = new DateTime(year, 01, 01),
                ToDateInclusive   = new DateTime(year, 12, 31),
                UserId            = userId,
                TaskId            = timeEntryOptions.CurrentValue.PaidHolidayTask
            });

            IEnumerable <TimeEntriesResponseDto> unpaidVacationEntries = timeEntryStorage.GetTimeEntries(new TimeEntryQuerySearch
            {
                FromDateInclusive = new DateTime(year, 01, 01),
                ToDateInclusive   = new DateTime(year, 12, 31),
                UserId            = userId,
                TaskId            = timeEntryOptions.CurrentValue.UnpaidHolidayTask
            });

            var redDays = new RedDays(year);

            var now = new DateTime(year, month, day);

            var vacationTransactions = paidVacationEntries.Concat(unpaidVacationEntries);
            var alvdays = GetAlvDays(redDays, year);

            var plannedVacation = vacationTransactions.Where(item => item.Value > 0 && item.Date.CompareTo(now) > 0);
            var plannedVacationExcludingAlvdays = plannedVacation.Where(item => !alvdays.Contains(item.Date));
            var usedVacation = vacationTransactions.Where(item => item.Value > 0 && item.Date.CompareTo(now) <= 0);

            var usedAlvdays = alvdays.Where(item => item.CompareTo(now) < 0);
            var usedVacationExcludingAlvdays = usedVacation.Select(used => used.Date).Where(u => !usedAlvdays.Contains(u));

            return(new VacationDaysDTO
            {
                PlannedVacationDays = plannedVacationExcludingAlvdays.Count() + alvdays.Count() - usedAlvdays.Count(),
                UsedVacationDays = usedVacationExcludingAlvdays.Count() + usedAlvdays.Count(),
                AvailableVacationDays = vacationDays - plannedVacationExcludingAlvdays.Count() - usedVacationExcludingAlvdays.Count(),
                PlannedTransactions = plannedVacation,
                UsedTransactions = usedVacation
            });
        }