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); }
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); }
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); }
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) })); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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 }); }