示例#1
0
        public string GetNatureAreasBySearchFilter([FromBody] SearchFilterRequest searchFilterRequest)
        {
            var natureAreas = SqlServer.GetNatureAreasBySearchFilter(searchFilterRequest);
            var r           = GeoJsonConverter.NatureAreasToGeoJson(natureAreas, !searchFilterRequest.CenterPoints);

            return(r);
        }
示例#2
0
        public IEnumerable <INatureAreaGeoJson> GetNatureAreasBySearchFilter(SearchFilterRequest searchFilterRequest)
        {
            int natureAreaCount;
            var natureAreas = GetNatureAreasBySearchFilter(
                searchFilterRequest.AnalyzeSearchFilterRequest(),
                searchFilterRequest.NatureAreaTypeCodes,
                searchFilterRequest.DescriptionVariableCodes,
                searchFilterRequest.Municipalities,
                searchFilterRequest.Counties,
                searchFilterRequest.ConservationAreas,
                searchFilterRequest.Institutions,
                searchFilterRequest.RedlistAssessmentUnits,
                searchFilterRequest.RedlistCategories,
                searchFilterRequest.Geometry,
                searchFilterRequest.BoundingBox,
                searchFilterRequest.EpsgCode,
                searchFilterRequest.CenterPoints,
                0,
                0,
                int.MaxValue,
                out natureAreaCount
                );

            return(natureAreas);
        }
        public async Task <SpecificationDatasourceRelationshipSearchResultViewModel> PerformSearch(SearchRequestViewModel request)
        {
            var filters = request.Filters.IsNullOrEmpty()
                        ? new ConcurrentDictionary <string, string[]>()
                        : request.Filters;

            if (filters.ContainsKey(""))
            {
                filters.Remove("");
            }

            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue ? request.PageSize.Value : 50,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = request.IncludeFacets,
                Filters       = filters
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            PagedResult <SpecificationDatasourceRelationshipSearchResultItem> pagedResult = await _specsClient.FindSpecificationAndRelationships(requestOptions);

            if (pagedResult == null)
            {
                _logger.Error("Find specification data source relationships HTTP request failed");
            }

            int totalPages = pagedResult.TotalItems / pagedResult.PageSize;

            if (pagedResult.TotalItems % pagedResult.PageSize > 0)
            {
                totalPages++;
            }

            int startNumber = ((pagedResult.PageSize * pagedResult.PageNumber) - pagedResult.PageSize) + 1;
            int endNumber   = (pagedResult.PageSize * pagedResult.PageNumber);

            if (endNumber > pagedResult.TotalItems)
            {
                endNumber = pagedResult.TotalItems;
            }

            SpecificationDatasourceRelationshipSearchResultViewModel viewModel =
                new SpecificationDatasourceRelationshipSearchResultViewModel
            {
                Items           = pagedResult.Items,
                PagerState      = new PagerState(pagedResult.PageNumber, pagedResult.TotalPages),
                TotalCount      = pagedResult.TotalItems,
                StartItemNumber = startNumber,
                EndItemNumber   = endNumber
            };

            return(viewModel);
        }
示例#4
0
        public FileStreamResult ExportNatureAreasBySearchFilter([FromBody] SearchFilterRequest searchFilterRequest)
        {
            var metadatas = FindMetadatasBySearchFilter(searchFilterRequest);

            var xDocument = xmlConverter.ToXml(metadatas);

            return(ToZippedFileStreamResult(xDocument));
        }
示例#5
0
        public FileStreamResult ExportNatureAreasAsGmlBySearchFilter([FromBody] SearchFilterRequest searchFilterRequest)
        {
            int epsgCode;
            var natureAreas = FindNatureAreasBySearchFilter(searchFilterRequest, out epsgCode);

            var xDocument = gmlWriter.ConvertToGml(natureAreas);

            return(ToZippedFileStreamResult(xDocument));
        }
