public async Task <List <OrderItem> > GetAllAsync(OrderItemFilterDto dto) { var query = _ctx.OrderItems.Where(x => true); if (dto.OrderId != null && dto.OrderId != Guid.Empty) { query = query.Where(x => x.OrderId == dto.OrderId); } if (dto.ProductId != null && dto.ProductId != Guid.Empty) { query = query.Where(x => x.ProductId == dto.ProductId); } var returnValue = await query.ToListAsync(); return(returnValue); }
protected override IQuery <OrderItem> ApplyWhereClause(IQuery <OrderItem> query, OrderItemFilterDto filter) { if (filter.MenuItemId <= 0) { if (filter.OrderId <= 0) { return(query); } else { return(query.Where(new SimplePredicate(nameof(OrderItem.OrderId), ValueComparingOperator.Equal, filter.OrderId))); } } else { if (filter.OrderId <= 0) { return(query.Where(new SimplePredicate(nameof(OrderItem.MenuItemId), ValueComparingOperator.Equal, filter.MenuItemId))); } else { return(query.Where( new CompositePredicate(new List <IPredicate>() { new SimplePredicate(nameof(OrderItem.OrderId), ValueComparingOperator.Equal, filter.OrderId), new SimplePredicate(nameof(OrderItem.MenuItemId), ValueComparingOperator.Equal, filter.MenuItemId) }, LogicalOperator.AND) )); } } }