public SearchViewModel(SearchParameters parameters, SearchResult searchResult, Article.SearchResult articleResult = null)
        {
            if (articleResult == null)
            {
                articleResult = new Article.SearchResult {
                    NumFound = 0, Items = new List <Article.SearchResultItem>()
                };
            }

            Text            = parameters.Text;
            FacetParameters = parameters.Facets;
            Result          = new SearchResultViewModel(searchResult);
            ResultArticles  = articleResult;
            Limit           = searchResult.Limit;
            Offset          = searchResult.Offset;
            NumFound        = searchResult.NumFound;
            NumFoundTotal   = searchResult.NumFound + articleResult.NumFound;
            orderby         = parameters.orderby.ToString();
            page            = 1;
            var placeResolver = new Service.PlaceResolver();

            areaDictionary = placeResolver.GetAreas();

            if (Offset != 1)
            {
                page = (Offset / Limit) + 1;
            }

            //Finne totalt antall sider
            pages = NumFound / Limit;

            //Test om det er noe bak komma....
            if ((Limit * pages) != NumFound)
            {
                pages = pages + 1;
            }

            startPage = page;
            endPage   = page;
        }
Пример #2
0
            public static List <FacetValue> OrganizationCreateFromList(IEnumerable <Models.Facet.FacetValue> facetResults)
            {
                List <FacetValue> facets = new List <FacetValue>();

                var placeResolver  = new Service.PlaceResolver();
                var areaDictionary = placeResolver.GetAreas();
                var areas          = facetResults.Where(fy => fy.Name.Length == 4 && fy.Name != "0/21" && fy.Name != "0/22").Select(fy => fy).Distinct().OrderBy(fo => fo.Name).ToList();
                var places         = facetResults.Where(p => !p.Name.Contains("/")).Select(p => p).Distinct().OrderBy(po => po.Name).ToList();

                foreach (var place in places)
                {
                    facets.Add(new FacetValue(place));
                }

                foreach (var area in areas)
                {
                    var municipalities = facetResults.Where(k => k.Name.Length > 4 && k.Name.StartsWith(area.Name)).Select(ko => ko).OrderBy(ko => ko.Name).ToList();
                    facets.Add(new FacetValue(area, municipalities, areaDictionary));
                }

                return(facets);
            }