示例#6
0
        public void GetNatureAreasBySearchFilter()
        {
            var request = new SearchFilterRequest {
                CenterPoints = true
            };
            Collection <NatureArea> r = SqlServer.GetNatureAreasBySearchFilter(request);

            Assert.True(r[0].Area.InstanceOf("POINT").IsTrue);
        }
        public void GetNatureAreasBySearchFilter()
        {
            var request = new SearchFilterRequest {
                CenterPoints = true
            };
            var r = SqlServer.GetNatureAreasBySearchFilter(request);

            Assert.True(r.First().Area.InstanceOf("POINT").IsTrue);
        }
示例#8
0
        public FileStreamResult ExportNatureAreasAsXlsxBySearchFilter(
            [FromBody] SearchFilterRequest searchFilterRequest)
        {
            var natureAreas      = FindNatureAreasBySearchFilter(searchFilterRequest);
            var excelGenerator   = new ExcelGenerator(Naturkodetrær.Naturvariasjon);
            var xlsxMemoryStream = excelGenerator.GenerateXlsxStream(natureAreas);

            return(new FileStreamResult(xlsxMemoryStream,
                                        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
        }
示例#9
0
        public FileStreamResult ExportNatureAreasAsShapeBySearchFilter(
            [FromBody] SearchFilterRequest searchFilterRequest)
        {
            int epsgCode;
            var natureAreas = FindNatureAreasBySearchFilter(searchFilterRequest, out epsgCode);

            var zipMemoryStream = ShapeGenerator.GenerateShapeFile(natureAreas, epsgCode);

            return(new FileStreamResult(zipMemoryStream, "application/zip"));
        }
示例#10
0
        public string GetNatureAreasBySearchFilterV2([FromBody] SearchFilterRequest searchFilterRequest)
        {
            var search = new SearchV2(Config.Settings.ConnectionString);

            var list = search.GetNatureAreasBySearchFilter(searchFilterRequest);

            var geoJson = GeoJsonConverter.NatureAreasToGeoJson(list, !searchFilterRequest.CenterPoints);

            return(geoJson);
        }
示例#11
0
        public FileStreamResult ExportNatureAreasBySearchFilter([FromBody] SearchFilterRequest searchFilterRequest)
        {
            var metadatas = FindMetadatasBySearchFilter(searchFilterRequest);

            var    xDocument = xmlConverter.ToXml(metadatas);
            Stream xmlStream = new MemoryStream();

            xDocument.Save(xmlStream);
            xmlStream.Position = 0;

            return(new FileStreamResult(xmlStream, "application/xml"));
        }
示例#12
0
        private static IEnumerable <Metadata> FindMetadatasBySearchFilter(SearchFilterRequest searchFilterRequest)
        {
            var natureLevels = searchFilterRequest.AnalyzeSearchFilterRequest();

            return(SqlServer.GetMetadatasBySearchFilter(
                       natureLevels,
                       searchFilterRequest.NatureAreaTypeCodes,
                       searchFilterRequest.DescriptionVariableCodes,
                       searchFilterRequest.Municipalities,
                       searchFilterRequest.Counties,
                       searchFilterRequest.ConservationAreas,
                       searchFilterRequest.Institutions,
                       searchFilterRequest.Geometry,
                       "",
                       searchFilterRequest.EpsgCode
                       ));
        }
示例#13
0
        private async Task GenerateCalculationCodeWithReturnFromDatasets(SpecGeneratorConfiguration configuration, Specification specification)
        {
            SearchFilterRequest calcRequest = new SearchFilterRequest()
            {
                Filters = new Dictionary <string, string[]>()
                {
                    { "specificationId", new[] { "testId" } }
                },
                PageSize = 500,
            };

            PagedResult <CalculationSearchResultItem> calculations = await _calcsClient.FindCalculations(calcRequest);

            foreach (CalculationSearchResultItem calc in calculations.Items)
            {
            }
        }
示例#14
0
        public string ExportNatureAreasAsGmlBySearchFilter([FromBody] SearchFilterRequest searchFilterRequest)
        {
            int epsgCode;
            var natureAreas = FindNatureAreasBySearchFilter(searchFilterRequest, out epsgCode);

            var xDocument = gmlWriter.ConvertToGml(natureAreas);
            var builder   = new StringBuilder();

            using (TextWriter writer = new StringWriter(builder))
            {
                xDocument.Save(writer);
            }
            return(builder.ToString());
            //Stream xmlStream = new MemoryStream();
            //xDocument.Save(xmlStream);
            //xmlStream.Position = 0;
            //return new DownloadFileResult("natur.xml", xmlStream, "application/xml");
        }
示例#15
0
        private static Collection <NatureArea> FindNatureAreasBySearchFilter(SearchFilterRequest searchFilterRequest,
                                                                             out int epsgCode)
        {
            var metadatas = FindMetadatasBySearchFilter(searchFilterRequest);

            var natureAreas = new Collection <NatureArea>();

            epsgCode = -1;
            foreach (var metadata in metadatas)
            {
                if (epsgCode == -1)
                {
                    epsgCode = metadata.GetAreaEpsgCode();
                }
                natureAreas.AddRange(metadata.NatureAreas);
            }

            return(natureAreas);
        }
示例#16
0
        private static IEnumerable <Metadata> FindMetadatasBySearchFilter(SearchFilterRequest searchFilterRequest)
        {
            var natureLevels = searchFilterRequest.AnalyzeSearchFilterRequest();

            var search = new SearchV2(Config.Settings.ConnectionString);

            return(search.GetMetadatasBySearchFilter(
                       natureLevels,
                       searchFilterRequest.NatureAreaTypeCodes,
                       searchFilterRequest.DescriptionVariableCodes,
                       searchFilterRequest.Municipalities,
                       searchFilterRequest.Counties,
                       searchFilterRequest.ConservationAreas,
                       searchFilterRequest.Institutions,
                       searchFilterRequest.RedlistAssessmentUnits,
                       searchFilterRequest.RedlistCategories,
                       searchFilterRequest.Geometry,
                       string.Empty,
                       searchFilterRequest.EpsgCode
                       ));
        }
示例#17
0
        public async Task FindCalculations()
        {
            SearchFilterRequest input           = new SearchFilterRequest();
            SearchQueryRequest  expectedRequest = SearchQueryRequest.FromSearchFilterRequest(input);
            SearchResults <CalculationSearchResult> expectedResults = new SearchResults <CalculationSearchResult>();

            GivenTheResponse("calculations-search", expectedResults, HttpMethod.Post);

            ApiResponse <SearchResults <CalculationSearchResult> > apiResponse = await _client.FindCalculations(input);

            apiResponse?.StatusCode
            .Should()
            .Be(HttpStatusCode.OK);

            apiResponse
            .Content
            .Should()
            .BeEquivalentTo(expectedResults);

            AndTheRequestContentsShouldHaveBeen(expectedRequest.AsJson());
        }
        public async Task <CalculationSearchResultViewModel> PerformSearch(SearchRequestViewModel request)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue ? request.PageSize.Value : 50,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = request.IncludeFacets,
                Filters       = request.Filters,
                FacetCount    = request.FacetCount,
                SearchMode    = SearchMode.All
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            ApiResponse <SearchResults <CalculationSearchResult> > calculationsResult = await _calculationsApiClient.FindCalculations(requestOptions);

            return(BuildResults(calculationsResult, requestOptions.Page, requestOptions.PageSize));
        }
示例#19
0
        public async Task <PagedResult <DatasetSearchResultItem> > FindDatasets(SearchFilterRequest filterOptions)
        {
            Guard.ArgumentNotNull(filterOptions, nameof(filterOptions));

            SearchQueryRequest request = SearchQueryRequest.FromSearchFilterRequest(filterOptions);

            ApiResponse <SearchResults <DatasetSearchResultItem> > results = await PostAsync <SearchResults <DatasetSearchResultItem>, SearchQueryRequest>("datasets-search", request);

            if (results.StatusCode == HttpStatusCode.OK)
            {
                PagedResult <DatasetSearchResultItem> result = new SearchPagedResult <DatasetSearchResultItem>(filterOptions, results.Content.TotalCount)
                {
                    Items  = results.Content.Results,
                    Facets = results.Content.Facets,
                };

                return(result);
            }
            else
            {
                return(null);
            }
        }
示例#20
0
        private static Collection <NatureAreaExport> FindNatureAreasBySearchFilter(
            SearchFilterRequest searchFilterRequest)
        {
            var metadatas = FindMetadatasBySearchFilter(searchFilterRequest);

            var natureAreaExports = new Collection <NatureAreaExport>();

            foreach (var metadata in metadatas)
            {
                foreach (var natureArea in metadata.NatureAreas)
                {
                    var natureAreaExport =
                        new NatureAreaExport(natureArea)
                    {
                        MetadataContractor  = metadata.Contractor.Company,
                        MetadataProgram     = metadata.Program,
                        MetadataSurveyScale = metadata.SurveyScale
                    };
                    natureAreaExports.Add(natureAreaExport);
                }
            }

            return(natureAreaExports);
        }
示例#21
0
        public async Task <DatasetVersionSearchResultViewModel> PerformSearchDatasetVersion(SearchRequestViewModel searchRequest)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = searchRequest.PageNumber ?? 1,
                PageSize      = searchRequest.PageSize ?? 20,
                SearchTerm    = searchRequest.SearchTerm,
                IncludeFacets = searchRequest.IncludeFacets,
                Filters       = searchRequest.Filters,
                SearchMode    = _featureToggle.IsSearchModeAllEnabled() ? SearchMode.All : SearchMode.Any
            };

            PagedResult <DatasetVersionSearchResultModel> pagedResult = await _datasetsClient.FindDatasetsVersions(requestOptions);

            if (pagedResult == null)
            {
                return(null);
            }

            DatasetVersionSearchResultViewModel datasetVersionSearchResultViewModel =
                new DatasetVersionSearchResultViewModel(pagedResult.Items, pagedResult.TotalItems, pagedResult.PageNumber, pagedResult.TotalPages, pagedResult.PageSize);

            return(datasetVersionSearchResultViewModel);
        }
