public IHttpActionResult GetItemsByIds([FromUri] string[] ids) { var retVal = _derivativeContractService.GetDerivativeContractItemsByIds(ids); return(Ok(retVal.ToArray())); }
public virtual GenericSearchResult <DerivativeContractItem> SearchDerivativeContractItems(DerivativeContractItemSearchCriteria criteria) { using (var repository = _repositoryFactory()) { repository.DisableChangesTracking(); var query = repository.DerivativeContractItems; if (!criteria.DerivativeContractIds.IsNullOrEmpty()) { query = query.Where(dci => criteria.DerivativeContractIds.Contains(dci.DerivativeContractId)); } if (!criteria.MemberIds.IsNullOrEmpty()) { query = query.Where(dci => criteria.MemberIds.Contains(dci.DerivativeContract.MemberId)); } if (!criteria.FulfillmentCenterIds.IsNullOrEmpty()) { query = query.Where(dci => criteria.FulfillmentCenterIds.Contains(dci.FulfillmentCenterId)); } if (!criteria.ProductIds.IsNullOrEmpty()) { query = query.Where(dci => criteria.ProductIds.Contains(dci.ProductId)); } if (!criteria.Types.IsNullOrEmpty()) { var criteriaTypes = criteria.Types.Select(x => x.ToString()).ToArray(); query = query.Where(dci => criteriaTypes.Contains(dci.DerivativeContract.Type)); } if (criteria.OnlyActive) { var now = DateTime.Now; query = query.Where(dci => dci.DerivativeContract.IsActive && dci.DerivativeContract.StartDate <= now && (dci.DerivativeContract.EndDate == null || dci.DerivativeContract.EndDate >= now) && dci.RemainingQuantity > 0); } if (criteria.OnlyRemaining) { query = query.Where(dci => dci.DerivativeContract.IsActive && dci.RemainingQuantity > 0); } var predicate = GetQueryPredicate(criteria); query = query.Where(predicate.Expand()); var sortInfos = criteria.SortInfos; if (sortInfos.IsNullOrEmpty()) { sortInfos = new[] { new SortInfo { SortColumn = "DerivativeContract.StartDate", SortDirection = SortDirection.Descending }, new SortInfo { SortColumn = "DerivativeContract.EndDate", SortDirection = SortDirection.Ascending } }; } query = query.OrderBySortInfos(sortInfos); var totalCount = query.Count(); var derivativeContractIds = query.Select(dc => dc.Id).Skip(criteria.Skip).Take(criteria.Take).ToArray(); return(new GenericSearchResult <DerivativeContractItem> { Results = _derivativeContractService.GetDerivativeContractItemsByIds(derivativeContractIds).OrderBy(dc => dc.Id).ToList(), TotalCount = totalCount }); } }