public SearchContext(TypeContext typeContext, PagedSearchRequest request, QueryContext queryContext, QueryResultContext queryResultContext) { this.TargetTypeContext = typeContext; this.Request = request; this.QueryContext = queryContext; this.QueryResultContext = queryResultContext; }
public override Response Handle(PagedSearchRequest <TDto> request) { var response = CreateTypedResponse(); var keyword = request.Keyword + "%"; IQueryOver <TEntity> query = null; var entityQuery = Session.QueryOver <TEntity>() .Where(WhereExpress(keyword)); var organizationExpression = GetOrganization(); if (organizationExpression != null) { query = entityQuery.JoinQueryOver(organizationExpression) .Where(o => o.Key == UserContext.OrganizationKey); } else { query = entityQuery; } query = query.Skip(request.Page * request.PageSize) .Take(request.PageSize); var result = query.Future <TEntity>() ?? Enumerable.Empty <TEntity> (); response.TotalCount = query.ToRowCountQuery().FutureValue <int>().Value; response.Results = Mapper.Map <IEnumerable <TEntity>, IEnumerable <TDto> > (result.ToList()); return(response); }
protected PagedSearchParameter GetPagedSearchParameter(PagedSearchRequest request) { return(new PagedSearchParameter { PageIndex = request.PageIndex, PageSize = request.PageSize, OrderByFieldName = request.OrderByFieldName, SortOrder = request.SortOrder, Keyword = request.Keyword, Filters = request.Filters }); }
protected async Task <GenericPagedSearchResponse <TDto> > PagedSearchAsync( Func <PagedSearchParameter, Task <PagedSearchResult <TDto> > > pagedSearchFunction, PagedSearchRequest request) { var response = new GenericPagedSearchResponse <TDto>(); var pagedSearchParameter = GetPagedSearchParameter(request); var result = await pagedSearchFunction(pagedSearchParameter); response.DtoCollection = result.Result; response.TotalCount = result.Count; return(response); }
public QueryContext BuildQueryContext(PagedSearchRequest searchRequest) { var context = new QueryContext(); this.BuildIndexContext(context); context.SearchFields = new[] { new FieldContext { Path = "PersonName.LastName", Value = searchRequest.Text }, new FieldContext { Path = "PersonName.FirstName", Value = searchRequest.Text } }; context.SortContext.Fields.Add(new SortField { Path = "PersonName.FirstName" }); return(context); }
public static void MapSearchRequest(object searchRequest, PagedSearchRequest pagedSearchRequest) { // assign searchRequest values to the matching Parameter object Value properties foreach (PropertyInfo propertyInfo in searchRequest.GetType().GetProperties()) { if (propertyInfo.CanRead) { var propertyName = propertyInfo.Name; var pagedSearchParameter = pagedSearchRequest.Parameters.Find(p => string.Equals(p.Name.ToLower(), propertyName.ToLower())); if (pagedSearchParameter != null) { pagedSearchParameter.Value = propertyInfo.GetValue(searchRequest); } else { // If it is not a parameter, check to see if it matches one of the following // TODO: Is there a dynamic way to do this? Automapper before this is called? Will changing these properties to object type simplify this code? if (propertyName.ToLower().Equals(PAGE_PROPERTY_NAME)) { pagedSearchRequest.Page = (int)propertyInfo.GetValue(searchRequest); } else if (propertyName.ToLower().Equals(PAGE_SIZE_PROPERTY_NAME)) { pagedSearchRequest.PageSize = (int)propertyInfo.GetValue(searchRequest); } else if (propertyName.ToLower().Equals(SORT_BY_PROPERTY_NAME)) { pagedSearchRequest.SortBy = propertyInfo.GetValue(searchRequest).ToString(); } else if (propertyName.ToLower().Equals(SORT_DIRECTION_PROPERTY_NAME)) { pagedSearchRequest.SortDirection = propertyInfo.GetValue(searchRequest).ToString(); } } } } }
protected async Task <GenericPagedSearchResponse <TDto> > PagedSearchAsync(IBaseRepository <TDto> repository, PagedSearchRequest request) { return(await PagedSearchAsync(repository.PagedSearchAsync, request)); }
public async Task <GenericPagedSearchResponse <TDto> > PagedSearchAsync(PagedSearchRequest request) { return(await PagedSearchAsync(_repository, request)); }
public void SlaMetricDetailsContext_WhenPagedSearchRepositoryExtensionUsed_ReturnsMultipleLists() { // ARRANGE var connectionString = DbContextHelpers.GetC3msConnectionString(); var dbContext = new SlaMetricDetailsContext(connectionString); var pagedSearchRequest = new PagedSearchRequest { SearchStoredProcedure = "dbo.usp_GetSlaGoalsSearchTestData_sel", SearchResultSetType = "SslamSearchResultModel", Page = 1, PageSize = 50, SortBy = "ContractID", SortDirection = "desc" }; pagedSearchRequest.Parameters.Add(new Parameter("sowMetricID", 5, DbType.Int32, false)); pagedSearchRequest.Parameters.Add(new Parameter("state", "CA", DbType.String, false)); pagedSearchRequest.Parameters.Add(new Parameter("masterID", "", DbType.String, false)); pagedSearchRequest.Parameters.Add(new Parameter("fileTypeID", "", DbType.String, false)); pagedSearchRequest.Parameters.Add(new Parameter("courtType", "", DbType.String, false)); pagedSearchRequest.Parameters.Add(new Parameter("vendorID", 0, DbType.Int32, false)); pagedSearchRequest.Parameters.Add(new Parameter("vendorIdFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("contractIdFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("supplierNameFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("courtFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("fileTypeFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("serviceFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("goalFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("thresholdFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("startDateFilter", null, DbType.String, true)); pagedSearchRequest.Parameters.Add(new Parameter("endDateFilter", null, DbType.String, true)); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "vendorId", ColumnHeader = "Vendor", ResultSetType = "VendorModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "contractId", ColumnHeader = "Contract", ResultSetType = "ContractModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "supplierName", ColumnHeader = "Business Name", ResultSetType = "BusinessNameModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "court", ColumnHeader = "Court", ResultSetType = "CourtModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "fileType", ColumnHeader = "File Type", ResultSetType = "FileTypeModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "service", ColumnHeader = "Product", ResultSetType = "ServiceModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "goal", ColumnHeader = "Goal", ResultSetType = "GoalModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "threshold", ColumnHeader = "Threshold", ResultSetType = "ThresholdModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "startDate", ColumnHeader = "Start Date", ResultSetType = "StartDateModel" }); pagedSearchRequest.ColumnConfigurations.Add(new ColumnConfiguration { ColumnBinding = "endDate", ColumnHeader = "End Date", ResultSetType = "EndDateModel" }); // ACT var actual = dbContext.PagedResults() .WithSearchResult <SslamSearchResultModel>() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .WithColumnFilterResult() .Search(pagedSearchRequest); // ASSERT Assert.NotNull(actual); Assert.True(actual.TotalResults > 0); Assert.True(actual.Page == pagedSearchRequest.Page); Assert.True(actual.PageSize == pagedSearchRequest.PageSize); Assert.True(actual.SortBy == pagedSearchRequest.SortBy); Assert.True(actual.SortDirection == pagedSearchRequest.SortDirection); Assert.NotNull(actual.SearchResults); var searchResults = actual.SearchResults as IEnumerable <SslamSearchResultModel>; Assert.True(searchResults.Count() == 50); Assert.True(actual.Columns.Count == 10); Assert.True(pagedSearchRequest.ColumnConfigurations.Count == actual.Columns.Count); Assert.True(pagedSearchRequest.ColumnConfigurations[0].ColumnBinding == actual.Columns[0].ColumnId); Assert.True((actual.Columns[0].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[1].ColumnBinding == actual.Columns[1].ColumnId); Assert.True((actual.Columns[1].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[2].ColumnBinding == actual.Columns[2].ColumnId); Assert.True((actual.Columns[2].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[3].ColumnBinding == actual.Columns[3].ColumnId); Assert.True((actual.Columns[3].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[4].ColumnBinding == actual.Columns[4].ColumnId); Assert.True((actual.Columns[4].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[5].ColumnBinding == actual.Columns[5].ColumnId); Assert.True((actual.Columns[5].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[6].ColumnBinding == actual.Columns[6].ColumnId); Assert.True((actual.Columns[6].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[7].ColumnBinding == actual.Columns[7].ColumnId); Assert.True((actual.Columns[7].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[8].ColumnBinding == actual.Columns[8].ColumnId); Assert.True((actual.Columns[8].FilterValues as IEnumerable <string>).Any()); Assert.True(pagedSearchRequest.ColumnConfigurations[9].ColumnBinding == actual.Columns[9].ColumnId); Assert.True((actual.Columns[9].FilterValues as IEnumerable <string>).Any()); var resultsJson = JsonConvert.SerializeObject(actual); var deserializedResult = JObject.Parse(resultsJson); Assert.True((deserializedResult["SearchResults"] as JArray).Count() == 50); Assert.True((deserializedResult["Columns"] as JArray).Count() == 10); Assert.True((int)deserializedResult["Page"] == pagedSearchRequest.Page); Assert.True((int)deserializedResult["PageSize"] == pagedSearchRequest.PageSize); Assert.True((string)deserializedResult["SortBy"] == pagedSearchRequest.SortBy); Assert.True((string)deserializedResult["SortDirection"] == pagedSearchRequest.SortDirection); Assert.True((int)deserializedResult["TotalResults"] == 1000); }