Exemplo n.º 1
0
        public TimeSchedules AddWorkingInterval(int userId, DayOfWeek startDay, TimeSpan startTime, DayOfWeek endDay, TimeSpan endTime)
        {
            Users user = GetUserById(userId);

            if (user == null)
            {
                throw new NoEntryFoundException(userId, typeof(Users).Name);
            }

            TimeSchedules schedule = new TimeSchedules
            {
                UserId    = user.Id,
                StartDay  = startDay,
                StartTime = startTime,
                EndDay    = endDay,
                EndTime   = endTime
            };

            List <TimeSchedules> overlapping = GetOverlappedSchedule(schedule, user.TheTimeScheduleForThisUser);

            if (overlapping.Count == 0)
            {
                TimeScheduleRepository.Add(schedule);
                return(schedule);
            }

            TimeSchedules newSchedule = SolveOverlappedSchedules(schedule, overlapping);

            newSchedule.UserId = user.Id;
            TimeScheduleRepository.Add(newSchedule);

            foreach (var sch in overlapping)
            {
                TimeScheduleRepository.Remove(sch);
            }

            return(newSchedule);
        }