private bool CheckTable(Table table, TableFreeFilterModel filter, int?excludeReservationId = null) { if (table.Size < (filter.MinSize ?? 0)) { return(false); } var overlappingReservations = table.Reservations.Where(r => r.IsActive && r.TimeFrom <= filter.TimeTo && r.TimeTo >= filter.TimeFrom && (excludeReservationId == null || r.Id != excludeReservationId)); return(overlappingReservations.Count() == 0); }
public IEnumerable <TableFreeModel> GetFreeTables(TableFreeFilterModel filter) => DbContext.Tables .Include(t => t.Reservations) .Include(t => t.Category) .AsEnumerable() .Where(t => CheckTable(t, filter)) .Select(t => new TableFreeModel() { Id = t.Id, Code = t.Code, Size = t.Size, CategoryId = t.CategoryId, CategoryName = t.Category?.Name }).ToList();
public IEnumerable <TableFreeModel> GetFreeTables([FromQuery] TableFreeFilterModel filter) => TableService.GetFreeTables(filter);