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);
        }
Пример #2
0
        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));
        }