/// <summary>
        /// Provides a list of Contract Distributor as a result of filtering the DB on specific filters
        /// </summary>
        /// <returns></returns>
        public List <ContractDistributor> FilteredItems()
        {
            ResultManager.IsCorrect = false;
            List <ContractDistributor> items = new List <ContractDistributor>();

            try
            {
                // implementing filtering pipeline
                var contractDistributorList = RetrieveAllToFilter();
                ContractDistributorFilteringPipeline pipeline = new ContractDistributorFilteringPipeline();

                if (Identity.CurrentUser.IsInRole(UserRole.EmployeeManagerOperation + "," + UserRole.EmployeeManagerView + "," + UserRole.EmployeeRTVOperation + "," + UserRole.EmployeeRTVView))
                {
                    EmployeeController employee = new EmployeeController(Configurations);
                    List <string>      zones    = employee.GetBayerEmployeeZones(CurrentUser.Id);
                    pipeline.Register(new RegisteredZoneNameListFilter(zones));
                    //pipeline.Register(new AssignedGRVFilter(CurrentUser.Id));
                }

                items = pipeline.Process(contractDistributorList).ToList();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "Index.311: Error while retrieving ContractDistributor list from DB: " + ex.Message);
            }
            return(items);
        }
Example #2
0
        public ActionResult FilterByDistributorId()
        {
            // get the ContractDistributor list
            var contractDistributorList = controller.RetrieveAllToFilter();

            // Construct the pipeline
            ContractDistributorFilteringPipeline contractDistributorPipelline = new ContractDistributorFilteringPipeline();

            // Register the filters to be executed
            contractDistributorPipelline.Register(new DistributorIdFilter(1));

            // Start pipeline processing
            var filteredcontractDistributors = contractDistributorPipelline.Process(contractDistributorList);

            // At this point fetch data from DB
            var listedContractDistributors = filteredcontractDistributors.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 = listedContractDistributors.Select(x => new ContractDistributor
            {
                Id  = x.Id,
                IdB = x.IdB,
                ContractDistributorStatusId = x.ContractDistributorStatusId,
                RegisteredZoneName          = x.RegisteredZoneName,
                RegisteredRegionName        = x.RegisteredRegionName
            });

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

            return(Content(JsonResult));
        }
        /// <summary>
        /// Provides a list of Contract Distributor as a result of filtering the DB on specific filters
        /// </summary>
        /// <returns></returns>
        public List <ContractDistributor> FilteredItems()
        {
            ResultManager.IsCorrect = false;
            List <ContractDistributor> items = new List <ContractDistributor>();

            try
            {
                // implementing filtering pipeline
                var contractDistributorList = RetrieveAllToFilter();
                ContractDistributorFilteringPipeline pipeline = new ContractDistributorFilteringPipeline();
                EmployeeController employee = new EmployeeController(Configurations);
                int distributorId           = employee.GetDistributorId(CurrentUser.Id);
                pipeline.Register(new DistributorIdFilter(distributorId));
                items = pipeline.Process(contractDistributorList).ToList();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "Index.311: Error while retrieving ContractDistributor list from DB: " + ex.Message);
            }
            return(items);
        }