public ProductCollectionResponse Fetch(ProductQueryCollectionRequest request)
        {
            base.FixupLimitAndPagingOnRequest(request);

            var totalItemCount  = 0;
            var sortExpression  = RepositoryHelper.ConvertStringToSortExpression(EntityType, request.Sort);
            var includeFields   = RepositoryHelper.ConvertStringToExcludedIncludedFields(EntityType, request.Select);
            var prefetchPath    = RepositoryHelper.ConvertStringToPrefetchPath(EntityType, request.Include, request.Select);
            var predicateBucket = RepositoryHelper.ConvertStringToRelationPredicateBucket(EntityType, request.Filter, request.Relations);

            EntityCollection <ProductEntity> entities;

            using (var adapter = DataAccessAdapterFactory.NewDataAccessAdapter())
            {
                OnBeforeFetchProductQueryCollectionRequest(adapter, request, sortExpression, includeFields, prefetchPath, predicateBucket,
                                                           request.PageNumber, request.PageSize, request.Limit);
                entities = base.Fetch(adapter, sortExpression, includeFields, prefetchPath, predicateBucket,
                                      request.PageNumber, request.PageSize, request.Limit, out totalItemCount);
                OnAfterFetchProductQueryCollectionRequest(adapter, request, entities, sortExpression, includeFields, prefetchPath, predicateBucket,
                                                          request.PageNumber, request.PageSize, request.Limit, totalItemCount);
            }
            var response = new ProductCollectionResponse(entities.ToDtoCollection(), request.PageNumber,
                                                         request.PageSize, totalItemCount);

            return(response);
        }
        public async Task Consume(ConsumeContext <StockInitializedIntegrationEvent> context)
        {
            StockInitializedIntegrationEvent stockInitializedIntegrationEvent = context.Message;

            var queryProductCommand = new QueryProductCommand(0, 1)
            {
                ProductId = stockInitializedIntegrationEvent.ProductId
            };
            ProductCollectionResponse productCollectionResponse = await _mediator.Send(queryProductCommand);

            ProductResponse productResponse = productCollectionResponse.Data.First();

            var createStockCommand = new CreateStockCommand(productResponse.ProductId, productResponse.ProductCode, stockInitializedIntegrationEvent.StockActionId, stockInitializedIntegrationEvent.StockCreatedOn);
            await _mediator.Send(createStockCommand);
        }
Exemple #3
0
        public ExecuteResult <ProductCollectionResponse> RefreshProduct(GetProductRefreshRequest request)
        {
            if (request == null)
            {
                return(new ExecuteResult <ProductCollectionResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            List <int> tagIds = null;

            if (request.TagId != null)
            {
                tagIds = new List <int> {
                    request.TagId.Value
                };
            }

            var filter = new ProductFilter
            {
                BrandId       = request.BrandId,
                DataStatus    = DataStatus.Normal,
                ProductName   = null,
                RecommendUser = null,
                TagIds        = tagIds,
                Timestamp     = request.Timestamp,
                TopicId       = request.TopicId,
                PromotionId   = request.PromotionId
            };


            int totalCount;
            var produtEntities = _productRepository.Get(request.PagerRequest, out totalCount,
                                                        request.ProductSortOrder, filter);

            var r = new ProductCollectionResponse(request.PagerRequest, totalCount)
            {
                Products = MappingManager.ProductInfoResponseMapping(produtEntities).ToList()
            };


            var result = new ExecuteResult <ProductCollectionResponse> {
                Data = r
            };

            return(result);
        }
        public async Task <IActionResult> GetProducts([FromQuery] GetProductCollectionHttpRequest getProductCollectionHttpRequest)
        {
            QueryProductCommand queryProductCommand
                = getProductCollectionHttpRequest != null
                      ? new QueryProductCommand(getProductCollectionHttpRequest.Offset, getProductCollectionHttpRequest.Take)
                {
                ProductCode = getProductCollectionHttpRequest.ProductCode
                }
                      : null;

            ProductCollectionResponse productCollectionResponse = await _mediator.Send(queryProductCommand);

            var productCollectionHttpResponse = new ProductCollectionHttpResponse
            {
                TotalCount = productCollectionResponse.TotalCount,
                Data       = productCollectionResponse.Data
                             .Select(d => d.ToProductHttpResponse())
                             .ToList()
            };

            return(StatusCode((int)HttpStatusCode.OK, productCollectionHttpResponse));
        }
Exemple #5
0
        public async Task <ProductCollectionResponse> Handle(QueryProductCommand request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new RequestNullException();
            }

            IQueryable <ProductModel> productModels = _dataContext.ProductModels.AsQueryable();

            if (request.ProductCode != null)
            {
                productModels = productModels.Where(p => p.ProductCode == request.ProductCode);
            }

            if (request.ProductId.HasValue)
            {
                productModels = productModels.Where(p => p.Id == request.ProductId);
            }

            int totalCount = await productModels.CountAsync(cancellationToken : cancellationToken);

            List <ProductModel> productModelList = await productModels.Skip(request.Offset)
                                                   .Take(request.Take)
                                                   .ToListAsync(cancellationToken: cancellationToken);

            if (!productModelList.Any())
            {
                throw new ProductNotFoundException();
            }

            List <ProductResponse> productServiceResponseList = productModelList.Select(p => p.ToProductServiceResponse())
                                                                .ToList();
            var productCollectionServiceResponse = new ProductCollectionResponse(totalCount, productServiceResponseList);

            return(productCollectionServiceResponse);
        }