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)); }
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)); }
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)); }
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); } }
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); }