public void SetTablesAvailabilities(string firstTime, string secondTime, string currentDay) { DateTime first, second, day; ResetValues(); // все столики доступны // если выбраны и время и дата if (DateTime.TryParse(firstTime, out first) && DateTime.TryParse(secondTime, out second) && DateTime.TryParse(currentDay, out day)) { // TODO: скорее всего не хватает проверок var reservations = _unitOfWork.Reservations.GetAll() .Where(r => r.Day.Date == day.Date && // существующая бронь не должна попасть в диапазон выбора // выбранная бронь тоже не должна попасть в диапазон существующей (IsReservationInTheTimeRange(r, first, second) || IsTimeRangeInTheReservation(r, first, second))); foreach (var r in reservations) // у столиков, попавших в этот набор, меням значение на false { _tables.First(t => t.Id == r.TableId).Availability = false; } } }