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