public IHttpActionResult GetProducts(ProductsParametersModel parameters)
        {
            if (parameters.Limit < Configurations.MinLimit || parameters.Limit > Configurations.MaxLimit)
            {
                return(Error(HttpStatusCode.BadRequest, "limit", "invalid limit parameter"));
            }

            if (parameters.Page < Configurations.DefaultPageValue)
            {
                return(Error(HttpStatusCode.BadRequest, "page", "invalid page parameter"));
            }

            IList <Product> allProducts = _productApiService.GetProducts(parameters.Ids, parameters.CreatedAtMin, parameters.CreatedAtMax, parameters.UpdatedAtMin,
                                                                         parameters.UpdatedAtMax, parameters.Limit, parameters.Page, parameters.SinceId, parameters.CategoryId,
                                                                         parameters.VendorName, parameters.PublishedStatus);

            IList <ProductDto> productsAsDtos = allProducts.Select(product =>
            {
                return(_dtoHelper.PrepareProductDTO(product));
            }).ToList();

            var productsRootObject = new ProductsRootObjectDto()
            {
                Products = productsAsDtos
            };

            var json = _jsonFieldsSerializer.Serialize(productsRootObject, parameters.Fields);

            return(new RawJsonActionResult(json));
        }
        public async Task <IActionResult> GetProducts(ProductsParametersModel parameters)
        {
            if (parameters.Limit < Constants.Configurations.MinLimit || parameters.Limit > Constants.Configurations.MaxLimit)
            {
                return(Error(HttpStatusCode.BadRequest, "limit", "invalid limit parameter"));
            }

            if (parameters.Page < Constants.Configurations.DefaultPageValue)
            {
                return(Error(HttpStatusCode.BadRequest, "page", "invalid page parameter"));
            }

            var allProducts = _productApiService.GetProducts(parameters.Ids, parameters.CreatedAtMin, parameters.CreatedAtMax, parameters.UpdatedAtMin,
                                                             parameters.UpdatedAtMax, parameters.Limit, parameters.Page, parameters.SinceId, parameters.CategoryId,
                                                             parameters.VendorName, parameters.PublishedStatus)
                              .WhereAwait(async p => await StoreMappingService.AuthorizeAsync(p));

            IList <ProductDto> productsAsDtos = await allProducts.SelectAwait(async product => await _dtoHelper.PrepareProductDTOAsync(product)).ToListAsync();

            var productsRootObject = new ProductsRootObjectDto
            {
                Products = productsAsDtos
            };

            var json = JsonFieldsSerializer.Serialize(productsRootObject, parameters.Fields);

            return(new RawJsonActionResult(json));
        }
Exemplo n.º 3
0
        public IActionResult GetBestSellingProducts(ProductsParametersModel parameters)
        {
            if (!_catalogSettings.ShowBestsellersOnHomepage || _catalogSettings.NumberOfBestsellersOnHomepage == 0)
            {
                return(new RawJsonActionResult("{\"products\":[]}"));
            }

            //load report
            var report = _orderReportService.BestSellersReport(
                storeId: _storeContext.CurrentStore.Id,
                pageSize: _catalogSettings.NumberOfBestsellersOnHomepage)
                         .ToList();

            parameters.Ids = report.Select(x => x.ProductId).ToList();
            return(GetProducts(parameters));
        }
Exemplo n.º 4
0
        public IActionResult GetProducts(ProductsParametersModel parameters)
        {
            var consumerKey    = Request.Headers.GetInstantCheckoutConsumerKey();
            var consumerSecret = Request.Headers.GetInstantCheckoutConsumerSecret();

            if (consumerKey == Guid.Empty || consumerSecret == Guid.Empty)
            {
                return(Unauthorized());
            }

            var storeScope = _storeContext.ActiveStoreScopeConfiguration;
            var instantCheckoutSettings = _settingService.LoadSetting <InstantCheckoutSettings>(storeScope);

            if (consumerKey != instantCheckoutSettings.ConsumerKey &&
                consumerSecret != instantCheckoutSettings.ConsumerSecret)
            {
                return(Unauthorized());
            }

            if (parameters.Limit < Configurations.MIN_LIMIT || parameters.Limit > Configurations.MAX_LIMIT)
            {
                return(Error(HttpStatusCode.BadRequest, "limit", "invalid limit parameter"));
            }

            if (parameters.Page < Configurations.DEFAULT_PAGE_VALUE)
            {
                return(Error(HttpStatusCode.BadRequest, "page", "invalid page parameter"));
            }

            var allProducts = _productApiService.GetProducts(parameters.Ids, parameters.CreatedAtMin, parameters.CreatedAtMax, parameters.UpdatedAtMin,
                                                             parameters.UpdatedAtMax, parameters.Limit, parameters.Page, parameters.SinceId,
                                                             parameters.PublishedStatus)
                              .Where(p => _storeMappingService.Authorize(p));

            IList <ProductDto> productsAsDtos = allProducts.Select(product => _dtoHelper.PrepareProductDTO(product)).ToList();

            var productsRootObject = new ProductsRootObjectDto()
            {
                Products = productsAsDtos
            };

            var json = _jsonFieldsSerializer.Serialize(productsRootObject, parameters.Fields);

            return(new RawJsonActionResult(json));
        }
Exemplo n.º 5
0
        public IActionResult GetProducts(ProductsParametersModel parameters)
        {
            if (parameters.Limit < Configurations.MinLimit || parameters.Limit > Configurations.MaxLimit)
            {
                return(Error(HttpStatusCode.BadRequest, "limit", "invalid limit parameter"));
            }

            if (parameters.Page < Configurations.DefaultPageValue)
            {
                return(Error(HttpStatusCode.BadRequest, "page", "invalid page parameter"));
            }

            var allProducts = _productApiService.GetProducts(out IList <SpecificationItemDto> alreadyFilteredItems,
                                                             out IList <SpecificationItemDto> notFilteredItems,
                                                             parameters.Ids, parameters.CreatedAtMin, parameters.CreatedAtMax, parameters.UpdatedAtMin,
                                                             parameters.UpdatedAtMax, parameters.Limit, parameters.Page, parameters.SinceId, parameters.CategoryId,
                                                             parameters.VendorName, parameters.PublishedStatus, parameters.AlreadyFilteredSpecOptionIds)
                              .Where(p => _storeMappingService.Authorize(p));

            IList <ProductDto> productsAsDtos = allProducts.Select(product =>
            {
                return(_dtoHelper.PrepareProductDTO(product));
            }).ToList();

            var productsRootObject = new ProductsRootObjectDto()
            {
                Products             = productsAsDtos,
                AlreadyFilteredItems = alreadyFilteredItems,
                NotFilteredItems     = notFilteredItems,
                Page     = parameters.Page,
                PageSize = parameters.Limit
            };

            var json = _jsonFieldsSerializer.Serialize(productsRootObject, parameters.Fields);

            return(new RawJsonActionResult(json));
        }
Exemplo n.º 6
0
 public IActionResult GetNewProducts(ProductsParametersModel parameters)
 {
     parameters.Ids = _productService.SearchProducts(
         markedAsNewOnly: true).Select(product => product.Id).ToList();
     return(GetProducts(parameters));
 }