public async Task <ActionResult <PaginatedList <OrderSummary> > > GetAll([FromBody] OrderFilterRequest filter) { try { // get list of active orders (not deleted) var list = context.Orders .Include(c => c.Customer) .AsNoTracking(); // filter if (!string.IsNullOrEmpty(filter?.SearchTerm)) { list = list.Where(c => c.Code.ToString().Contains(filter.SearchTerm)); } if (!(filter?.ProvinceId).IsNullOrZero()) { list = list.Where(c => c.Customer.ProvinceId == filter.ProvinceId); } if (!(filter?.CustomerId).IsNullOrZero()) { list = list.Where(c => c.CustomerId == filter.CustomerId); } if (filter?.DateFrom != null || filter?.DateTo != null) { filter.DateFrom = filter.DateFrom == null || filter.DateFrom == DateTime.MinValue ? DateTime.Today : filter.DateFrom; filter.DateTo = filter.DateTo == null || filter.DateTo == DateTime.MinValue ? DateTime.Today : filter.DateTo; list = list.Where(c => c.Date >= filter.DateFrom && c.Date < filter.DateTo.Value.AddDays(1)); } if (!(filter?.ItemId).IsNullOrZero()) { list = list.Where(c => c.LineItems.Any(d => d.ItemId == filter.ItemId)); } var isInvoiced = filter?.IsInvoiced ?? false; list = list.Where(c => c.IsInvoiced == isInvoiced); // sort var ordering = $"{Constants.ColumnNames.Code} {Constants.DefaultSortDirection}"; if (!string.IsNullOrEmpty(filter?.SortBy)) { ordering = $"{filter.SortBy} {filter.SortDirection}"; } list = list.OrderBy(ordering); var entities = await listHelpers.CreatePaginatedListAsync <Order, OrderSummary>(list, filter.PageNumber, filter.PageSize); return(entities); } catch (Exception e) { logger.LogError(e.Message); return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public async System.Threading.Tasks.Task TestFilterOrderServiceAsync() { OrderFilterRequest orderFilterRequest = new OrderFilterRequest() { OrderFilterBody = new OrderFilterBody() { OrderFilter = new OrderFilter() { // DAddress= "新疆维吾尔自治区喀什地区喀什市尤木拉克协海尔路11号", //到件 DAddress = "南极洲极点自然开发区xx公司", //到件 FilterType = 1, OrderFilterOption = new OrderFilterOption() { }, //可选 } } }; ISFClient sFClient = new DefaultSFClient(_sFNetConfig); var response = await sFClient.ExcuteAsync(orderFilterRequest); Assert.True(response.Head == "OK"); }