示例#22
0
        public async Task <ProviderTestsSearchResultViewModel> PerformProviderTestResultsSearch(SearchRequestViewModel request)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue ? request.PageSize.Value : 50,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = true,
                Filters       = request.Filters,
                SearchFields  = new[] { "providerName" }
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            PagedResult <ProviderTestSearchResultItem> ScenariosResult = await _testsApiClient.FindTestResults(requestOptions);

            if (ScenariosResult == null)
            {
                _logger.Error("Find test results HTTP request failed");
                return(null);
            }

            ProviderTestsSearchResultViewModel results = new ProviderTestsSearchResultViewModel
            {
                TotalResults = ScenariosResult.TotalItems,
                CurrentPage  = ScenariosResult.PageNumber
            };

            IList <SearchFacetViewModel> searchFacets = new List <SearchFacetViewModel>();

            if (ScenariosResult.Facets != null)
            {
                foreach (SearchFacet facet in ScenariosResult.Facets)
                {
                    searchFacets.Add(_mapper.Map <SearchFacetViewModel>(facet));
                }
            }

            results.Facets = searchFacets.AsEnumerable();

            List <ProviderTestSearchResultItemViewModel> itemResults = new List <ProviderTestSearchResultItemViewModel>();

            foreach (ProviderTestSearchResultItem searchResult in ScenariosResult.Items)
            {
                itemResults.Add(_mapper.Map <ProviderTestSearchResultItemViewModel>(searchResult));
            }

            results.Providers = itemResults.AsEnumerable();

            if (results.TotalResults == 0)
            {
                results.StartItemNumber = 0;
                results.EndItemNumber   = 0;
            }
            else
            {
                results.StartItemNumber = ((requestOptions.Page - 1) * requestOptions.PageSize) + 1;
                results.EndItemNumber   = results.StartItemNumber + requestOptions.PageSize - 1;
            }

            if (results.EndItemNumber > ScenariosResult.TotalItems)
            {
                results.EndItemNumber = ScenariosResult.TotalItems;
            }

            results.PagerState = new PagerState(requestOptions.Page, ScenariosResult.TotalPages, 4);

            return(results);
        }
        public async Task <SpecificationDatasourceRelationshipSearchResultViewModel> PerformSearch(SearchRequestViewModel request)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue ? request.PageSize.Value : 50,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = false,
                Filters       = request.Filters,
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            PagedResult <SpecificationDatasourceRelationshipSearchResultItem> pagedResult = await _specsClient.FindSpecificationAndRelationships(requestOptions);

            if (pagedResult == null)
            {
                _logger.Error("Find specification data source relationships HTTP request failed");
            }

            SpecificationDatasourceRelationshipSearchResultViewModel viewModel = new SpecificationDatasourceRelationshipSearchResultViewModel();

            viewModel.TotalResults = pagedResult.TotalItems;
            viewModel.CurrentPage  = pagedResult.PageNumber;

            IList <SpecificationDatasourceRelationshipSearchResultItemViewModel> itemResults = new List <SpecificationDatasourceRelationshipSearchResultItemViewModel>();

            foreach (SpecificationDatasourceRelationshipSearchResultItem item in pagedResult.Items)
            {
                itemResults.Add(new SpecificationDatasourceRelationshipSearchResultItemViewModel
                {
                    SpecificationId   = item.Id,
                    SpecificationName = item.Name,
                    CountPhrase       = BuildCountPhrase(item.RelationshipCount)
                });
            }

            IEnumerable <SpecificationDatasourceRelationshipSearchResultItemViewModel> sortedResults = itemResults.OrderBy(f => f.SpecificationName);

            viewModel.SpecRelationships = sortedResults.ToList();

            if (viewModel.TotalResults == 0)
            {
                viewModel.StartItemNumber = 0;
                viewModel.EndItemNumber   = 0;
            }
            else
            {
                viewModel.StartItemNumber = ((requestOptions.Page - 1) * requestOptions.PageSize) + 1;
                viewModel.EndItemNumber   = viewModel.StartItemNumber + requestOptions.PageSize - 1;
            }

            if (viewModel.EndItemNumber > pagedResult.TotalItems)
            {
                viewModel.EndItemNumber = pagedResult.TotalItems;
            }

            viewModel.PagerState = new PagerState(requestOptions.Page, pagedResult.TotalPages, 4);

            return(viewModel);
        }
        public async Task <TestScenarioSearchResultViewModel> PerformSearch(SearchRequestViewModel request)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue ? request.PageSize.Value : 50,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = false,
                Filters       = request.Filters,
                SearchFields  = new string[] { "TestScenarioName" }
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            PagedResult <TestScenarioSearchResultItem> TestScenarioResult = await _testEngineApiClient.FindTestScenariosForProvider(requestOptions);

            if (TestScenarioResult == null)
            {
                _logger.Error("Find Test Scenarios HTTP request failed");
                return(null);
            }

            TestScenarioSearchResultViewModel results = new TestScenarioSearchResultViewModel
            {
                TotalResults = TestScenarioResult.TotalItems,
                CurrentPage  = TestScenarioResult.PageNumber
            };

            IList <SearchFacetViewModel> searchFacets = new List <SearchFacetViewModel>();

            if (TestScenarioResult.Facets != null)
            {
                foreach (SearchFacet facet in TestScenarioResult.Facets)
                {
                    searchFacets.Add(_mapper.Map <SearchFacetViewModel>(facet));
                }
            }

            results.Facets = searchFacets.AsEnumerable();

            List <TestScenarioSearchResultItemViewModel> itemResults = new List <TestScenarioSearchResultItemViewModel>();

            foreach (TestScenarioSearchResultItem searchResult in TestScenarioResult.Items)
            {
                itemResults.Add(_mapper.Map <TestScenarioSearchResultItemViewModel>(searchResult));
            }

            itemResults.OrderBy(f => f.LastUpdatedDate);

            results.TestScenarios = itemResults.AsEnumerable();

            if (results.TotalResults == 0)
            {
                results.StartItemNumber = 0;
                results.EndItemNumber   = 0;
            }
            else
            {
                results.StartItemNumber = ((requestOptions.Page - 1) * requestOptions.PageSize) + 1;
                results.EndItemNumber   = results.StartItemNumber + requestOptions.PageSize - 1;
            }

            if (results.EndItemNumber > TestScenarioResult.TotalItems)
            {
                results.EndItemNumber = TestScenarioResult.TotalItems;
            }

            results.PagerState = new PagerState(requestOptions.Page, TestScenarioResult.TotalPages, 4);

            return(results);
        }
