Exemplo n.º 1
0
        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));
 }
Exemplo n.º 4
0
 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);
        }