/// <summary>
        /// GetProductByCategory
        /// </summary>
        /// <param name="request">GetProductByCategoryRequest</param>
        /// <returns>GetProductAllResponse</returns>
        public async Task <GetProductAllResponse> GetProductByCategory(GetProductByCategoryRequest request)
        {
            var response = new GetProductAllResponse();

            try
            {
                var param = new GetProductByCategoryParameter()
                {
                    IDCategory = request.IDCategory,
                    StartPage  = request.StartPage
                };

                var result = _dataAccess.GetListProductByCategory(param);
                if (result != null)
                {
                    response.ListProductAll = MapList <GET_PRODUCT_BY_CATEGORY_Result, GetProductAllDto>(result.ToList());
                    response.Success        = true;
                }
            }
            catch (Exception ex)
            {
                response.Success = false;
            }
            return(await Task.FromResult(response));
        }
        public static Query CreateQueryFor(GetProductByCategoryRequest request)
        {
            Query productQuery      = new Query();
            Query weightQuery       = new Query();
            Query manufacturerQuery = new Query();

            productQuery.Add(Criterion.Create <Catalog>(p => p.RetailerId, request.RetailerId, CriteriaOperator.Equal));
            productQuery.Add(Criterion.Create <Catalog>(p => p.Product.Category.Id, request.CategoryId, CriteriaOperator.Equal, ConditionOperator.And));

            weightQuery.QueryOperator = QueryOperator.And;
            foreach (int id in request.WeightIds)
            {
                weightQuery.Add(Criterion.Create <Catalog>(p => p.Product.Weight.Id, id, CriteriaOperator.Equal, ConditionOperator.Or));
            }

            manufacturerQuery.QueryOperator = QueryOperator.And;
            foreach (int id in request.ManufacturerIds)
            {
                manufacturerQuery.Add(Criterion.Create <Catalog>(p => p.Product.Manufacturer.Id, id, CriteriaOperator.Equal, ConditionOperator.Or));
            }

            if (request.WeightIds.Count() > 0)
            {
                productQuery.AddSubQuery(weightQuery);
            }

            if (request.ManufacturerIds.Count() > 0)
            {
                productQuery.AddSubQuery(manufacturerQuery);
            }

            return(productQuery);
        }
        public ActionResult GetProductsByCategory(int categoryId)
        {
            GetProductByCategoryRequest request = GenerateInitialProductSearchRequestFrom(categoryId);

            GetProductByCategoryResponse response = _productCatalogService.GetProductsByCategory(request);

            ProductSearchResultView productSearchResultView = GetProductSearchResultViewFrom(response);

            return(View("ProductSearchResultView", productSearchResultView));
        }
Esempio n. 4
0
        public GetProductByCategoryResponse GetProductsByCategory(GetProductByCategoryRequest request)
        {
            GetProductByCategoryResponse response;
            Query productQuery = ProductSearchRequestQueryGenerator.CreateQueryFor(request);

            IEnumerable <Catalog> productMatchingRefinement = GetAllProductsMatchingQueryAndSort(request, productQuery);

            response = productMatchingRefinement.CreateProductSearchResultFrom(request);

            response.SelectedCategoryName = _categoryRepository.FindBy(request.CategoryId).Name;

            return(response);
        }
        private static GetProductByCategoryRequest GenerateInitialProductSearchRequestFrom
            (int categoryId)
        {
            GetProductByCategoryRequest productSearchRequest = new GetProductByCategoryRequest();

            productSearchRequest.NumberOfResultsPerPage = 6;
            productSearchRequest.CategoryId             = categoryId;
            productSearchRequest.Index  = 1;
            productSearchRequest.SortBy = ProductsSortBy.PriceHighToLow;

            //TODO::
            productSearchRequest.RetailerId = 1;

            return(productSearchRequest);
        }
Esempio n. 6
0
        private IEnumerable <Catalog> GetAllProductsMatchingQueryAndSort(
            GetProductByCategoryRequest request, Query productQuery)
        {
            IEnumerable <Catalog> productsMatchingRefinement = _catalogRepository.FindBy(productQuery);

            switch (request.SortBy)
            {
            case ProductsSortBy.PriceLowToHigh:
                productsMatchingRefinement = productsMatchingRefinement
                                             .OrderBy(p => p.SellingPrice);
                break;

            case ProductsSortBy.PriceHighToLow:
                productsMatchingRefinement = productsMatchingRefinement
                                             .OrderByDescending(p => p.SellingPrice);
                break;
            }
            return(productsMatchingRefinement);
        }
Esempio n. 7
0
        public static GetProductByCategoryResponse CreateProductSearchResultFrom(
            this IEnumerable <Catalog> productMatchingRefinements, GetProductByCategoryRequest request)
        {
            GetProductByCategoryResponse productSearchResultView = new GetProductByCategoryResponse();

            IEnumerable <Product> productsFound = productMatchingRefinements.Select(p => p.Product).Distinct();

            productSearchResultView.SelectedCategory      = request.CategoryId;
            productSearchResultView.NumberOfProductsFound = productsFound.Count();
            productSearchResultView.TotalNumberOfPages    = NoOfResultPagesGiven(
                request.NumberOfResultsPerPage, productSearchResultView.NumberOfProductsFound);

            productSearchResultView.RefinementGroups = GenerateAvailableProductRefinementsFrom(productsFound);

            productSearchResultView.Products = CropProductListToSatisfyGivenIndex(
                request.Index, request.NumberOfResultsPerPage, productMatchingRefinements);


            return(productSearchResultView);
        }
        public JsonResult GetProductsByAjax(GetProductByCategoryRequest request)
        {
            GetProductByCategoryResponse response = new GetProductByCategoryResponse();

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
        public IHttpActionResult GetProductByCategory(GetProductByCategoryRequest RequestData)
        {
            var result = _businessLogic.GetProductByCategory(RequestData);

            return(new ActionResult <GetProductAllResponse>(result.Result, Request));
        }