public Task <OrderGetPagedListResponse> GetPagedListAsync( OrderGetPagedListRequest request, Dictionary <string, string> headers = default, CancellationToken ct = default) { return(_factory.PostAsync <OrderGetPagedListResponse>( _host + "/Orders/v1/GetPagedList", null, request, headers, ct)); }
public async Task <ActionResult <OrderGetPagedListResponse> > GetPagedList( OrderGetPagedListRequest request, CancellationToken ct = default) { var response = await _ordersService.GetPagedListAsync(_userContext.AccountId, request, ct); return(ReturnIfAllowed(response, Roles.Orders, response.Orders.Select(x => x.AccountId))); }
public async Task <OrderGetPagedListResponse> GetPagedListAsync( Guid accountId, OrderGetPagedListRequest request, CancellationToken ct) { var orders = await _storage.Orders .AsNoTracking() .Include(x => x.Type) .Include(x => x.Status) .Include(x => x.Items) .Include(x => x.AttributeLinks) .Where(x => x.AccountId == accountId && (request.Name.IsEmpty() || EF.Functions.ILike(x.Name, $"{request.Name}%")) && (!request.MinStartDateTime.HasValue || x.StartDateTime >= request.MinStartDateTime) && (!request.MaxStartDateTime.HasValue || x.StartDateTime <= request.MaxStartDateTime) && (!request.MinEndDateTime.HasValue || x.EndDateTime >= request.MinEndDateTime) && (!request.MaxEndDateTime.HasValue || x.EndDateTime <= request.MaxEndDateTime) && (request.MinSum.IsEmpty() || x.Sum >= request.MinSum) && (request.MaxSum.IsEmpty() || x.Sum <= request.MaxSum) && (request.MinSumWithoutDiscount.IsEmpty() || x.SumWithoutDiscount >= request.MinSumWithoutDiscount) && (request.MaxSumWithoutDiscount.IsEmpty() || x.SumWithoutDiscount <= request.MaxSumWithoutDiscount) && (!request.IsDeleted.HasValue || x.IsDeleted == request.IsDeleted) && (!request.MinCreateDate.HasValue || x.CreateDateTime >= request.MinCreateDate) && (!request.MaxCreateDate.HasValue || x.CreateDateTime <= request.MaxCreateDate) && (!request.MinModifyDate.HasValue || x.ModifyDateTime >= request.MinModifyDate) && (!request.MaxModifyDate.HasValue || x.ModifyDateTime <= request.MaxModifyDate)) .ToListAsync(ct); return(new OrderGetPagedListResponse { TotalCount = orders .Count(x => x.FilterByAdditional(request)), LastModifyDateTime = orders .Max(x => x.ModifyDateTime), Orders = orders .Where(x => x.FilterByAdditional(request)) .AsQueryable() .SortBy(request.SortBy, request.OrderBy) .Skip(request.Offset) .Take(request.Limit) .ToList() }); }
public async Task WhenGetPagedList_ThenSuccess() { var headers = await _defaultRequestHeadersService.GetAsync(); var attribute = await _create.OrderAttribute.BuildAsync(); var type = await _create.OrderType.BuildAsync(); var status = await _create.OrderStatus.BuildAsync(); var value = "Test".WithGuid(); await Task.WhenAll( _create.Order .WithTypeId(type.Id) .WithStatusId(status.Id) .WithAttributeLink(attribute.Id, value) .BuildAsync(), _create.Order .WithTypeId(type.Id) .WithStatusId(status.Id) .WithAttributeLink(attribute.Id, value) .BuildAsync()); var filterAttributes = new Dictionary <Guid, string> { { attribute.Id, value } }; var filterSourceIds = new List <Guid> { status.Id }; var request = new OrderGetPagedListRequest { Attributes = filterAttributes, StatusIds = filterSourceIds }; var response = await _ordersClient.GetPagedListAsync(request, headers); var results = response.Orders .Skip(1) .Zip(response.Orders, (previous, current) => current.CreateDateTime >= previous.CreateDateTime); Assert.NotEmpty(response.Orders); Assert.All(results, Assert.True); }
public static bool FilterByAdditional(this Order order, OrderGetPagedListRequest request) { return((request.TypeIds == null || !request.TypeIds.Any() || request.TypeIds.Any(x => TypeIdsPredicate(order, x))) && (request.StatusIds == null || !request.StatusIds.Any() || request.StatusIds.Any(x => StatusIdsPredicate(order, x))) && (request.CreateUserIds == null || !request.CreateUserIds.Any() || request.CreateUserIds.Any(x => CreateUserIdsPredicate(order, x))) && (request.ResponsibleUserIds == null || !request.ResponsibleUserIds.Any() || request.ResponsibleUserIds.Any(x => ResponsibleUserIdsPredicate(order, x))) && (request.CustomerIds == null || !request.CustomerIds.Any() || request.CustomerIds.Any(x => CustomerIdsPredicate(order, x))) && (request.Attributes == null || !request.Attributes.Any() || (request.AllAttributes is false ? request.Attributes.Any(x => AttributePredicate(order, x)) : request.Attributes.All(x => AttributePredicate(order, x)))) && (request.ItemsProductIds == null || !request.ItemsProductIds.Any() || request.ItemsProductIds.Any(x => ItemsProductIdsPredicate(order, x)))); }