GetAllViewModelsFilteredAsync(FilterBindingModel model)
        {
            // TODO: Refactor repository architechture efficient data retrieving
            ICollection <Product> products = Repository.All().ToList <Product>();

            // Filter design pattern
            if (model.CategoryIdFilter != null)
            {
                CategoryCriteria categoryCriteria
                         = new CategoryCriteria(model.CategoryIdFilter);
                products = categoryCriteria.MeetCriteria(products);
            }

            if (model.BrandIdFilter != null)
            {
                BrandCriteria brandCriteria = new BrandCriteria(model.BrandIdFilter);
                products = brandCriteria.MeetCriteria(products);
            }

            if (model.SearchFilter != null)
            {
                SearchCriteria searchCriteria =
                    new SearchCriteria(model.SearchFilter);
                products = searchCriteria.MeetCriteria(products);
            }

            return(this.Mapper.Map <ICollection <ProductViewModel> >(products));
        }
        public void TestReadJson_InFilter()
        {
            var list = new List <long> {
                1L, 2L
            };
            var filterBindingModel = new FilterBindingModel
            {
                Comparison = ComparisonType.In.Value,
                Property   = "Id",
                Value      = list
            };
            var json = JsonConvert.SerializeObject(filterBindingModel);

            var testObject = JsonConvert.DeserializeObject <FilterBindingModel>(json, new FilterBindingModelConverter());

            Assert.AreEqual(filterBindingModel.Comparison, testObject.Comparison);
            Assert.AreEqual(filterBindingModel.Property, testObject.Property);

            var testList = testObject.Value;

            Assert.IsInstanceOfType(testList, typeof(List <long>));
            var testIntList = (List <long>)testList;

            CollectionAssert.AreEqual(list, testIntList);
        }
        public void TestReadJson_ArrayOfFilters()
        {
            var filterBindingModel1 = new FilterBindingModel
            {
                Comparison = ComparisonType.Equal.Value,
                Property   = "Id",
                Value      = 1L
            };
            var filterBindingModel2 = new FilterBindingModel
            {
                Comparison = ComparisonType.Like.Value,
                Property   = "Name",
                Value      = 2L
            };
            var list = new List <FilterBindingModel> {
                filterBindingModel1, filterBindingModel2
            };
            var json = JsonConvert.SerializeObject(list);

            var testObject = JsonConvert.DeserializeObject <List <FilterBindingModel> >(json, new FilterBindingModelConverter());

            Assert.AreEqual(2, testObject.Count);
            Assert.IsNotNull(testObject.Select(x => x.Property == filterBindingModel1.Property).FirstOrDefault());
            Assert.IsNotNull(testObject.Select(x => x.Property == filterBindingModel2.Property).FirstOrDefault());
        }
        public IEnumerable <ActivityBindingModel> GetActivities(FilterBindingModel model)
        {
            var filter = _automapper.Map <Filter>(model);

            return(_repository.GetAll(filter)
                   // map list of Activities to ActivityBindingModel list
                   .Select(activity => _automapper.Map <ActivityBindingModel>(activity)));
        }
示例#5
0
        public async Task <IViewComponentResult> InvokeAsync()
        {
            var model = new FilterBindingModel();
            List <SelectListItem> brands = _brandService.AllSelectListItems();

            model.Items = brands;

            return(View(model));
        }
        public void TestToString_AllValuesNull()
        {
            var model = new FilterBindingModel
            {
                Comparison = null,
                Property   = null,
                Value      = null
            };

            Assert.IsNotNull(model.ToString());
        }
        public void TestToString_AllValuesInitialized()
        {
            var model = new FilterBindingModel
            {
                Comparison = ComparisonType.Equal.Value,
                Property   = "S",
                Value      = "hello"
            };

            Assert.IsNotNull(model.ToString());
        }
        public void TestReadJson_SimpleFilter()
        {
            var filterBindingModel = new FilterBindingModel
            {
                Comparison = ComparisonType.Equal.Value,
                Property   = "Id",
                Value      = 1L
            };
            var json = JsonConvert.SerializeObject(filterBindingModel);

            var testObject = JsonConvert.DeserializeObject <FilterBindingModel>(json, new FilterBindingModelConverter());

            Assert.AreEqual(filterBindingModel.Comparison, testObject.Comparison);
            Assert.AreEqual(filterBindingModel.Property, testObject.Property);
            Assert.AreEqual(filterBindingModel.Value, testObject.Value);
        }
        public IActionResult Index(FilterBindingModel model)
        {
            IEnumerable <ProductViewModel> products;

            // TODO: Encapsulate business logic in service layer
            if (model.CategoryIdFilter != null || model.BrandIdFilter != null ||
                model.SearchFilter != null)
            {
                products = _productService.GetAllViewModelsFilteredAsync(model);
            }
            else
            {
                products = _productService.GetAllViewModelsAsync();
            }

            return(View(products));
        }
        public void TestToIFilter()
        {
            var model = new FilterBindingModel
            {
                Comparison = ComparisonType.Equal.Value,
                Property   = "S",
                Value      = "hello"
            };
            var iFilter = model.ToIFilter();

            Assert.IsInstanceOfType(iFilter, typeof(SimpleFilter));
            var simpleFilter = (SimpleFilter)iFilter;

            Assert.AreEqual(model.Comparison, simpleFilter.Comparison);
            Assert.AreEqual(model.Property, simpleFilter.Property);
            Assert.AreEqual(model.Value, simpleFilter.Value);
        }
示例#11
0
 public IEnumerable <ActivityBindingModel> Get([FromUri] FilterBindingModel filter)
 {
     return(_processor.GetActivities(filter));
 }