public async Task <StockConsumptionGetPagedListResponse> GetPagedListAsync( Guid accountId, StockConsumptionGetPagedListRequest request, CancellationToken ct) { var consumptions = await _storage.StockConsumptions .AsNoTracking() .Include(x => x.Items) .ThenInclude(x => x.Room) .Where(x => x.AccountId == accountId && (!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 StockConsumptionGetPagedListResponse { TotalCount = consumptions .Count(x => x.FilterByAdditional(request)), LastModifyDateTime = consumptions .Max(x => x.ModifyDateTime), Consumptions = consumptions .Where(x => x.FilterByAdditional(request)) .AsQueryable() .SortBy(request.SortBy, request.OrderBy) .Skip(request.Offset) .Take(request.Limit) .ToList() }); }
public async Task <ActionResult <StockConsumptionGetPagedListResponse> > GetPagedList( StockConsumptionGetPagedListRequest request, CancellationToken ct = default) { var response = await _stockConsumptionsService.GetPagedListAsync(_userContext.AccountId, request, ct); return(ReturnIfAllowed(response, Roles.Stock, response.Consumptions.Select(x => x.AccountId))); }
public Task <StockConsumptionGetPagedListResponse> GetPagedListAsync( StockConsumptionGetPagedListRequest request, Dictionary <string, string> headers = default, CancellationToken ct = default) { return(_factory.PostAsync <StockConsumptionGetPagedListResponse>( _host + "/Stock/Consumptions/v1/GetPagedList", null, request, headers, ct)); }
public static bool FilterByAdditional( this StockConsumption consumption, StockConsumptionGetPagedListRequest request) { return((request.Types == null || !request.Types.Any() || request.Types.Any(x => TypesPredicate(consumption, x))) && (request.CreateUserIds == null || !request.CreateUserIds.Any() || request.CreateUserIds.Any(x => CreateUserIdsPredicate(consumption, x))) && (request.SupplierIds == null || !request.SupplierIds.Any() || request.SupplierIds.Any(x => SupplierIdsPredicate(consumption, x))) && (request.OrderIds == null || !request.OrderIds.Any() || request.OrderIds.Any(x => OrderIdsPredicate(consumption, x))) && (request.InventoryIds == null || !request.InventoryIds.Any() || request.InventoryIds.Any(x => InventoryIdsPredicate(consumption, x))) && (request.ItemsRoomIds == null || !request.ItemsRoomIds.Any() || request.ItemsRoomIds.Any(x => ItemsRoomIdsPredicate(consumption, x))) && (request.ItemsProductIds == null || !request.ItemsProductIds.Any() || request.ItemsProductIds.Any(x => ItemsProductIdsPredicate(consumption, x)))); }
public async Task WhenGetPagedList_ThenSuccess() { var headers = await _defaultRequestHeadersService.GetAsync(); var productStatus = await _create.ProductStatus.BuildAsync(); var room = await _create.StockRoom .BuildAsync(); var product = await _create.Product .WithStatusId(productStatus.Id) .BuildAsync(); await Task.WhenAll( _create.StockConsumption .WithType(StockConsumptionType.SaleToCustomer) .WithOrderId(Guid.NewGuid()) .WithItem(room.Id, product.Id, 1) .BuildAsync(), _create.StockConsumption .WithType(StockConsumptionType.SaleToCustomer) .WithOrderId(Guid.NewGuid()) .WithItem(room.Id, product.Id, 1) .BuildAsync()); var request = new StockConsumptionGetPagedListRequest(); var response = await _stockConsumptionsClient.GetPagedListAsync(request, headers); var results = response.Consumptions .Skip(1) .Zip(response.Consumptions, (previous, current) => current.CreateDateTime >= previous.CreateDateTime); Assert.NotEmpty(response.Consumptions); Assert.All(results, Assert.True); }