Beispiel #1
0
        private TkTimeSet GetVacancy(DateTime start, DateTime end, TkTimeSet busy, TkWorkWeekConfig config)
        {
            var workWeeks = TkTimeSet.WorkWeeks(start, end, config);
            var vacancy   = TkTimeSet.Difference(workWeeks, busy);

            return(vacancy);
        }
Beispiel #2
0
        public static TkTimeSet WorkWeeks(DateTime start, DateTime end, TkWorkWeekConfig config)
        {
            var intervals = new List <TkInterval>();
            var current   = start;

            while (current <= end)
            {
                if (config.WorkDays.Contains(current.DayOfWeek))
                {
                    intervals.Add(WorkDay(current, config));
                }

                current = current.AddDays(1);
            }

            return(new TkTimeSet(intervals.ToArray()));
        }
Beispiel #3
0
        public static TkInterval WorkDay(DateTime day, TkWorkWeekConfig config)
        {
            var startsAt = DateTime.SpecifyKind(new DateTime(
                                                    day.Year,
                                                    day.Month,
                                                    day.Day,
                                                    config.WorkDayStartHourUtc,
                                                    0,
                                                    0),
                                                DateTimeKind.Utc);

            var endsAt = DateTime.SpecifyKind(new DateTime(
                                                  day.Year,
                                                  day.Month,
                                                  day.Day,
                                                  config.WorkDayStartHourUtc + config.WorkDayDuration,
                                                  0,
                                                  0),
                                              DateTimeKind.Utc);

            return(new TkInterval(startsAt, endsAt));
        }