Ejemplo n.º 1
0
        private DetachedCriteria GetSearchCriteriaFromListSearch(ProductListSearchCriteria listSearchCriteria, bool withTotal)
        {
            var searchCriteria = DetachedCriteria.For(typeof(Product), "p")
                                 .SetFetchMode("Prices", FetchMode.Join)
                                 .SetFetchMode("Categories", FetchMode.Join)
                                 .SetResultTransformer(new DistinctRootEntityResultTransformer());

            if (!listSearchCriteria.ShowDeletedProducts)
            {
                searchCriteria.Add(Restrictions.Eq("IsDeleted", false)); // default to showing not deleted products
            }

            if (!withTotal)
            {
                // add ordering by Property
                var sortBy = string.IsNullOrEmpty(listSearchCriteria.SortBy) ? "Name" : listSearchCriteria.SortBy;
                searchCriteria.AddOrder(listSearchCriteria.Ascending
                                            ? Order.Asc(sortBy)
                                            : Order.Desc(sortBy));
                searchCriteria.SetFirstResult(listSearchCriteria.CurrentPage * listSearchCriteria.ResultsPerPage)
                .SetMaxResults(listSearchCriteria.ResultsPerPage);
            }

            return(searchCriteria);
        }
Ejemplo n.º 2
0
        public Tuple <IEnumerable <Product>, int> List(ProductListSearchCriteria listSearchCriteria)
        {
            var searchCriteria = GetSearchCriteriaFromListSearch(listSearchCriteria, false);
            var productList    = repository.Search(searchCriteria);
            var countCriteria  = GetSearchCriteriaFromListSearch(listSearchCriteria, true);
            var totalProducts  = repository.Count(countCriteria);
            var result         = new Tuple <IEnumerable <Product>, int>(productList, totalProducts);

            return(result);
        }
Ejemplo n.º 3
0
        public Tuple<IEnumerable<Product>, int> List(ProductListSearchCriteria listSearchCriteria)
        {
            var searchCriteria = GetSearchCriteriaFromListSearch(listSearchCriteria, false);
            var productList = repository.Search(searchCriteria);
            var countCriteria = GetSearchCriteriaFromListSearch(listSearchCriteria, true);
            var totalProducts = repository.Count(countCriteria);
            var result = new Tuple<IEnumerable<Product>, int>(productList, totalProducts);

            return result;
        }
Ejemplo n.º 4
0
        public JsonList <ProductModel> Search(
            [FromUri] ProductListSearchCriteria searchCriteria,
            [FromUri] PaginationOptions options)
        {
            var products = _prodService.Search(searchCriteria, options);

            return(new JsonList <ProductModel>()
            {
                Data = products.ToModelList <Product, ProductModel>(),
                TotalItems = products.TotalCount
            });
        }
Ejemplo n.º 5
0
        //[HttpGet]
        //[TransactionFilter(TransactionFilterType.ReadUncommitted)]
        //public ActionResult _List(int page, int perPage, string orderBy, bool ascending)
        //{
        //    Tuple<IEnumerable<Product>, int> result = GetProductList(page, orderBy, ascending, perPage);
        //    var productList = new ProductListItem().FromEntityList(result.Item1);
        //    return View(new GridModel{Data = productList, Total = result.Item2});
        //}

        private Tuple <IEnumerable <Product>, int> GetProductList(int page, string orderBy, string ascending, int perPage)
        {
            var searchCriteria = new ProductListSearchCriteria
            {
                CurrentPage    = page - 1,
                Ascending      = ascending.ToUpper() == "TRUE",
                SortBy         = orderBy,
                ResultsPerPage = perPage
            };

            return(productService.List(searchCriteria));
        }
