Exemple #1
0
        public ActionResult Shops(int id, ProductsFilterParams filter = null)
        {
            if (filter == null)
            {
                filter = new ProductsFilterParams();
            }

            var result = new ProductShopsPageViewModel();

            var product = _productService.GetProduct(id);

            if (product == null)
            {
                return(HttpNotFound());
            }

            result.Filter        = filter;
            result.Product       = product;
            result.Manufacturers = product.Category.Product.Select(q => q.Manufacturer).Distinct();

            var shops = product.ShopProduct.Distinct().Sort(filter.SortOrder,
                                                            filter.SortOptions);

            result.Shops = shops.ToPagedList(filter.Page, filter.PageSize);

            return(View(result));
        }
Exemple #2
0
        public async Task <IActionResult> GetProducts([FromQuery] ProductsFilterParams filterParams)
        {
            string userIdToFilter = (User.IsInRole("Admin") || User.IsInRole("Manager")) ? null : (await _userManager.GetUserAsync(User)).Id;

            Expression <Func <Product, bool> > filters = filterParams.ProductsFiltersAsOneExpression(userIdToFilter);

            OrderHeader orderHeader = new OrderHeader(
                filterParams.ByProductName, filterParams.ByProductNameDesc,
                filterParams.ByCategoryName, filterParams.ByCategoryNameDesc,
                filterParams.ByExpDate, filterParams.ByExpDateDesc);

            PagedList <Product> paginatedProducts = await _unitOfWork.ProductRepository.GetPaginated(filters,
                                                                                                     orderHeader.ReturnOrderedQueryable(),
                                                                                                     filterParams, x => x.ExpirationDates);

            Response.AddPagination(paginatedProducts.CurrentPage, paginatedProducts.PageSize, paginatedProducts.TotalCount, paginatedProducts.TotalPages);

            Response.AddProductsFilters(filterParams.Barecode, filterParams.ProductName, filterParams.CategoriesIds);

            Response.AddOrder(filterParams.ByProductName, filterParams.ByProductNameDesc, filterParams.ByCategoryName, filterParams.ByCategoryNameDesc, filterParams.ByExpDate, filterParams.ByExpDateDesc);

            var productsToReturn = _mapper.Map <IEnumerable <ProductVM> >(paginatedProducts.Items);

            if (productsToReturn == null)
            {
                return(NotFound());
            }

            return(Ok(productsToReturn));
        }
Exemple #3
0
        public ActionResult Shops(int id, ProductsFilterParams filter = null)
        {
            var product = _productRepository.Read(id);

            if (product == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Filter            = filter;
            ViewBag.IsIssetInBookmark = _productBookmarkRepository.IsIsset(WebSecurity.CurrentUserId, product.Id);
            return(View(product));
        }
Exemple #4
0
        public ActionResult List(ProductsFilterParams filter)
        {
            if (filter == null)
            {
                filter = new ProductsFilterParams();
            }
            var products = _productRepository.ReadBySecondCategory(filter.SecondCategoryId);

            products = _productRepository.Sort(products, filter.SortOrder, filter.SortOptions, filter.SecondCategoryId, filter.ThirdCategoryId);
            ViewBag.SecondCategory = _catalogSecondCategoryRepository.Read(filter.SecondCategoryId);
            ViewBag.Filter         = filter;

            return(View(products.ToPagedList(filter.Page, filter.PageSize)));
        }
        public async Task <ApiResponse> Get([FromQuery] ProductsFilterParams arg)
        {
            try
            {
                var data = await productServiceService.GetAllAsync(arg);

                return(new ApiResponse(data, HttpStatusCode.OK.ToInt()));
            }
            catch (CustomException ex)
            {
                throw new ApiException(ex, ex.StatusCode);
            }
            catch (Exception ex)
            {
                throw new ApiException(ex);
            }
        }
Exemple #6
0
        public ActionResult Category(ProductsFilterParams filter)
        {
            if (filter == null)
            {
                filter = new ProductsFilterParams();
            }
            var result = new CategoryOverviewViewModel();

            var products = _productService.GetProducts(filter.SecondCategoryId);

            result.Manufacturers = products.Select(q => q.Manufacturer).Distinct().OrderBy(q => q.Name);
            products             = products.Sort(filter.SortOrder, filter.SortOptions, filter.SecondCategoryId, filter.ThirdCategoryId);

            result.Products        = products.ToPagedList(filter.Page, filter.PageSize);
            result.Filter          = filter;
            result.CurrentCategory = _productService.GetCategory(filter.SecondCategoryId);


            return(View(result));
        }
        public static Expression <Func <Product, bool> > ProductsFiltersAsOneExpression(this ProductsFilterParams filterParams, string userIdToFilter)
        {
            Expression <Func <Product, bool> > exprBase = PredicateBuilder.New <Product>(true);

            if (!String.IsNullOrEmpty(filterParams.Barecode))
            {
                exprBase = exprBase.And(p => p.Barecode.Contains(filterParams.Barecode));
            }

            if (!String.IsNullOrEmpty(filterParams.ProductName))
            {
                exprBase = exprBase.And(p => EF.Functions.Like(p.Name, "%" + filterParams.ProductName + "%"));
            }

            if (filterParams.CategoriesIds != null)
            {
                Expression <Func <Product, bool> > innerBase = PredicateBuilder.New <Product>(false);
                foreach (var categoryId in filterParams.CategoriesIds)
                {
                    innerBase = innerBase.Or(p => p.CategoryId == categoryId);
                }
                exprBase = exprBase.And(innerBase);
            }

            if (userIdToFilter != null)
            {
                exprBase = exprBase.And(p => p.Category.CategoryUsers.Any(u => u.UserId == userIdToFilter));
            }

            return(exprBase);
        }