示例#25
0
        public object GetNatureAreaStatisticsBySearchFilter([FromBody] SearchFilterRequest request)
        {
            var natureLevels = request.AnalyzeSearchFilterRequest();
            int natureAreaCount;

            var search = new SearchV2(Config.Settings.ConnectionString);

            var natureAreas = search.GetNatureAreasBySearchFilter(
                natureLevels,
                request.NatureAreaTypeCodes,
                request.DescriptionVariableCodes,
                request.Municipalities,
                request.Counties,
                request.ConservationAreas,
                request.Institutions,
                request.RedlistAssessmentUnits,
                request.RedlistCategories,
                request.Geometry,
                "",
                request.EpsgCode,
                true,
                1,
                0,
                int.MaxValue,
                out natureAreaCount
                );

            var institutions  = new Dictionary <string, int>();
            var surveyedYears = new Dictionary <int, int>();

            var typecastedNatureAreas = natureAreas.Select(na => (NatureArea)na);

            foreach (var natureArea in typecastedNatureAreas)
            {
                if (institutions.ContainsKey(natureArea.Institution))
                {
                    institutions[natureArea.Institution]++;
                }
                else
                {
                    institutions[natureArea.Institution] = 1;
                }
                if (!natureArea.Surveyed.HasValue)
                {
                    continue;
                }
                if (surveyedYears.ContainsKey(natureArea.Surveyed.Value.Year))
                {
                    surveyedYears[natureArea.Surveyed.Value.Year]++;
                }
                else
                {
                    surveyedYears[natureArea.Surveyed.Value.Year] = 1;
                }
            }

            var natureAreaTypeHash = new CodeIds();

            foreach (var natureArea in typecastedNatureAreas)
            {
                foreach (var parameter in natureArea.Parameters)
                {
                    var natureAreaType = parameter as NatureAreaType;
                    if (natureAreaType != null)
                    {
                        natureAreaTypeHash.Add(natureAreaType, natureArea);
                    }
                }
            }

            var natureAreaTypeSummary = GetCodeSummaryHierarchy(natureAreaTypeHash, Naturkodetrær.Naturtyper);

            var natureAreaStatistics = new NatureAreaStatistics {
                NatureAreaTypes = natureAreaTypeSummary
            };

            foreach (var institution in institutions)
            {
                natureAreaStatistics.Institutions.Add(new NatureAreaSummaryItem
                {
                    Name            = institution.Key,
                    NatureAreaCount = institution.Value
                });
            }
            foreach (var surveyYear in surveyedYears)
            {
                natureAreaStatistics.SurveyYears.Add(new NatureAreaSurveyYearSummaryItem
                {
                    Year            = surveyYear.Key,
                    NatureAreaCount = surveyYear.Value
                });
            }

            var natureAreaStatisticsJson = JObject.FromObject(natureAreaStatistics);

            RemoveFields(natureAreaStatisticsJson, "HandledIds", true);
            if (natureAreaStatisticsJson.First == null)
            {
                return(natureAreaStatisticsJson);
            }

            RemoveFields(natureAreaStatisticsJson.First.First, "Name", false);
            RemoveFields(natureAreaStatisticsJson.First.First, "Url", false);
            RemoveFields(natureAreaStatisticsJson.First.First, "Count", false);

            return(natureAreaStatisticsJson);
        }
 public Task <PagedResult <ProviderVersionSearchResult> > SearchMasterProviders(SearchFilterRequest filterOptions)
 {
     throw new NotImplementedException();
 }
        public async Task <SpecificationSearchResultViewModel> PerformSearch(SearchRequestViewModel request)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue ? request.PageSize.Value : 50,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = request.IncludeFacets,
                Filters       = request.Filters,
                SearchMode    = _featureToggle.IsSearchModeAllEnabled() ? SearchMode.All : SearchMode.Any
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            PagedResult <SpecificationSearchResultItem> calculationsResult = await _specsApiClient.FindSpecifications(requestOptions);

            if (calculationsResult == null)
            {
                _logger.Error("Find calculations HTTP request failed");
                return(null);
            }

            SpecificationSearchResultViewModel result = new SpecificationSearchResultViewModel
            {
                TotalResults = calculationsResult.TotalItems,
                CurrentPage  = calculationsResult.PageNumber
            };

            List <SearchFacetViewModel> searchFacets = new List <SearchFacetViewModel>();

            if (calculationsResult.Facets != null)
            {
                foreach (SearchFacet facet in calculationsResult.Facets)
                {
                    searchFacets.Add(_mapper.Map <SearchFacetViewModel>(facet));
                }
            }

            result.Facets = searchFacets.AsEnumerable();

            List <SpecificationSearchResultItemViewModel> itemResults = new List <SpecificationSearchResultItemViewModel>();

            foreach (SpecificationSearchResultItem searchResult in calculationsResult.Items)
            {
                itemResults.Add(_mapper.Map <SpecificationSearchResultItemViewModel>(searchResult));
            }

            result.Specifications = itemResults.AsEnumerable();
            if (result.TotalResults == 0)
            {
                result.StartItemNumber = 0;
                result.EndItemNumber   = 0;
            }
            else
            {
                result.StartItemNumber = ((requestOptions.Page - 1) * requestOptions.PageSize) + 1;
                result.EndItemNumber   = result.StartItemNumber + requestOptions.PageSize - 1;
            }

            if (result.EndItemNumber > calculationsResult.TotalItems)
            {
                result.EndItemNumber = calculationsResult.TotalItems;
            }

            result.PagerState = new PagerState(requestOptions.Page, calculationsResult.TotalPages, 4);

            return(result);
        }
        public async Task <ScenarioSearchResultViewModel> PerformSearch(SearchRequestViewModel request)
        {
            SearchFilterRequest requestOptions = new SearchFilterRequest()
            {
                Page          = request.PageNumber.HasValue ? request.PageNumber.Value : 1,
                PageSize      = request.PageSize.HasValue && request.PageSize > 0 ? request.PageSize.Value : PageSize,
                SearchTerm    = request.SearchTerm,
                IncludeFacets = true,
                Filters       = request.Filters,
                SearchMode    = _featureToggle.IsSearchModeAllEnabled() ? SearchMode.All : SearchMode.Any
            };

            if (request.PageNumber.HasValue && request.PageNumber.Value > 0)
            {
                requestOptions.Page = request.PageNumber.Value;
            }

            PagedResult <ScenarioSearchResultItem> scenariosResult = await _scenariosApiClient.FindScenarios(requestOptions);

            if (scenariosResult == null)
            {
                _logger.Error("Find Scenarios HTTP request failed");
                return(null);
            }

            ScenarioSearchResultViewModel results = new ScenarioSearchResultViewModel
            {
                TotalResults = scenariosResult.TotalItems,
                CurrentPage  = scenariosResult.PageNumber
            };

            IList <SearchFacetViewModel> searchFacets = new List <SearchFacetViewModel>();

            if (scenariosResult.Facets != null)
            {
                foreach (SearchFacet facet in scenariosResult.Facets)
                {
                    searchFacets.Add(_mapper.Map <SearchFacetViewModel>(facet));
                }
            }

            results.Facets = searchFacets.AsEnumerable();

            List <ScenarioSearchResultItemViewModel> itemResults = new List <ScenarioSearchResultItemViewModel>();

            foreach (ScenarioSearchResultItem searchResult in scenariosResult.Items)
            {
                itemResults.Add(_mapper.Map <ScenarioSearchResultItemViewModel>(searchResult));
            }

            itemResults.OrderBy(f => f.LastUpdatedDate);

            results.Scenarios = itemResults.AsEnumerable();

            if (results.TotalResults == 0)
            {
                results.StartItemNumber = 0;
                results.EndItemNumber   = 0;
            }
            else
            {
                results.StartItemNumber = ((requestOptions.Page - 1) * requestOptions.PageSize) + 1;
                results.EndItemNumber   = results.StartItemNumber + requestOptions.PageSize - 1;
            }

            if (results.EndItemNumber > scenariosResult.TotalItems)
            {
                results.EndItemNumber = scenariosResult.TotalItems;
            }

            results.PagerState = new PagerState(requestOptions.Page, scenariosResult.TotalPages, 4);

            return(results);
        }
