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))); }
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))); }
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); }
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)); }
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))); }
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>")); }
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))); }
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))); }
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>); }
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))); }
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); }