Ejemplo n.º 6
0
        public ActionResult List(ProductListSearchCriteria searchCriteria)
        {
            ProductListQueryBuilder queryBuilder = new ProductListQueryBuilder(searchCriteria);
            var      result   = queryBuilder.Execute(daoTemplate.Session);
            Category category = null;

            if (searchCriteria.CategoryId != null)
            {
                category = daoTemplate.FindByID <Category>(searchCriteria.CategoryId);
            }
            return(View(new ProductListViewModel()
            {
                Category = category, Results = result, IsNew = searchCriteria.IsNew
            }));
        }
Ejemplo n.º 7
0
        public IPagedList <Product> Search(ProductListSearchCriteria searchCriteria, PaginationOptions options)
        {
            var query = _productRepo.TableNoTracking.IncludeTable(x => x.ProductCategory);

            // Filter
            if (!string.IsNullOrEmpty(searchCriteria.Sku))
            {
                query = query.Where(x => x.Sku.Contains(searchCriteria.Sku));
            }
            if (!string.IsNullOrEmpty(searchCriteria.Name))
            {
                query = query.Where(x => x.Name.Contains(searchCriteria.Name));
            }
            if (searchCriteria.CategoryId > 0)
            {
                query = query.Where(x => x.CategoryId == searchCriteria.CategoryId);
            }
            if (searchCriteria.ActiveOnly)
            {
                query = query.Where(x => x.IsActive);
            }

            // Sort
            if (string.IsNullOrEmpty(options.Sort))
            {
                query = query.OrderBy(x => x.Sku);
            }
            else
            {
                // HACK: support nested sort
                if (options.Sort.Equals("categoryName", StringComparison.OrdinalIgnoreCase))
                {
                    options.Sort = "ProductCategory.Name";
                }

                query = query.SortBy(options.SortExpression);
            }

            return(new PagedList <Product>(query, options.PageIndex, options.PageSize));
        }
Ejemplo n.º 8
0
        private DetachedCriteria GetSearchCriteriaFromListSearch(ProductListSearchCriteria listSearchCriteria, bool withTotal)
        {
            var searchCriteria = DetachedCriteria.For(typeof(Product), "p")
                                                 .SetFetchMode("Prices", FetchMode.Join)
                                                 .SetFetchMode("Categories", FetchMode.Join)
                                                 .SetResultTransformer(new DistinctRootEntityResultTransformer());

            if (!listSearchCriteria.ShowDeletedProducts)
            {
                searchCriteria.Add(Restrictions.Eq("IsDeleted", false)); // default to showing not deleted products
            }

            if (!withTotal)
            {
                // add ordering by Property
                var sortBy = string.IsNullOrEmpty(listSearchCriteria.SortBy) ? "Name" : listSearchCriteria.SortBy;
                searchCriteria.AddOrder(listSearchCriteria.Ascending
                                            ? Order.Asc(sortBy)
                                            : Order.Desc(sortBy));
                searchCriteria.SetFirstResult(listSearchCriteria.CurrentPage*listSearchCriteria.ResultsPerPage)
                    .SetMaxResults(listSearchCriteria.ResultsPerPage);
            }

            return searchCriteria;
        }
Ejemplo n.º 9
0
 //[HttpGet]
 //[TransactionFilter(TransactionFilterType.ReadUncommitted)]
 //public ActionResult _List(int page, int perPage, string orderBy, bool ascending)
 //{
 //    Tuple<IEnumerable<Product>, int> result = GetProductList(page, orderBy, ascending, perPage);
 //    var productList = new ProductListItem().FromEntityList(result.Item1);
 //    return View(new GridModel{Data = productList, Total = result.Item2});
 //}
 private Tuple<IEnumerable<Product>, int> GetProductList(int page, string orderBy, string ascending, int perPage)
 {
     var searchCriteria = new ProductListSearchCriteria
                              {
                                  CurrentPage = page - 1,
                                  Ascending = ascending.ToUpper() == "TRUE",
                                  SortBy = orderBy,
                                  ResultsPerPage = perPage
                              };
     return productService.List(searchCriteria);
 }