public static IEnumerable<Table> GetFreeTablesForReservation(IEnumerable<Table> allAvailableTables, Reservation requestedRervation) { return allAvailableTables.Where( table => !table.Reservations.Any( reservation => IsTimeOverlapping(requestedRervation, reservation) || IsWorkDaysOverlapping(requestedRervation, reservation))); }
private static bool IsWorkDaysOverlapping(Reservation reservation1, Reservation reservation2) { return (reservation1.WorkDays & reservation2.WorkDays) > 0; }
private static bool IsTimeOverlapping(Reservation reservation1, Reservation reservation2) { return reservation2.StartTime < reservation1.EndTime && reservation1.StartTime < reservation2.EndTime; }