public async Task <bool> Handle(CreateTimeslotCommand request, CancellationToken cancellationToken) { var teacher = await _dbContext.Teachers.FindAsync(request.TeacherId); var calendar = await _dbContext.Calendars.FindAsync(request.CalendarId); var timeslotsWhereTeacherIsAvailable = _dbContext.Timeslots.Where(timeslot => timeslot.Teacher.Id == teacher.Id).ToList(); var range = DateTimeRange.Create(request.From, request.To); var timeSlot = new Timeslot(request.Description, range.Value); if (timeSlot.IsTimeslotsOverlapping(timeslotsWhereTeacherIsAvailable, timeSlot) == false) { teacher.CreateTimeSlot(timeSlot); await _dbContext.SaveChanges(); return(true); } return(false); }
public Task <bool> Handle(CreateTimeslotCommand request, CancellationToken cancellationToken) { var teacher = _dbContext.Teachers.FirstOrDefault(t => t.Id == request.TeacherId); var calendar = _dbContext.Calendars.FirstOrDefault(cal => cal.Id == request.CalendarId); var timeslotsWhereTeacherIsPresent = _dbContext.Timeslots.Where(timeslot => timeslot.Teacher.Id == teacher.Id).ToList(); var timeSlot = new Timeslot { Description = request.Description, From = request.From, To = request.To, Calendar = calendar }; if (timeSlot.IsTimeslotsOverlapping(timeslotsWhereTeacherIsPresent, timeSlot)) { teacher.CreateTimeSlot(timeSlot); return(Task.FromResult(_dbContext.SaveChanges())); } return(Task.FromResult(false)); }