Exemplo n.º 1
0
        public async Task <IWrappedResponse <IPaginationResult <Contracts.Models.OrderMatch> > > Search(OrderMatchesSearchRequest request)
        {
            var olmaOrderMatchQuery = _olmaOrderMatchRepo
                                      .FindAll()
                                      .AsNoTracking();

            #region security

            // TODO add security

            #endregion

            #region convert search request

            if (request.Code != null)
            {
                olmaOrderMatchQuery = olmaOrderMatchQuery.Where(om => om.DigitalCode == request.Code);
            }

            if (request.PostingAccountId?.Count > 0)
            {
                olmaOrderMatchQuery = olmaOrderMatchQuery.Where(om =>
                                                                request.PostingAccountId.Contains(om.Demand.Order.PostingAccountId) ||
                                                                request.PostingAccountId.Contains(om.Supply.Order.PostingAccountId));
            }

            if (request.Statuses?.Count > 0)
            {
                olmaOrderMatchQuery = olmaOrderMatchQuery.Where(om => request.Statuses.Contains(om.Status));
            }

            #endregion

            #region ordering

            olmaOrderMatchQuery = olmaOrderMatchQuery.OrderByDescending(o => o.Id);

            #endregion

            var projectedQuery = olmaOrderMatchQuery.ProjectTo <Contracts.Models.OrderMatch>(Mapper.ConfigurationProvider);

            var mappedResult = projectedQuery.ToPaginationResult(request);

            return(Ok(mappedResult));
        }
 public Task <ActionResult <IPaginationResult <OrderMatch> > > Get([FromQuery] OrderMatchesSearchRequest request)
 {
     return(this._orderMatchesService.Search(request).Convert(this));
 }