Пример #1
0
        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));
            }
        }
Пример #2
0
        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");
        }