Пример #1
0
        public ActionResult FilterProducts(int?minPrix, int?maxPrix, string searchTerm, int?catId, int?sortBy)
        {
            FilterProductViewModel model = new FilterProductViewModel();

            model.Produitts = ProductService.Instance.SearchProducts(minPrix, maxPrix, searchTerm, catId, sortBy);
            return(PartialView(model));
        }
Пример #2
0
        public async Task <List <ProductViewModel> > Find(FilterProductViewModel filter)
        {
            var response = await elasticClient.SearchAsync <ProductViewModel>(
                s => s.Index(defaultIndex).Query(q => q.Term(t => t.Name, filter.Name?.ToLower())));

            return(response.Documents.ToList());
        }
Пример #3
0
 public async Task <IActionResult> Search([FromQuery] FilterProductViewModel filter)
 {
     try
     {
         return(Ok(await search.Find(filter)));
     }
     catch (Exception ex)
     {
         logger.Error($"Product/Search::{ex.Message}::{ex.InnerException}::{ex.StackTrace}::{ex.Data}");
         return(StatusCode((int)HttpStatusCode.ExpectationFailed, ExceptionErrors.Extract(ex)));
     }
 }
Пример #4
0
        public async Task <IActionResult> Index([Bind] FilterProductTypeViewModel filter)
        {
            FilterProductViewModel filterProductViewModel = new FilterProductViewModel
            {
                Products    = await this._productService.Get(filter),
                Families    = await this._productService.GetAllTypes(ProductService.Type.Family),
                Subfamilies = await this._productService.GetAllTypes(ProductService.Type.Subfamily)
            };

            Uri defaultImage = this._documentService.LoadDefault();

            ViewData["DefaultImage"] = defaultImage.AbsoluteUri;
            return(View(filterProductViewModel));
        }
Пример #5
0
        public ActionResult FilterProducts(string searchTerm, decimal?minPrice, decimal?maxPrice, int?categoryId, byte?sortBy, int?pageNo)
        {
            var filterModel = new FilterProductViewModel();

            pageNo = pageNo.HasValue && pageNo.Value > 0 ? pageNo.Value : 1;
            var pageSize = ConfigurationService.Instance.ShopPageSize(); //6

            filterModel.SortBy     = sortBy;
            filterModel.CategoryId = categoryId;
            filterModel.SearchTerm = searchTerm;

            filterModel.FilledCategories = CategoriesService.Instance.GetFilledCategories();

            filterModel.MaximumPrice = ProductService.Instance.GetMaxPrice();
            int totalRecords = ProductService.Instance.GetShopProductsCount(searchTerm, minPrice, maxPrice, categoryId, sortBy);

            filterModel.Products = ProductService.Instance.GetShopProducts(searchTerm, minPrice, maxPrice, categoryId, sortBy, pageNo.Value, pageSize);

            filterModel.Pager = new Pager(totalRecords, pageNo, pageSize);
            filterModel.User  = UserManager.FindById(User.Identity.GetUserId());

            return(PartialView(filterModel));
        }
Пример #6
0
 public FilterPage()
 {
     InitializeComponent();
     BindingContext = viewModel = new FilterProductViewModel();
 }
        public IActionResult GetFilterProducts([FromQuery] FilterProductViewModel filterProductViewModel)
        {
            string method    = " SELECT p.* FROM UserProduct p ";
            string innerJoin = " INNER JOIN Product g ON g.Id = p.ProductId " +
                               " INNER JOIN Model m ON m.Id = g.ModelId " +
                               " INNER JOIN Category c ON c.Id = m.CategoryId ";
            string whereClause = "";

            if (filterProductViewModel.Brand != null && filterProductViewModel.Brand.Count != 0)
            {
                innerJoin += " INNER JOIN dbo.Brand b " +
                             " ON b.Id = g.BrandId ";

                whereClause += " (b.Name='" + filterProductViewModel.Brand[0] + "' ";
                for (int i = 1; i <= filterProductViewModel.Brand.Count(); i++)
                {
                    whereClause += " OR b.Name='" + filterProductViewModel.Brand[i - 1] + "' ";
                }
                whereClause += ")";
            }
            if (filterProductViewModel.Rating != 0)
            {
                innerJoin += " LEFT JOIN Users_Ratings r " +
                             " ON r.UserId = p.UserId ";
                if (whereClause.Length != 0)
                {
                    whereClause += " AND ";
                }
                whereClause += " (r.Rating >= " + filterProductViewModel.Rating + " OR r.Rating is NULL)";
            }

            if (filterProductViewModel.Condition != null && filterProductViewModel.Condition.Count != 0)
            {
                if (whereClause.Length != 0)
                {
                    whereClause += " AND ";
                }
                //method = method + " where p.condition =";
                whereClause += " (";
                for (int i = 0; i < filterProductViewModel.Condition.Count(); i++)
                {
                    if (i != 0)
                    {
                        whereClause += " OR ";
                    }
                    whereClause += " p.condition=";
                    if (filterProductViewModel.Condition[i] == "New")
                    {
                        whereClause += " 0 ";
                    }
                    if (filterProductViewModel.Condition[i] == "Used with Box")
                    {
                        whereClause += " 1 ";
                    }
                    if (filterProductViewModel.Condition[i] == "Used without Box")
                    {
                        whereClause += " 2 ";
                    }
                }
                whereClause += " ) ";
            }

            if (filterProductViewModel.FromPrice != 0)
            {
                if (whereClause.Length != 0)
                {
                    whereClause += " AND ";
                }
                whereClause += "p.price >" + filterProductViewModel.FromPrice;
            }


            if (filterProductViewModel.ToPrice != 0)
            {
                if (whereClause.Length != 0)
                {
                    whereClause += " AND ";
                }
                whereClause += "p.price <" + filterProductViewModel.ToPrice;
            }

            if (whereClause.Length != 0)
            {
                whereClause += " AND ";
            }

            whereClause += " c.Id= " + filterProductViewModel.CategoryId;

            whereClause = " WHERE " + whereClause;

            method += innerJoin + whereClause;

            List <UserProduct> products = _FIlterRepository.GetFilterdProducts(method);

            return(Ok(products));
        }