Example #1
0
        public IList <Template> GetManualTemplates()
        {
            var res            = new List <Template>();
            var searchCriteria = _templateSearcher.CreateSearchCriteria(Examine.SearchCriteria.BooleanOperation.Or);
            var searchResult   = _templateSearcher.Search(searchCriteria.NodeTypeAlias("ChalmersILLTemplate").Compile());

            foreach (var template in searchResult)
            {
                var description = template.Fields.ContainsKey("Description") ? template.Fields["Description"] : "";
                var data        = template.Fields.ContainsKey("Data") ? template.Fields["Data"] : "";
                var acquisition = template.Fields.ContainsKey("Acquisition") ? Convert.ToBoolean(Convert.ToInt32(template.Fields["Acquisition"])) : false;
                if (template.Fields.ContainsKey("Automatic") && !Convert.ToBoolean(Convert.ToInt32(template.Fields["Automatic"])))
                {
                    res.Add(new Template
                    {
                        Id          = template.Id,
                        Description = description,
                        Data        = data,
                        Acquisition = acquisition
                    });
                }
            }
            res.Sort((x1, x2) => String.Compare(x1.Description, x2.Description, true, new CultureInfo("sv-se")));
            return(res);
        }
        /// <summary>
        /// Reads a job by its id.
        /// </summary>
        /// <param name="jobId">The job identifier.</param>
        /// <returns></returns>
        public Task <Job> ReadJob(string jobId)
        {
            var results = _searcher.Search(_searcher.CreateSearchCriteria().Field("id", jobId).Compile());
            var jobs    = BuildJobsFromExamineResults(results);

            if (jobs.Count > 0)
            {
                return(Task.FromResult(jobs[0]));
            }
            else
            {
                return(Task.FromResult(new Job()));
            }
        }
Example #3
0
        void Initialize()
        {
            if (string.IsNullOrEmpty(SearchTerm))
            {
                SearchResults = new List <SearchResult>();
                return;
            }

            // Set indexed fields
            IndexedFields = _indexer.IndexerData.UserFields.Select(f => f.Name).ToList();

            var searchCriteria = _searcher.CreateSearchCriteria(BooleanOperation.And).Field("robotsIndex", "0").Compile();

            try
            {
                ISearchCriteria query         = searchCriteria.RawQuery(CreateRawQuery());
                var             searchResults = _searcher.Search(query);

                // Set total result-count
                TotalResults = searchResults.TotalItemCount;

                // Skip, take and order
                var resultCollection = searchResults.OrderByDescending(x => x.Score).Skip(_skip).Take(_take);

                SearchResults = resultCollection.ToList();
            }
            catch (Exception e) { }
        }
        /// <summary>
        /// Get a list of expiring pages expiring soon, or due never to expire
        /// </summary>
        /// <param name="inTheNextHowManyDays">
        /// How many days to look forward
        /// </param>
        public IEnumerable <UmbracoPage> GetExpiringPages(int inTheNextHowManyDays)
        {
            // if the node is expiring within the declared period, add it to the list
            // if the node has a null expire date and is published, also add it to the list as it is a never expiring page
            // (Note: This should be the External index, so all results are published nodes)
            var query = _examineSearcher.CreateSearchCriteria(Examine.SearchCriteria.BooleanOperation.Or);

            query.Range("expireDate", DateTime.Today, DateTime.Today.AddDays(inTheNextHowManyDays)).Or().Field("expireDate", "99991231235959");

            // Sorting using Examine would be faster but was not working, so sort the results in .NET
            var expiringNodes = _examineSearcher.Search(query).OrderBy(result => result.Fields["expireDate"].ToString());

            var pages = new List <UmbracoPage>();

            foreach (var expiringNode in expiringNodes)
            {
                var page = new UmbracoPage
                {
                    PageId   = Int32.Parse(expiringNode.Fields["__NodeId"], CultureInfo.InvariantCulture),
                    PageName = expiringNode.Fields["nodeName"],
                    PagePath = expiringNode.Fields["path"]
                };
                page.PageUrl = _umbracoHelper.NiceUrl(page.PageId);
                if (expiringNode.Fields["expireDate"] != "99991231235959")
                {
                    var expireDate = expiringNode.Fields["expireDate"].ToString();
                    page.ExpiryDate = new DateTime(Int32.Parse(expireDate.Substring(0, 4)), Int32.Parse(expireDate.Substring(4, 2)), Int32.Parse(expireDate.Substring(6, 2)), Int32.Parse(expireDate.Substring(8, 2)), Int32.Parse(expireDate.Substring(10, 2)), Int32.Parse(expireDate.Substring(12, 2)));
                }
                pages.Add(page);
            }

            return(pages);
        }
