Пример #1
0
        public static IQueryable <Distributor> RetrieveDistributorFilteredByZones(List <string> zones)
        {
            UnitOfWork Repository = new UnitOfWork(new PSDContext());
            IQueryable <Distributor>     itemsToFilter = Repository.Distributors.GetAllToFilter();
            DistributorFilteringPipeline pipeline      = new DistributorFilteringPipeline();

            pipeline.Register(new ZoneListFilter(zones));

            return(pipeline.Process(itemsToFilter));
        }
Пример #2
0
        public ActionResult FilterByZones()
        {
            // get the Distributor list
            var distributorList = controller.RetrieveAllToFilter();

            // Construct the pipeline
            DistributorFilteringPipeline distributorPipeline = new DistributorFilteringPipeline();

            // Register the filters to be executed
            List <string> zones = new List <string> {
                "40R"
            };

            distributorPipeline.Register(new ZoneListFilter(null));

            // Start pipeline processing
            var filteredDistributors = distributorPipeline.Process(distributorList);

            // At this point fetch data from DB
            var listedDistributors = filteredDistributors.ToList();


            // just sending the result for testing purposes, cannot serialize the entire object because of the circular references present from EF.
            // (this is the same behavior with previous approach)

            var result = listedDistributors.Select(x => new Distributor
            {
                Id             = x.Id,
                AddressId      = x.AddressId,
                BusinessName   = x.BusinessName,
                CommercialName = x.CommercialName,
                IdB            = x.IdB,
                WebSite        = x.WebSite,
            });

            string JsonResult = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings {
                PreserveReferencesHandling = PreserveReferencesHandling.Objects
            });

            return(Content(JsonResult));
        }