示例#29
0
        public async Task <PagedResult <SpecificationSearchResultItem> > FindSpecifications(SearchFilterRequest filterOptions)
        {
            SearchQueryRequest request = SearchQueryRequest.FromSearchFilterRequest(filterOptions);

            ApiResponse <SearchResults <SpecificationSearchResultItem> > results = await PostAsync <SearchResults <SpecificationSearchResultItem>, SearchQueryRequest>("specifications-search", request);

            if (results.StatusCode == HttpStatusCode.OK)
            {
                PagedResult <SpecificationSearchResultItem> result = new SearchPagedResult <SpecificationSearchResultItem>(filterOptions, results.Content.TotalCount)
                {
                    Items  = results.Content.Results,
                    Facets = results.Content.Facets,
                };

                return(result);
            }
            else
            {
                return(null);
            }
        }
示例#30
0
        public async Task <PagedResult <SpecificationDatasourceRelationshipSearchResultItem> > FindSpecificationAndRelationships(SearchFilterRequest filterOptions)
        {
            Guard.ArgumentNotNull(filterOptions, nameof(filterOptions));

            SearchQueryRequest request = SearchQueryRequest.FromSearchFilterRequest(filterOptions);

            ApiResponse <SearchResults <SpecificationDatasourceRelationshipSearchResultItem> > results = await PostAsync <SearchResults <SpecificationDatasourceRelationshipSearchResultItem>, SearchQueryRequest>("specifications-dataset-relationships-search", request);

            if (results.StatusCode == HttpStatusCode.OK)
            {
                PagedResult <SpecificationDatasourceRelationshipSearchResultItem> result = new SearchPagedResult <SpecificationDatasourceRelationshipSearchResultItem>(filterOptions, results.Content.TotalCount)
                {
                    Items = results.Content.Results
                };

                return(result);
            }
            else
            {
                return(null);
            }
        }