コード例 #1
0
        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));
        }
コード例 #2
0
 public Task <ActionResult <IEnumerable <OrderGroup> > > Search([FromQuery] OrderGroupsSearchRequest request)
 {
     return(this._orderGroupsService.Search(request).Convert <IEnumerable <OrderGroup> >(this));
 }