public async Task <IWrappedResponse> Search(OrderGroupsSearchRequest request) { #region security // TODO add security #endregion // TODO Any one of the fields on the request must be filled var query = _olmaOrderGroupRepo.FindAll() .AsNoTracking(); var predicate = PredicateBuilder.New <Olma.OrderGroup>(); if (request.Id?.Count > 0) { predicate = predicate.Or(group => request.Id.Contains(group.Id)); } if (request.OrderId?.Count > 0) { predicate = predicate.Or(group => group.Orders.Any(order => request.OrderId.Contains(order.Id))); } if (request.OrderLoadId?.Count > 0) { predicate = predicate.Or(group => group.Orders.Any(order => order.Loads.Any(load => request.OrderLoadId.Contains(load.Id)))); } if (request.LoadCarrierReceiptId?.Count > 0) { predicate = predicate.Or(group => group.Orders.Any(order => order.Loads.Any(load => request.LoadCarrierReceiptId.Cast <int?>().Contains(load.Detail.LoadCarrierReceiptId)))); } query = query.Where(predicate); var orderGroups = query.ProjectTo <OrderGroup>(Mapper.ConfigurationProvider) .AsEnumerable(); return(Ok(orderGroups)); }
public Task <ActionResult <IEnumerable <OrderGroup> > > Search([FromQuery] OrderGroupsSearchRequest request) { return(this._orderGroupsService.Search(request).Convert <IEnumerable <OrderGroup> >(this)); }