Example #1
0
        private IMongoQuery QueryFilters(FiltersCategories filters)
        {
            if (filters == null)
            {
                return(Query.And(Query.Empty));
            }

            var list = new List <IMongoQuery>();

            if (filters.HasValidProducts)
            {
                list.Add(Query <Category> .In(x => x.Id, BlProducts.GetProducts(new FiltersProducts {
                    Status = ProductStatus.Valid
                }).Select(x => x.CategoryId).Distinct()));
            }

            if (!string.IsNullOrEmpty(filters.Id))
            {
                list.Add(Query <Category> .EQ(x => x.Id, filters.Id));
            }

            if (!string.IsNullOrEmpty(filters.Name))
            {
                list.Add(Query <Category> .Matches(x => x.Name, $"(?i).*{string.Join(".*", Regex.Split(filters.Name, @"\s+").Select(x => Regex.Escape(x)))}.*"));
            }

            if (!list.Any())
            {
                return(Query.And(Query.Empty));
            }

            return(Query.And(list));
        }
Example #2
0
        public IEnumerable <ProductCategoryOutput> GetCategories(FiltersCategories filters)
        {
            var result = List(filters)?.Select(x => new ProductCategoryOutput {
                Id = x.Id, Name = x.Name, ImageUrl = GetCategoryimage(x.Id), QuantityProductSold = GetQuantitySoldItem(x.Id), Products = BlProducts.GetProducts(new FiltersProducts {
                    Status = ProductStatus.Valid
                })?.Count() ?? 0
            });

            if (filters?.MinItems.HasValue ?? false && filters.MinItems.Value > 0)
            {
                result = result.Where(x => x.Products >= filters.MinItems.Value);
            }

            if (filters?.MinSoldItems.HasValue ?? false && filters.MinSoldItems.Value > 0)
            {
                result = result.Where(x => x.QuantityProductSold >= filters.MinSoldItems.Value);
            }

            return(result);
        }
Example #3
0
 public IEnumerable <Category> List(FiltersCategories filters) => Collection.Find(QueryFilters(filters));
 public IActionResult Categories([FromBody] FiltersCategories filters) => Ok(_blCategoriesList.GetCategories(filters));