Beispiel #1
0
        private void InitializeColumns(VwbQuery query)
        {
            Columns = query.ColumnKeysInOrder != null
                                                                                                                        ? ColumnFactory.GetColumns(query.ColumnKeysInOrder).ToList()
                                                                                                                        : new List <IVwbColumn>();

            _articleCheckboxes   = ColumnFactory.GetArticleCheckboxes();
            _articleNumberColumn = ColumnFactory.GetArticleNumberColumn();
            _titleColumn         = ColumnFactory.GetTitleColumn();
            Columns.InsertRange(0, new[] { _articleCheckboxes, _articleNumberColumn, _titleColumn });
        }
Beispiel #2
0
        public ReportBuilder(Page page, VwbQuery query)
        {
            _page  = page;
            _query = query.Clone();
            IEnumerable <string> immutableColKeys = ColumnFactory.ImmutableColumns.Select(i => i.Key());

            if (_query.SortColumnKey != null && !_query.ColumnKeysInOrder.Contains(_query.SortColumnKey) &&
                !immutableColKeys.Contains(_query.SortColumnKey))
            {
                _query.SortColumnKey = null;
            }
            if (string.IsNullOrEmpty(_query.SortColumnKey))
            {             //if no sort defined, sort by article number
                _query.SortColumnKey = ColumnFactory.GetArticleNumberColumn().Key();
            }
        }
Beispiel #3
0
 private string GetUrlForQuery(VwbQuery query)
 {
     return(_page.Request.ServerVariables["URL"] + "?" + query.GetQueryString());
 }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="query"></param>
        /// <returns>Sorted list of ArticleItemProxies based on query</returns>
        public List <ArticleItemWrapper> RunSearch(VwbQuery query)
        {
            // var param = new ArticleSearchParam();
            //param.IncludeSidebarArticles();
            List <ArticleItemWrapper> articles;

            using (new Sitecore.SecurityModel.SecurityDisabler())
            {
                string searchPageId = Constants.VWBSearchPageId;
                string hostName     = Factory.GetSiteInfo("website")?.HostName ?? WebUtil.GetHostName();
                string url          = string.Format("{0}://{1}/api/informasearch?pId={2}&sortBy=plannedpublishdate&sortOrder=desc", HttpContext.Current.Request.Url.Scheme, hostName, searchPageId);

                if (query.InProgressValue)
                {
                    url += "&inprogress=1";
                }

                DateTime startDate = (query.StartDate != null)
                                                                                ? query.StartDate.Value
                                                                                : DateTime.Now.AddDays(-1).Date;//From the begining of the day  before

                DateTime endDate = (query.EndDate != null)
                                                ? query.EndDate.Value
                                                : DateTime.Now.Date.AddDays(31).AddSeconds(-1);//till the end of 30 days ahead

                url += "&plannedpublishdate=" + startDate.ToString("MM/dd/yyyy");
                url += ";" + endDate.ToString("MM/dd/yyyy");
                if (string.IsNullOrEmpty(query.PublicationCodes) == false)
                {
                    url += "&SearchPublicationTitle=" + query.PublicationCodes;
                }

                var client  = new WebClient();
                var content = client.DownloadString(url);

                var results = JsonConvert.DeserializeObject <SearchResults>(content);

                var resultItems = new List <ArticleItem>();

                Database masterDb = Factory.GetDatabase("master");

                foreach (var searchResult in results.results)
                {
                    var theItem = (ArticleItem)masterDb.GetItem(searchResult.ItemId);

                    if (theItem == null)
                    {
                        continue;
                    }

                    //Manually filtering for time
                    IArticle article = theItem.InnerItem.GlassCast <IArticle>(inferType: true);

                    if (article.Planned_Publish_Date.Ticks >= startDate.Ticks &&
                        article.Planned_Publish_Date.Ticks <= endDate.Ticks)
                    {
                        resultItems.Add(theItem);
                    }
                }

                articles = ArticleItemWrapper.GetArticleItemProxies(resultItems).ToList();
            }

            if (query.SortColumnKey != null && ColumnFactory.GetColumn(query.SortColumnKey) != null)
            {
                articles.Sort(ColumnFactory.GetColumn(query.SortColumnKey));
            }

            if (query.SortColumnKey == ColumnFactory.GetArticleNumberColumn().Key())
            {
                articles.Sort(ColumnFactory.GetArticleNumberColumn());
            }

            if (query.SortColumnKey == ColumnFactory.GetTitleColumn().Key())
            {
                articles.Sort(ColumnFactory.GetTitleColumn());
            }

            if (query.Descending)
            {
                articles.Reverse();
            }

            if (query.NumResultsValue != null)
            {
                return(articles.GetRange(0, Math.Min(articles.Count, (int)query.NumResultsValue)));
            }

            return(articles);
        }