Example #5
0
        private IList <JobsLookupValue> ReadLookupValues(string group)
        {
            var lookups      = new List <JobsLookupValue>() as IList <JobsLookupValue>;
            var examineQuery = _searcher.CreateSearchCriteria().Field("group", group).Compile();

            examineQuery.OrderBy("text");
            var results = _searcher.Search(examineQuery);

            foreach (var result in results)
            {
                var lookup = new JobsLookupValue()
                {
                    LookupValueId = result.Fields.ContainsKey("id") ? result["id"] : String.Empty,
                    Text          = result.Fields.ContainsKey("text") ? result["text"] : String.Empty,
                    Count         = result.Fields.ContainsKey("count") ? Int32.Parse(result["count"], CultureInfo.InvariantCulture) : 0
                };
                lookups.Add(lookup);
            }
            return(lookups);
        }
        public IEnumerable <SearchResult> Search(string selectedAnalyzer, string query, string defaultField, out string parsedQuery)
        {
            var queryParser = CreateQueryParser(selectedAnalyzer, defaultField);
            var q           = queryParser.Parse(query);

            parsedQuery = q.ToString();

            var criteria  = _searcher.CreateSearchCriteria();
            var filter    = criteria.RawQuery(parsedQuery);
            var results   = _searcher.Search(filter);
            var fieldKeys = new List <string>();

            for (var i = 0; i < results.Count(); i++)
            {
                var searchResult = results.ElementAt(i);
                var docId        = searchResult.DocId;

                searchResult.Fields.Add("docId", docId.ToString());
                searchResult.Fields.Add("score", searchResult.Score.ToString());
                fieldKeys.AddRange(searchResult.Fields.Select(field => field.Key).Except(fieldKeys));
            }

            foreach (var searchResult in results)
            {
                foreach (var fieldKey in fieldKeys)
                {
                    var hasKey = searchResult.Fields.Keys.Contains(fieldKey);
                    if (!hasKey)
                    {
                        searchResult.Fields.Add(fieldKey, "NULL");
                    }
                }
            }

            return(results.Skip(0));
        }
        public RightsOfWayModificationsViewModel BuildModel()
        {
            var model = new RightsOfWayModificationsViewModel();

            var criteria = _searcher.CreateSearchCriteria(IndexTypes.Content);

            criteria.NodeTypeAlias("RightsOfWayModification");
            criteria.ParentId(_umbracoParentNodeId);
            if (!String.IsNullOrEmpty(_searchTerm))
            {
                criteria.Field("RightsOfWayModificationSearch", _searchTerm);
            }
            if (!_includeCompleted)
            {
                criteria.Field("RightsOfWayModificationComplete", "false");
            }
            if (_sortResults)
            {
                switch (_sortOrder)
                {
                case RightsOfWayModificationsSortOrder.ReferenceAscending:
                    criteria.OrderBy("nodeName");
                    break;

                case RightsOfWayModificationsSortOrder.ReferenceDescending:
                    criteria.OrderByDescending("nodeName");
                    break;

                case RightsOfWayModificationsSortOrder.ParishAscending:
                    criteria.OrderBy("Parish");
                    break;

                case RightsOfWayModificationsSortOrder.ParishDescending:
                    criteria.OrderByDescending("Parish");
                    break;

                case RightsOfWayModificationsSortOrder.DateReceivedAscending:
                    criteria.OrderByDescending("DateReceived");
                    break;

                case RightsOfWayModificationsSortOrder.StatusAscending:
                    criteria.OrderBy("applicationStatus");
                    break;

                case RightsOfWayModificationsSortOrder.StatusDescending:
                    criteria.OrderByDescending("applicationStatus");
                    break;

                default:
                    criteria.OrderBy("DateReceived");
                    break;
                }
            }

            var results = _searcher.Search(criteria);

            model.TotalModificationOrderApplications = results.Count();
            IEnumerable <SearchResult> selectedResults;

            if (_pageResults)
            {
                selectedResults = results.Skip((_currentPage - 1) * _pageSize).Take(_pageSize);
            }
            else
            {
                selectedResults = results;
            }

            foreach (var result in selectedResults)
            {
                var application = new RightsOfWayModificationViewModel
                {
                    Reference = result.Fields["nodeName"],
                    PageUrl   = new Uri(_baseUrl, result.Fields["urlName"])
                };

                if (result.Fields.Keys.Contains("Documents") && _umbracoHelper != null)
                {
                    var nodeIds          = result.Fields["Documents"].Split(',');
                    var multiMediaPicker = Enumerable.Empty <IPublishedContent>();
                    if (nodeIds.Length > 0)
                    {
                        multiMediaPicker = _umbracoHelper.TypedMedia(nodeIds).Where(x => x != null);
                    }

                    foreach (var media in multiMediaPicker)
                    {
                        application.ApplicationDocuments.Add(new HtmlLink()
                        {
                            Text = media.Name, Url = new Uri(_baseUrl, media.Url)
                        });
                    }
                }

                var nameConverter    = new PersonNamePropertyValueConverter();
                var addressConverter = new UkLocationPropertyValueConverter();
                for (var i = 1; i <= 5; i++)
                {
                    if (result.Fields.Keys.Contains($"OrganisationalOwner{i}"))
                    {
                        var org = result.Fields[$"OrganisationalOwner{i}"];
                        if (!String.IsNullOrEmpty(org))
                        {
                            application.OrganisationalOwners.Add(org);
                        }
                    }

                    if (result.Fields.Keys.Contains($"Location{i}"))
                    {
                        var addressInfo = addressConverter.ConvertDataToSource(null, result.Fields[$"Location{i}"], false) as AddressInfo;
                        if (addressInfo != null && addressInfo.BS7666Address.HasAddress() && addressInfo.BS7666Address.ToString() != addressInfo.BS7666Address.AdministrativeArea)
                        {
                            if (addressInfo.GeoCoordinate.Latitude == 0 && addressInfo.GeoCoordinate.Longitude == 0)
                            {
                                addressInfo.GeoCoordinate = null;
                            }
                            application.Addresses.Add(addressInfo);
                        }
                    }
                }

                if (result.Fields.Keys.Contains("Parish"))
                {
                    var parishData = result.Fields["Parish"];
                    if (!String.IsNullOrEmpty(parishData))
                    {
                        var parishes = parishData.Split(',');
                        foreach (var parish in parishes)
                        {
                            application.Parishes.Add(parish);
                        }
                    }
                }

                if (result.Fields.Keys.Contains("nearestTownOrVillage"))
                {
                    application.NearestTownOrVillage = result.Fields["nearestTownOrVillage"];
                }

                if (result.Fields.Keys.Contains("statusClaimed"))
                {
                    application.StatusClaimed = result.Fields["statusClaimed"];
                }

                if (result.Fields.Keys.Contains("GridReference"))
                {
                    application.OrdnanceSurveyGridReference = result.Fields["GridReference"];
                }

                if (result.Fields.Keys.Contains("pageDescription"))
                {
                    application.DescriptionOfRoute = result.Fields["pageDescription"];
                }

                if (result.Fields.Keys.Contains("DateReceived"))
                {
                    application.DateReceived = new DateTime(Int32.Parse(result.Fields["DateReceived"].Substring(0, 4)), Int32.Parse(result.Fields["DateReceived"].Substring(4, 2)), Int32.Parse(result.Fields["DateReceived"].Substring(6, 2)));
                }

                if (result.Fields.Keys.Contains("nameOfApplicant"))
                {
                    application.IndividualApplicant = nameConverter.ConvertDataToSource(null, result.Fields["nameOfApplicant"], false) as PersonName;
                }

                if (result.Fields.Keys.Contains("nameOfApplicantOrganisation"))
                {
                    application.OrganisationalApplicant = result.Fields["nameOfApplicantOrganisation"];
                }

                if (result.Fields.Keys.Contains("councilOfficerAssigned"))
                {
                    application.CouncilOfficerAssigned = nameConverter.ConvertDataToSource(null, result.Fields["councilOfficerAssigned"], false) as PersonName;
                }

                if (result.Fields.Keys.Contains("applicationStatus"))
                {
                    application.ApplicationStatus = result.Fields["applicationStatus"];
                }

                if (result.Fields.Keys.Contains("decision"))
                {
                    application.Decision = result.Fields["decision"];
                }

                if (result.Fields.Keys.Contains("DateDetermined"))
                {
                    application.DateDetermined = new DateTime(Int32.Parse(result.Fields["DateDetermined"].Substring(0, 4)), Int32.Parse(result.Fields["DateDetermined"].Substring(4, 2)), Int32.Parse(result.Fields["DateDetermined"].Substring(6, 2)));
                }

                if (result.Fields.Keys.Contains("orderConfirmedDate"))
                {
                    application.DateModificationOrderConfirmed = new DateTime(Int32.Parse(result.Fields["orderConfirmedDate"].Substring(0, 4)), Int32.Parse(result.Fields["orderConfirmedDate"].Substring(4, 2)), Int32.Parse(result.Fields["orderConfirmedDate"].Substring(6, 2)));
                }

                model.ModificationOrderApplications.Add(application);
            }

            return(model);
        }
        public RightsOfWayDepositsViewModel BuildModel()
        {
            var model = new RightsOfWayDepositsViewModel();

            var criteria = _searcher.CreateSearchCriteria(IndexTypes.Content);

            criteria.NodeTypeAlias("RightsOfWayDeposit");
            criteria.ParentId(_umbracoParentNodeId);
            if (!String.IsNullOrEmpty(_searchTerm))
            {
                criteria.Field("RightsOfWayDepositSearch", _searchTerm);
            }

            if (_sortResults)
            {
                switch (_sortOrder)
                {
                case RightsOfWayDepositsSortOrder.ReferenceAscending:
                    criteria.OrderBy("nodeName");
                    break;

                case RightsOfWayDepositsSortOrder.ReferenceDescending:
                    criteria.OrderByDescending("nodeName");
                    break;

                case RightsOfWayDepositsSortOrder.ParishAscending:
                    criteria.OrderBy("Parish_Content");
                    break;

                case RightsOfWayDepositsSortOrder.ParishDescending:
                    criteria.OrderByDescending("Parish_Content");
                    break;

                case RightsOfWayDepositsSortOrder.DateDepositedAscending:
                    criteria.OrderBy("DateDeposited_Content");
                    break;

                case RightsOfWayDepositsSortOrder.DateExpiresAscending:
                    criteria.OrderBy("DateExpires_Content");
                    break;

                case RightsOfWayDepositsSortOrder.DateExpiresDescending:
                    criteria.OrderByDescending("DateExpires_Content");
                    break;

                default:
                    criteria.OrderByDescending("DateDeposited_Content");
                    break;
                }
            }

            var results = _searcher.Search(criteria);

            model.TotalDeposits = results.Count();
            IEnumerable <SearchResult> selectedResults;

            if (_pageResults)
            {
                selectedResults = results.Skip((_currentPage - 1) * _pageSize).Take(_pageSize);
            }
            else
            {
                selectedResults = results;
            }

            foreach (var result in selectedResults)
            {
                var deposit = new RightsOfWayDepositViewModel();
                deposit.Reference = result.Fields["nodeName"];
                deposit.PageUrl   = new Uri(_baseUrl, result.Fields["urlName"]);

                if (result.Fields.Keys.Contains("DepositDocument_Content") && _umbracoHelper != null)
                {
                    var nodeIds          = result.Fields["DepositDocument_Content"].Split(',');
                    var multiMediaPicker = Enumerable.Empty <IPublishedContent>();
                    if (nodeIds.Length > 0)
                    {
                        multiMediaPicker = _umbracoHelper.TypedMedia(nodeIds).Where(x => x != null);
                    }

                    foreach (var media in multiMediaPicker)
                    {
                        deposit.DepositDocuments.Add(new HtmlLink()
                        {
                            Text = media.Name, Url = new Uri(_baseUrl, media.Url)
                        });
                    }
                }

                var nameConverter    = new PersonNamePropertyValueConverter();
                var addressConverter = new UkLocationPropertyValueConverter();
                for (var i = 1; i <= 5; i++)
                {
                    if (result.Fields.Keys.Contains($"Owner{i}_Content"))
                    {
                        var owner = nameConverter.ConvertDataToSource(null, result.Fields[$"Owner{i}_Content"], false) as PersonName;
                        if (owner != null)
                        {
                            deposit.IndividualOwners.Add(owner);
                        }
                    }

                    if (result.Fields.Keys.Contains($"OrganisationalOwner{i}_Content"))
                    {
                        var org = result.Fields[$"OrganisationalOwner{i}_Content"];
                        if (!String.IsNullOrEmpty(org))
                        {
                            deposit.OrganisationalOwners.Add(org);
                        }
                    }

                    if (result.Fields.Keys.Contains($"Location{((i > 1) ? i.ToString(CultureInfo.InvariantCulture) : String.Empty)}_Content"))
                    {
                        var addressInfo = addressConverter.ConvertDataToSource(null, result.Fields[$"Location{((i > 1) ? i.ToString(CultureInfo.InvariantCulture) : String.Empty)}_Content"], false) as AddressInfo;
                        if (addressInfo != null && addressInfo.BS7666Address.HasAddress() && addressInfo.BS7666Address.ToString() != addressInfo.BS7666Address.AdministrativeArea)
                        {
                            if (addressInfo.GeoCoordinate.Latitude == 0 && addressInfo.GeoCoordinate.Longitude == 0)
                            {
                                addressInfo.GeoCoordinate = null;
                            }
                            deposit.Addresses.Add(addressInfo);
                        }
                    }
                }

                if (result.Fields.Keys.Contains("Parish_Content"))
                {
                    var parishData = result.Fields["Parish_Content"];
                    if (!String.IsNullOrEmpty(parishData))
                    {
                        var parishes = parishData.Split(',');
                        foreach (var parish in parishes)
                        {
                            deposit.Parishes.Add(parish);
                        }
                    }
                }

                if (result.Fields.Keys.Contains("GridReference_Content"))
                {
                    deposit.OrdnanceSurveyGridReference = result.Fields["GridReference_Content"];
                }

                if (result.Fields.Keys.Contains("pageDescription_Content"))
                {
                    deposit.Description = result.Fields["pageDescription_Content"];
                }

                if (result.Fields.Keys.Contains("DateDeposited_Content"))
                {
                    deposit.DateDeposited = new DateTime(Int32.Parse(result.Fields["DateDeposited_Content"].Substring(0, 4)), Int32.Parse(result.Fields["DateDeposited_Content"].Substring(4, 2)), Int32.Parse(result.Fields["DateDeposited_Content"].Substring(6, 2)));
                }
                if (result.Fields.Keys.Contains("DateExpires_Content"))
                {
                    deposit.DateExpires = new DateTime(Int32.Parse(result.Fields["DateExpires_Content"].Substring(0, 4)), Int32.Parse(result.Fields["DateExpires_Content"].Substring(4, 2)), Int32.Parse(result.Fields["DateExpires_Content"].Substring(6, 2)));
                }
                model.Deposits.Add(deposit);
            }

            return(model);
        }