示例#1
0
 public SearchContext(TypeContext typeContext, PagedSearchRequest request, QueryContext queryContext, QueryResultContext queryResultContext)
 {
     this.TargetTypeContext  = typeContext;
     this.Request            = request;
     this.QueryContext       = queryContext;
     this.QueryResultContext = queryResultContext;
 }
示例#2
0
        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);
        }
示例#3
0
 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
     });
 }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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();
                        }
                    }
                }
            }
        }
示例#7
0
 protected async Task <GenericPagedSearchResponse <TDto> > PagedSearchAsync(IBaseRepository <TDto> repository,
                                                                            PagedSearchRequest request)
 {
     return(await PagedSearchAsync(repository.PagedSearchAsync, request));
 }
示例#8
0
 public async Task <GenericPagedSearchResponse <TDto> > PagedSearchAsync(PagedSearchRequest request)
 {
     return(await PagedSearchAsync(_repository, request));
 }
示例#9
0
        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);
        }