Exemple #1
0
        public ActionResult LoadingPolicy(JQueryDataTablesModel jQueryDataTablesModel)
        {
            int totalRecordCount  = 0;
            int searchRecordCount = 0;

            var quotes = GenericFilterHelper <QuoteDto> .GetFilteredRecords(
                runTimeMethod : _rentalServiceFacade.GetPolicies,
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns(string.Empty),
                totalRecordCount : out totalRecordCount,
                searchRecordCount : out searchRecordCount,
                searchString : jQueryDataTablesModel.sSearch,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "ProposalNumber", "PersonalProperty", "Liability",
                "Premium", "EffectiveDate", "NoOffInstallments", "SendLandLord"
            });

            return(Json(new JQueryDataTablesResponse <QuoteDto>(
                            items: quotes,
                            totalRecords: totalRecordCount,
                            totalDisplayRecords: searchRecordCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
Exemple #2
0
        public ActionResult LoadPayment(JQueryDataTablesModel jQueryDataTablesModel)
        {
            SearchParameter param = new SearchParameter();

            param.SearchColumn = new List <string> {
                "Id", "TransactionId",
                "ResponseCode",
                "ApprovalCode",
                "CreationDate",
                "Amount"
            };
            param.SearchColumnValue = jQueryDataTablesModel.sSearch_;
            param.StartIndex        = jQueryDataTablesModel.iDisplayStart;
            param.PageSize          = jQueryDataTablesModel.iDisplayLength;
            List <Payment> sourceData = _rentalServiceFacade.GetPayments(param);

            var payments = GenericFilterHelper <MobileHome.Insure.Model.Payment> .GetFilteredRecords(
                sourceData : sourceData,
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns(string.Empty),
                totalRecordCount : param.TotalRecordCount,
                isSearch : param.IsFilterValue,
                searchString : jQueryDataTablesModel.sSearch,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "TransactionId", "ResponseCode", "ApprovalCode", "CreationDate", "Amount"
            });

            return(Json(new JQueryDataTablesResponse <MobileHome.Insure.Model.Payment>(
                            items: payments,
                            totalRecords: param.TotalRecordCount,
                            totalDisplayRecords: param.SearchedCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
Exemple #3
0
        private bool AlreadyFilteredByRowPermissions(ReadCommandInfo readCommand)
        {
            if (readCommand.Filters != null && readCommand.Filters.Length > 0)
            {
                int lastRowPermissionFilter = -1;
                for (int f = readCommand.Filters.Length - 1; f >= 0; f--)
                {
                    if (GenericFilterHelper.EqualsSimpleFilter(readCommand.Filters[f], RowPermissionsReadInfo.FilterName))
                    {
                        lastRowPermissionFilter = f;
                        break;
                    }
                }

                if (lastRowPermissionFilter >= 0)
                {
                    if (lastRowPermissionFilter == readCommand.Filters.Length - 1)
                    {
                        _logger.Trace(() => string.Format("(DataStructure:{0}) Last filter is '{1}', skipping RowPermissionsRead validation.",
                                                          readCommand.DataSource, RowPermissionsReadInfo.FilterName));
                        return(true);
                    }
                    else
                    {
                        _logger.Trace(() => string.Format("(DataStructure:{0}) Warning: Improve performance by moving filter '{1}' to last position, in order to skip RowPermissionsRead validation.",
                                                          readCommand.DataSource, RowPermissionsReadInfo.FilterName));
                    }
                }
            }

            return(false);
        }
Exemple #4
0
        public virtual async Task <GetManyResult <TEntity> > GetMany(SearchFilter <TEntity> filter)
        {
            IQueryable <TEntity> query = Db.Set <TEntity>();

            query = GenericFilterHelper <TEntity> .GenericFilter(query, filter?.Filters);

            return(await Search(query, filter));
        }
Exemple #5
0
        public virtual async Task <GetCountResult <TEntity> > Count(GetManyFilter <TEntity> filter)
        {
            IQueryable <TEntity> query = Db.Set <TEntity>();

            query = GenericFilterHelper <TEntity> .GenericFilter(query, filter?.Filters);

            return(await Counter(query));
        }
        private IEnumerable <T> TestFilter <T>(string property, string operation, object value, IEnumerable <T> items)
        {
            var genericFilter       = new FilterCriteria(property, operation, value);
            var genericFilterHelper = new GenericFilterHelper(new DomainObjectModelMock());
            var filterObject        = genericFilterHelper.ToFilterObjects(new FilterCriteria[] { genericFilter }).Single();
            var filterExpression    = genericFilterHelper.ToExpression <T>((IEnumerable <PropertyFilter>)filterObject.Parameter);
            var filteredItems       = items.AsQueryable().Where(filterExpression).ToList();

            return(filteredItems);
        }
        public JsonResult LoadParkSites(JQueryDataTablesModel jQueryDataTablesModel)
        {
            SearchParameter param = new SearchParameter();

            param.SearchColumn = new List <string> {
                "Id", "ParkId",
                "SiteNumber",
                "ParkName",
                "TenantFirstName",
                "TenantLastName",
                "CompanyName",
                "EffectiveDate",
                "ExpiryDate",
                "SiteRental",
                "Liability",
                "PersonalProperty",
                "Premium"
            };
            param.SearchColumnValue = jQueryDataTablesModel.sSearch_;
            param.StartIndex        = jQueryDataTablesModel.iDisplayStart;
            param.PageSize          = jQueryDataTablesModel.iDisplayLength;

            List <ParkSiteDto> result = _masterServiceFacade.GetParkSites(param);

            var parks = GenericFilterHelper <ParkSiteDto> .GetFilteredRecords(
                sourceData : result, //Updating bcos, on/off feature has to implement
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns(string.Empty),
                totalRecordCount : param.TotalRecordCount,
                isSearch : param.IsFilterValue,
                searchString : jQueryDataTablesModel.sSearch,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "ParkId",
                "SiteNumber",
                "ParkName",
                "TenantFirstName",
                "TenantLastName",
                "CompanyName",
                "EffectiveDate",
                "ExpiryDate",
                "SiteRental",
                "Liability",
                "PersonalProperty",
                "Premium"
            });

            return(Json(new JQueryDataTablesResponse <ParkSiteDto>(
                            items: parks,
                            totalRecords: param.TotalRecordCount,
                            totalDisplayRecords: param.SearchedCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
Exemple #8
0
        public ActionResult LoadPolicy(JQueryDataTablesModel jQueryDataTablesModel)
        {
            SearchParameter param = new SearchParameter();

            param.SearchColumn = new List <string> {
                "Id",
                "InsuredName",
                "InsuredAddress",
                "InsuredPhone",
                "InsuredEmail",
                "ProposalNumber",
                "PersonalProperty",
                "Liability",
                "Premium",
                "EffectiveDate",
                "NoOffInstallments",
                "SendLandLord"
            };
            param.SearchColumnValue = jQueryDataTablesModel.sSearch_;
            param.StartIndex        = jQueryDataTablesModel.iDisplayStart;
            param.PageSize          = jQueryDataTablesModel.iDisplayLength;
            List <QuoteDto> sourceData = _rentalServiceFacade.GetPolicies(param);
            var             quotes     = GenericFilterHelper <QuoteDto> .GetFilteredRecords(
                sourceData : sourceData,
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns(string.Empty),
                totalRecordCount : param.TotalRecordCount,
                isSearch : param.IsFilterValue,
                searchString : jQueryDataTablesModel.sSearch,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id",
                "InsuredName",
                "InsuredAddress",
                "InsuredPhone",
                "InsuredEmail",
                "ProposalNumber",
                "PersonalProperty",
                "Liability",
                "Premium",
                "EffectiveDate",
                "NoOffInstallments",
                "SendLandLord"
            });

            return(Json(new JQueryDataTablesResponse <QuoteDto>(
                            items: quotes,
                            totalRecords: param.TotalRecordCount,
                            totalDisplayRecords: param.SearchedCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
        private static void TestFilterByName(string expected, IEnumerable<C> items, string operation, object value)
        {
            var genericFilter = new FilterCriteria("Name", operation, value);
            Console.WriteLine("genericFilter: " + genericFilter.Property + " " + genericFilter.Operation + " " + genericFilter.Value);

            var genericFilterHelper = new GenericFilterHelper(new DomainObjectModelMock());
            var filterObject = genericFilterHelper.ToFilterObjects(new FilterCriteria[] { genericFilter }).Single();
            Console.WriteLine("filterObject.FilterType: " + filterObject.FilterType.FullName);
            var filterExpression = genericFilterHelper.ToExpression<C>((IEnumerable<PropertyFilter>)filterObject.Parameter);

            var filteredItems = items.AsQueryable().Where(filterExpression).ToList();
            Assert.AreEqual(expected, TestUtility.DumpSorted(filteredItems, item => item.Name ?? "<null>"), "Testing '" + operation + " " + value + "'.");
        }
        private static string TestFilterByName(IEnumerable <C> items, string operation, object value)
        {
            var genericFilter = new FilterCriteria("Name", operation, value);

            Console.WriteLine("genericFilter: " + genericFilter.Property + " " + genericFilter.Operation + " " + genericFilter.Value);

            var genericFilterHelper = new GenericFilterHelper(new DomainObjectModelMock(), new DataStructureReadParametersStub());
            var filterObject        = genericFilterHelper.ToFilterObjects(typeof(C).FullName, new FilterCriteria[] { genericFilter }).Single();

            Console.WriteLine("filterObject.FilterType: " + filterObject.FilterType.FullName);
            var filterExpression = genericFilterHelper.ToExpression <C>((IEnumerable <PropertyFilter>)filterObject.Parameter);

            var filteredItems = items.AsQueryable().Where(filterExpression).ToList();

            return(TestUtility.DumpSorted(filteredItems, item => item.Name ?? "<null>"));
        }
Exemple #11
0
        private static void TestFilterByName(string expected, IEnumerable <C> items, string operation, object value)
        {
            var genericFilter = new FilterCriteria("Name", operation, value);

            Console.WriteLine("genericFilter: " + genericFilter.Property + " " + genericFilter.Operation + " " + genericFilter.Value);

            var genericFilterHelper = new GenericFilterHelper(new DomainObjectModelMock());
            var filterObject        = genericFilterHelper.ToFilterObjects(new FilterCriteria[] { genericFilter }).Single();

            Console.WriteLine("filterObject.FilterType: " + filterObject.FilterType.FullName);
            var filterExpression = genericFilterHelper.ToExpression <C>((IEnumerable <PropertyFilter>)filterObject.Parameter);

            var filteredItems = items.AsQueryable().Where(filterExpression).ToList();

            Assert.AreEqual(expected, TestUtility.DumpSorted(filteredItems, item => item.Name ?? "<null>"), "Testing '" + operation + " " + value + "'.");
        }
        public void Sort()
        {
            var readCommand = new ReadCommandInfo
            {
                OrderByProperties = new[]
                {
                    new OrderByProperty {
                        Property = "Name", Descending = true
                    },
                    new OrderByProperty {
                        Property = "Size", Descending = false
                    },
                }
            };

            IQueryable <Entity2> query = new[]
            {
                new Entity2 {
                    Name = "b", Size = 2, Ignore = 1
                },
                new Entity2 {
                    Name = "b", Size = 2, Ignore = 2
                },
                new Entity2 {
                    Name = "b", Size = 3, Ignore = 3
                },
                new Entity2 {
                    Name = "b", Size = 1, Ignore = 4
                },
                new Entity2 {
                    Name = "a", Size = 1, Ignore = 5
                },
                new Entity2 {
                    Name = "c", Size = 3, Ignore = 6
                }
            }.AsQueryable();

            query = query.OrderBy(item => item.Ignore); // SortAndPaginate should ignore previous ordering, not append to it.

            var result = GenericFilterHelper.SortAndPaginate(query, readCommand);

            Console.WriteLine(result.ToString());
            Assert.AreEqual(
                "c3, b1, b2, b2, b3, a1",
                TestUtility.Dump(result, item => item.Name + item.Size));
        }
        public JsonResult LoadPark(JQueryDataTablesModel jQueryDataTablesModel)
        {
            SearchParameter param = new SearchParameter();

            param.SearchColumn = new List <string> {
                "Id", "ParkName",                                     //"OfficePhone",
                "SpacesToRent",
                "SpacesToOwn",
                "PhysicalAddress",
                "State",
                "PhysicalZip",
                "IsOn"
            };
            param.SearchColumnValue = jQueryDataTablesModel.sSearch_;
            param.StartIndex        = jQueryDataTablesModel.iDisplayStart;
            param.PageSize          = jQueryDataTablesModel.iDisplayLength;

            List <ParkDto> result = _masterServiceFacade.GetListPark(param);

            var parks = GenericFilterHelper <ParkDto> .GetFilteredRecords(
                sourceData : result, //Updating bcos, on/off feature has to implement
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns(string.Empty),
                totalRecordCount : param.TotalRecordCount,
                searchString : jQueryDataTablesModel.sSearch,
                isSearch : param.IsFilterValue,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "ParkName",                                //"OfficePhone",
                "SpacesToRent",
                "SpacesToOwn",
                "PhysicalAddress",
                "State",
                "PhysicalZip",
                "IsOn"
            });

            return(Json(new JQueryDataTablesResponse <ParkDto>(
                            items: parks,
                            totalRecords: param.TotalRecordCount,
                            totalDisplayRecords: param.SearchedCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
Exemple #14
0
        public ActionResult LoadCustomer(JQueryDataTablesModel jQueryDataTablesModel)
        {
            SearchParameter param = new SearchParameter();

            param.SearchColumn = new List <string> {
                "Id", "FirstName",
                "LastName",
                "FirstName2",
                "LastName2",
                "Phone",
                "Email",
                "Address",
                "Zip"
            };
            param.SearchColumnValue = jQueryDataTablesModel.sSearch_;
            param.StartIndex        = jQueryDataTablesModel.iDisplayStart;
            param.PageSize          = jQueryDataTablesModel.iDisplayLength;
            List <Customer> sourceData = _rentalServiceFacade.GetCustomers(param);

            var customers = GenericFilterHelper <Customer> .GetFilteredRecords(
                sourceData : sourceData,
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns("desc"),
                totalRecordCount : param.TotalRecordCount,
                searchString : jQueryDataTablesModel.sSearch,
                isSearch : param.IsFilterValue,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "FirstName", "LastName", "FirstName2",
                "LastName2", "Phone", "Email", "Address", "Zip"
            });

            return(Json(new JQueryDataTablesResponse <Customer>(
                            items: customers,
                            totalRecords: param.TotalRecordCount,
                            totalDisplayRecords: param.SearchedCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
Exemple #15
0
        public void SortAndPaginateKeepsOriginalQueryableType()
        {
            var readCommand = new ReadCommandInfo
            {
                OrderByProperties = new[] { new OrderByProperty {
                                                Property = "Name", Descending = true
                                            } },
                Skip = 1,
                Top  = 2,
            };

            IQueryable <object> query = new[] { "a", "b", "c", "d" }.AsQueryable().Select(name => new C {
                Name = name
            });

            Console.WriteLine(query.GetType());
            Assert.IsTrue(query is IQueryable <C>);

            var result = GenericFilterHelper.SortAndPaginate <object>(query, readCommand);

            Assert.AreEqual("c, b", TestUtility.Dump(result, item => ((C)item).Name));
            Console.WriteLine(result.GetType());
            Assert.IsTrue(result is IQueryable <C>);
        }
Exemple #16
0
        public ActionResult LoadingPayment(JQueryDataTablesModel jQueryDataTablesModel)
        {
            int totalRecordCount  = 0;
            int searchRecordCount = 0;

            var payments = GenericFilterHelper <MobileHome.Insure.Model.Payment> .GetFilteredRecords(
                runTimeMethod : _rentalServiceFacade.GetPayments,
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns(string.Empty),
                totalRecordCount : out totalRecordCount,
                searchRecordCount : out searchRecordCount,
                searchString : jQueryDataTablesModel.sSearch,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "TransactionId", "ResponseCode", "ApprovalCode", "CreationDate", "Amount"
            });

            return(Json(new JQueryDataTablesResponse <MobileHome.Insure.Model.Payment>(
                            items: payments,
                            totalRecords: totalRecordCount,
                            totalDisplayRecords: searchRecordCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
Exemple #17
0
        public ActionResult LoadingCustomer(JQueryDataTablesModel jQueryDataTablesModel)
        {
            int totalRecordCount  = 0;
            int searchRecordCount = 0;

            var customers = GenericFilterHelper <Customer> .GetFilteredRecords(
                runTimeMethod : _rentalServiceFacade.GetCustomers,
                startIndex : jQueryDataTablesModel.iDisplayStart,
                pageSize : jQueryDataTablesModel.iDisplayLength,
                sortedColumns : jQueryDataTablesModel.GetSortedColumns("desc"),
                totalRecordCount : out totalRecordCount,
                searchRecordCount : out searchRecordCount,
                searchString : jQueryDataTablesModel.sSearch,
                searchColumnValues : jQueryDataTablesModel.sSearch_,
                properties : new List <string> {
                "Id", "FirstName", "LastName", "FirstName2", "LastName2", "Phone", "Email", "Address", "Zip"
            });

            return(Json(new JQueryDataTablesResponse <Customer>(
                            items: customers,
                            totalRecords: totalRecordCount,
                            totalDisplayRecords: searchRecordCount,
                            sEcho: jQueryDataTablesModel.sEcho)));
        }
        private void AutoApplyFilters(ReadCommandInfo commandInfo)
        {
            List <ApplyFilterWhere> applyFilters;

            if (_applyFiltersOnClientRead.TryGetValue(commandInfo.DataSource, out applyFilters))
            {
                commandInfo.Filters = commandInfo.Filters ?? new FilterCriteria[] { };

                var newFilters = applyFilters
                                 .Where(applyFilter => applyFilter.Where == null || applyFilter.Where(commandInfo))
                                 .Where(applyFilter => !commandInfo.Filters.Any(existingFilter => GenericFilterHelper.EqualsSimpleFilter(existingFilter, applyFilter.FilterName)))
                                 .Select(applyFilter => new FilterCriteria {
                    Filter = applyFilter.FilterName
                })
                                 .ToList();

                _logger.Trace(() => "AutoApplyFilters: " + string.Join(", ", newFilters.Select(f => f.Filter)));

                commandInfo.Filters = commandInfo.Filters.Concat(newFilters).ToArray();
            }
        }
        public ReadCommandResult ExecuteReadCommand(ReadCommandInfo commandInfo, GenericRepository <IEntity> genericRepository)
        {
            if (!commandInfo.ReadRecords && !commandInfo.ReadTotalCount)
            {
                throw new ClientException("Invalid ReadCommand argument: At least one of the properties ReadRecords or ReadTotalCount should be set to true.");
            }

            if (commandInfo.Top < 0)
            {
                throw new ClientException("Invalid ReadCommand argument: Top parameter must not be negative.");
            }

            if (commandInfo.Skip < 0)
            {
                throw new ClientException("Invalid ReadCommand argument: Skip parameter must not be negative.");
            }

            if (commandInfo.DataSource != genericRepository.EntityName)
            {
                throw new FrameworkException(string.Format(
                                                 "Invalid ExecuteReadCommand arguments: The given ReadCommandInfo ('{0}') does not match the GenericRepository ('{1}').",
                                                 commandInfo.DataSource, genericRepository.EntityName));
            }

            AutoApplyFilters(commandInfo);

            ReadCommandResult result;

            var specificMethod = genericRepository.Reflection.RepositoryReadCommandMethod;

            if (specificMethod != null)
            {
                result = (ReadCommandResult)specificMethod.InvokeEx(genericRepository.EntityRepository, commandInfo);
            }
            else
            {
                bool pagingIsUsed = commandInfo.Top > 0 || commandInfo.Skip > 0;

                object filter = commandInfo.Filters != null && commandInfo.Filters.Any() ? (object)commandInfo.Filters : new FilterAll();
                IEnumerable <IEntity> filtered = genericRepository.Read(filter, filter.GetType(), preferQuery: pagingIsUsed || !commandInfo.ReadRecords);

                IEntity[] resultRecords = null;
                int?      totalCount    = null;

                if (commandInfo.ReadRecords)
                {
                    var sortedAndPaginated = GenericFilterHelper.SortAndPaginate(genericRepository.Reflection.AsQueryable(filtered), commandInfo);
                    resultRecords = (IEntity[])genericRepository.Reflection.ToArrayOfEntity(sortedAndPaginated);
                }

                if (commandInfo.ReadTotalCount)
                {
                    if (pagingIsUsed)
                    {
                        totalCount = SmartCount(filtered);
                    }
                    else
                    {
                        totalCount = resultRecords != null ? resultRecords.Length : SmartCount(filtered);
                    }
                }

                result = new ReadCommandResult
                {
                    Records    = resultRecords,
                    TotalCount = totalCount
                };
            }

            return(result);
        }