/// <summary> /// redirects all article urls that have an article number but no trailing title /// </summary> /// <param name="articleNumber"></param> /// <param name="prefix"></param> public void Get(int articleNumber, string prefix) { string numFormat = $"{prefix}{articleNumber:D6}"; //find the new article page IArticleSearchFilter filter = ArticleSearcher.CreateFilter(); filter.PageSize = 1; filter.Page = 1; filter.ArticleNumbers = numFormat.SingleToList(); var results = ArticleSearcher.Search(filter); if (!results.Articles.Any()) { return; } string newPath = ArticleSearch.GetArticleCustomPath(results.Articles.First()); if (!HttpContext.Current.Response.IsRequestBeingRedirected) { HttpContext.Current.Response.RedirectPermanent(newPath, true); } }
// GET: Articles public ActionResult Index([FromQuery] ArticleSearch articleSearch) { articleSearch.PageNumber = 0; var articles = _searchArticlesCommand.Execute(articleSearch); return(View(articles.Data)); }
public WMSArticleSearch(ArticleSearch wmspro) : base(s_metadata) { SetSqlString(0, wmspro.ArticleNo); SetSqlString(1, wmspro.Division); SetSqlString(2, wmspro.GPC); SetSqlString(3, wmspro.UOM); }
public bool Search(ArticleSearch search) { if (search.Tags is not null && search.Tags.Count != 0 && Tags.FirstOrDefault(t => search.Tags.Contains(t.ID)) == null) { return(false); } return(Search(search.Query)); }
public void Test_Find() { #region Arrange //Add code to create required resources #endregion Arrange var testKeyMark = TestUtils.RandomString(); IArticleConnector connector = new ArticleConnector(); var newArticle = new Article { Description = testKeyMark, Height = 60, Width = 150, Type = ArticleType.Stock, PurchasePrice = 2499.50m, FreightCost = 200, OtherCost = 210, Note = "Definitely not worth the price." }; //Add entries for (var i = 0; i < 5; i++) { connector.Create(newArticle); } //Apply base test filter var searchSettings = new ArticleSearch(); searchSettings.Description = testKeyMark; var fullCollection = connector.Find(searchSettings); Assert.AreEqual(5, fullCollection.TotalResources); Assert.AreEqual(5, fullCollection.Entities.Count); Assert.AreEqual(1, fullCollection.TotalPages); //Apply Limit searchSettings.Limit = 2; var limitedCollection = connector.Find(searchSettings); Assert.AreEqual(5, limitedCollection.TotalResources); Assert.AreEqual(2, limitedCollection.Entities.Count); Assert.AreEqual(3, limitedCollection.TotalPages); //Delete entries foreach (var entry in fullCollection.Entities) { connector.Delete(entry.ArticleNumber); } #region Delete arranged resources //Add code to delete temporary resources #endregion Delete arranged resources }
public void Process(HttpRequestArgs args) { Sitecore.Diagnostics.Log.Info("Started ArticleItemResolver", " ArticleItemResolver "); Assert.ArgumentNotNull((object)args, "args"); if (Context.Item != null || Context.Database == null || args.Url.ItemPath.Length == 0) { return; } var match = GetArticleNumberFromRequestItemPath(args.Url.ItemPath); if (string.IsNullOrEmpty(match.ArticleNumber)) { return; } //find the new article page IArticleSearchFilter filter = ArticleSearcher.CreateFilter(); filter.PageSize = 1; filter.Page = 1; filter.ArticleNumbers = match.ArticleNumber.SingleToList(); var results = ArticleSearcher.Search(filter); IArticle a = results.Articles.FirstOrDefault(); if (a == null) { return; } string urlTitle = ArticleSearch.GetCleansedArticleTitle(a); // a._Name.ToLower().Replace(" ", "-"); if (!urlTitle.Equals(match.ArticleTitle, System.StringComparison.InvariantCultureIgnoreCase)) { if (!HttpContext.Current.Response.IsRequestBeingRedirected) { HttpContext.Current.Response.RedirectPermanent(ArticleSearch.GetArticleCustomPath(a), true); } } Item i = SitecoreContext.GetItem <Item>(a._Id); if (i == null) { return; } Context.Item = i; args.Url.ItemPath = i.Paths.FullPath; Context.Request.ItemPath = i.Paths.FullPath; Sitecore.Diagnostics.Log.Info("Ended ArticleItemResolver", " ArticleItemResolver"); }
public static void ArticleAdd(ArticleSearch a) { DataFacade.ExecuteNonQuery("ArticleEdit", new ParameterValue("idArticle", 0), new ParameterValue("Title", a.Title), new ParameterValue("ReleaseGroup", a.ReleaseGroup), new ParameterValue("FileName", a.FileName), new ParameterValue("DateArticle", a.DateArticle), new ParameterValue("ReleaseUserID", a.ReleaseUserId), new ParameterValue("idArticleType", a.IDArticleType), new ParameterValue("idArticleCat", a.IDArticleCat)); }
public Result <int> Count(ArticleSearch filter) { try { var predicate = GetSearchPredicate(filter); var result = _unitOfWork.ArticleRepository.Count(predicate); return(new Result <int>(result)); } catch (Exception ex) { return(new Result <int>(ex)); } }
public Result <List <Article> > Get(ArticleSearch filter) { try { var predicate = GetSearchPredicate(filter); var result = _unitOfWork.ArticleRepository.FindByIncluding(predicate, GetSortedFunction(filter), filter.OrderDirection, filter.Page, filter.Display, p => p.Magazine, p => p.Author); return(new Result <List <Article> >(result.Distinct().ToList())); } catch (Exception ex) { return(new Result <List <Article> >(ex)); } }
public PagedResponse <ArticleDto> Execute(ArticleSearch request) { var query = Context.Articles.AsQueryable(); if (request.Title != null) { query = query.Where(a => a.Title.ToLower().Contains(request.Title.ToLower())); } if (request.Hashtag != null) { query = query.Where(a => a.ArticleHashtags.Any(ah => ah.Hashtag.Tag.ToLower().Contains(request.Hashtag.ToLower()))); } if (request.CategoryId.HasValue) { query = query.Where(a => a.ArticleCategories.Any(ac => ac.CategoryId == request.CategoryId)); } if (request.PageNumber != 0) { query = query.Skip((request.PageNumber - 1) * request.PerPage).Take(request.PerPage); } var totalCount = query.Count(); var pagesCount = (int)System.Math.Ceiling((double)totalCount / request.PerPage); return(new PagedResponse <ArticleDto> { TotalCount = totalCount, PagesCount = pagesCount, CurrentPage = request.PageNumber, Data = query.Select(a => new ArticleDto { Id = a.Id, Title = a.Title, Content = a.Content, Image = a.ImagePath, CreatedAt = a.CreatedAt, UpdatedAt = a.UpdatedAt, AuthorId = a.UserId, CategoryIds = a.ArticleCategories.Select(ac => ac.CategoryId), HashtagIds = a.ArticleHashtags.Select(ah => ah.HashtagId), Author = a.User.FirstName + " " + a.User.LastName, Comments = a.Comments.Select(c => c.Text), CategoriesForArticle = a.ArticleCategories.Select(ac => ac.Category.Name), HashtagsForArticle = a.ArticleHashtags.Select(ah => ah.Hashtag.Tag) }) }); }
private Expression <Func <Article, bool> > GetSearchPredicate(ArticleSearch filter) { var predicate = PredicateBuilder.New <Article>(true); if (filter.Keyword != null) { var dictionary = _generalService.GetAllSynonymsByName(filter.Keyword); predicate = predicate.And(p => p.Content.ToLower().Contains(filter.Keyword) || p.Title.ToLower().Contains(filter.Keyword)); if (dictionary.Count > 0) { foreach (var item in dictionary) { predicate = predicate.Or(p => p.Content.ToLower().Contains(item.Name) || p.Title.ToLower().Contains(item.Name)); } } } if (filter.Author != null) { predicate = predicate.And(p => p.Author.Name.ToLower().Contains(filter.Author)); } predicate = predicate.And(p => p.Magazine != null); if (filter.RangeTypeYear) { predicate = predicate.And(p => p.Magazine.PublishYear >= Convert.ToInt32(filter.PublishYearRange.FirstOrDefault())); } else { if (filter.PublishYearRange.Count > 0) { predicate = filter.PublishYearRange.Aggregate(predicate, (current, item) => current.And(p => p.Magazine.PublishYear == Convert.ToInt32(item))); } } if (filter.RangeTypeSection) { predicate = predicate.And(p => p.Magazine.PublishSection.Contains(filter.PublishSectionRange.FirstOrDefault())); } else { if (filter.PublishSectionRange.Count > 0) { predicate = filter.PublishSectionRange.Aggregate(predicate, (current, item) => current.And(p => p.Magazine.PublishSection.Contains(item))); } } return(predicate); }
private static Func <Article, object> GetSortedFunction(ArticleSearch filter) { if (filter == null) { return(q => q.DateCreated); } switch (filter.Order) { case 1: return(c => c.Title); default: return(q => q.DateCreated); } }
public PagedResponse <ArticlesDto> Execute(ArticleSearch search) { var query = _context.Articles.AsQueryable(); if (!string.IsNullOrEmpty(search.Subject) || !string.IsNullOrWhiteSpace(search.Subject)) { query = query.Where(x => x.Subject.ToLower().Contains(search.Subject.ToLower())); } var sb = query.Select(x => x.Id); var categories = _context.ArticleCategories.Where(x => sb.Contains(x.ArticlesId)); var skipCount = search.PerPage * (search.Page - 1); var response = new PagedResponse <ArticlesDto> { CurrentPage = search.Page, ItemsPerPage = search.PerPage, TotalCount = query.Count(), Items = query.Skip(skipCount).Take(search.PerPage).Select(x => new ArticlesDto { Id = x.Id, Subject = x.Subject, Text = x.Text, PicturesId = x.PicturesId, UserId = x.UserId, User = new UserDto { FirstName = x.User.FirstName, LastName = x.User.LastName, Username = x.User.Username }, Pictures = new PicturesDto { src = x.Pictures.src // alt = x.Pictures.alt }, Categories = categories.Where(d => d.ArticlesId == x.Id).Select(c => new CategoryDto { Id = c.CategoryId, Name = c.Categories.Name }).ToList() }) }; return(response); }
public IActionResult List(ArticleSearch search) { if (search.Query is null) { search.Query = ""; } ViewBag.Search = search; if (search.Query == "" && search.Tags.Count == 0) { return(View(_ArticleRepo.GetAll())); } return(View(_ArticleRepo.GetAll().Where(p => p.Search(search)).ToList())); }
public IActionResult Index([FromQuery] ArticleSearch articleSearch, CategorySearch categorySearch) { articleSearch.PageNumber = 0; var articles = _searchArticlesCommand.Execute(articleSearch); categorySearch.PageNumber = 0; var categories = _searchCategoriesCommand.Execute(categorySearch); var viewModel = new HomeViewModel { Articles = articles.Data, Categories = categories.Data }; return(View(viewModel)); }
/// <summary> /// redirects all article urls starting with /article /// </summary> /// <param name="path"></param> public void Get(string year, string month, string day, string title) { IArticle a = SitecoreContext.GetCurrentItem <IArticle>(); if (a == null) { return; } string newPath = ArticleSearch.GetArticleCustomPath(a); if (!HttpContext.Current.Response.IsRequestBeingRedirected) { HttpContext.Current.Response.RedirectPermanent(newPath, true); } }
private void SearchCommandAction() { if (!ContainErrors()) { ArticleSearch articleSearch = new ArticleSearch(); articleSearch.Keyword = keyword; if (IsMenChecked) { articleSearch.Gender = Gender.Male; } else { articleSearch.Gender = Gender.Female; } //Messenger.Default.Send(articleSearch); _navigationService.NavigateTo("ArticleResultPage", articleSearch); } }
public IActionResult Search(ArticleSearch filter) { var res = _articleService.Get(filter); if (!res.IsOk()) { return(StatusCode((int)res.Status, res.Message)); } List <ArticleSerchItemVM> vmList = Mapper.Map <List <Article>, List <ArticleSerchItemVM> >(res.Data); var searchResult = new ArticleSerchResultVM { Result = vmList }; //Get result count var count = _articleService.Count(filter); if (count.IsOk()) { searchResult.FoundItem = count.Data; } return(PartialView("Partials/_SearchResult", searchResult)); }
public static List <Article> ArticleInbox(ArticleSearch article) { var paramList = new List <ParameterValue> { new ParameterValue("UserID", article.UserID), }; var dataTable = DataFacade.GetDataTable("ArticleInbox", paramList.ToArray()); var returnList = (from DataRow r in dataTable.Rows select new Article { IdArticle = r["IdArticle"].ToString(), Title = r["Title"].ToString(), DateArticle = Convert.ToDateTime(r["DateArticle"].ToString()), FileName = r["FileName"].ToString(), }).ToList(); if (returnList.Count != 0) { return(returnList); } return(null); }
/// <summary> /// 文章列表 /// </summary> /// <returns></returns> public IPagedList <ArticleListDto> GetArticleList(ArticleSearch search) { var query = _unitOfWork.GetRepository <CmsArticle>().Table; if (search.IsSetTop.HasValue) { query = query.Where(s => (s.IsSetTop ?? false) == search.IsSetTop); } if (search.IsRelease.HasValue) { query = query.Where(s => s.IsRelease == search.IsRelease); } if (!string.IsNullOrEmpty(search.Keyword)) { query = query.Where(s => s.ArtTitle.Contains(search.Keyword) || s.ArtContent.Contains(search.Keyword)); } var result = query .OrderByDescending(s => s.IsSetTop) .ThenByDescending(s => s.CreatedAt) .ProjectTo <ArticleListDto>().ToPagedList(search); return(result); }
// GET: Home public ActionResult Index(ArticleSearch search) { var x = _userInfoRepository.GetUserInfos(); ViewBag.users = x.First().UserName; var result = _articleRepository.GetArticles(); result = result.Where(i => i.IsShow); if (!string.IsNullOrWhiteSpace(search.KeyWord)) { result = result.Where(i => i.Title.Contains(search.KeyWord)); } if (!string.IsNullOrWhiteSpace(search.TagName)) { result = result.Where(i => i.Tags.Any(a => a.CatName == search.TagName)); } var pageData = result.OrderByDescending(a => a.Id).Select(i => new ArticleListDto() { Id = i.Id, Img = i.Img, CollectTime = i.CollectTime, CollectUser = i.CollectUser, CategoryId = i.CategoryId, //Pviews = i.Pviews, Title = i.Title, Summary = i.Summary, Tags = i.Tags, }).ToPagedList(search.Page, search.Rows); if (Request.IsAjaxRequest()) { return(PartialView("_ArticleList", pageData)); } return(View(pageData)); }
public async Task Test_Uri_Escaping_Special_Characters() { var article = await FortnoxClient.ArticleConnector.CreateAsync(new Article() { ArticleNumber = "TestArticle_+-", Description = "X + Y != Z && X - Y == Z" }); var retrievedArticle = await FortnoxClient.ArticleConnector.GetAsync(article.ArticleNumber); Assert.AreEqual("TestArticle_+-", retrievedArticle.ArticleNumber); var query = new ArticleSearch() { Description = "X + Y != Z && X - Y == Z" // some characters like '<' or '>' in query are not accepted by the server even if escaped }; var matches = await FortnoxClient.ArticleConnector.FindAsync(query); Assert.AreEqual(1, matches.Entities.Count); Assert.AreEqual(article.ArticleNumber, matches.Entities.First().ArticleNumber); await FortnoxClient.ArticleConnector.DeleteAsync(article.ArticleNumber); }
public async Task <IActionResult> GetList(int page, int rows, ArticleSearch where) { var data = await _service.GetListAsync(page, rows, where, null); return(PagerData(data.items, page, rows, data.count)); }
public IEnumerable <Article> Search(ArticleSearch param) { return(ArticleDao.Search(param)); }
public List <Article> ArticleInbox(ArticleSearch param) { return(ArticleDao.ArticleInbox(param)); }
public void ArticleAdd(ArticleSearch articles) { ArticleDao.ArticleAdd(articles); }
public static IEnumerable <Article> Search(ArticleSearch article) { if ((article.StartYear == article.EndYear) && (article.StartMonth == article.EndMonth)) { if (article.EndMonth == 12) { article.EndYear++; article.EndMonth = 1; } else { article.EndMonth++; } } var paramList = new List <ParameterValue> { new ParameterValue("UserID", article.UserID), new ParameterValue("Archive", article.Archive ? 1 : 0), new ParameterValue("DeAct", article.DeAct ? 1 : 0) }; if (article.IDArticleCat != null) { paramList.Add(new ParameterValue("idArticleCat", article.IDArticleCat)); } if (article.IDArticleType != null) { paramList.Add(new ParameterValue("idArticleType", article.IDArticleType)); } if (article.StartYear != null) { paramList.Add(new ParameterValue("StartYear", article.StartYear)); } if (article.StartMonth != null) { paramList.Add(new ParameterValue("StartMonth", article.StartMonth)); } if (article.EndYear != null) { paramList.Add(new ParameterValue("EndYear", article.EndYear)); } if (article.EndMonth != null) { paramList.Add(new ParameterValue("EndMonth", article.EndMonth)); } if (!String.IsNullOrEmpty(article.Title)) { paramList.Add(new ParameterValue("Title", article.Title)); } var dataTable = DataFacade.GetDataTable("ArticleSearch", paramList.ToArray()); return((from DataRow r in dataTable.Rows select new Article { IdArticle = r["IdArticle"].ToString(), Archive = Convert.ToBoolean(r["Archive"].ToString()), Active = Convert.ToBoolean(r["Active"].ToString()), Title = r["Title"].ToString(), DateArticle = Convert.ToDateTime(r["DateArticle"].ToString()), FileName = r["FileName"].ToString(), IdArticleCat = r["IdArticleCat"].ToString(), ReleaseUserId = r["ReleaseUserId"].ToString() }).ToList()); }
public void Process(HttpRequestArgs args) { Sitecore.Diagnostics.Log.Info("Started LegacyRedirectResolver", " LegacyRedirectResolver "); Models.Informa.Models.sitecore.templates.User_Defined.Configuration.ISite_Root siteRoot = null; Logger.SitecoreDebug($"LegacyRedirectResolver started"); Assert.ArgumentNotNull(args, "args"); if ((Context.Item != null) || Context.Site.Name != "LegacyRedirect" || excludePaths.Any(x => args.LocalPath.StartsWith(x))) { return; } try { var resultsPmbi = GetResultsByPath(args.Url.FilePath); var article = resultsPmbi?.Articles?.FirstOrDefault(); if (article == null) { // Does the url end in a 3-8 digit number? var r = new Regex(@"^.*-(\d{3,8})$"); var match = r.Match(args.Url.ItemPath); if (match.Success && match.Groups.Count >= 2) { var resultseScenic = GetResultsByLegacyID(match.Groups[1].Value); article = resultseScenic?.Articles?.FirstOrDefault(); } } if (article == null) { Logger.SitecoreDebug("LegacyRedirectResolver article not found"); return; } else { Logger.SitecoreDebug($"LegacyRedirectResolver article found: {article._Path}"); } var newPath = ArticleSearch.GetArticleCustomPath(article); Logger.SitecoreDebug($"LegacyRedirectResolver article path: {newPath}"); siteRoot = GlobalService.GetSiteRootAncestor(article._Id); if (siteRoot == null) { Logger.SitecoreDebug($"LegacyRedirectResolver didn't find site root for: {article._Path}"); return; } else { Logger.SitecoreDebug($"LegacyRedirectResolver did find site root for: {article._Path}"); } var siteInfo = Factory.GetSiteInfoList().FirstOrDefault(a => a.RootPath.Equals(siteRoot._Path)); if (siteInfo == null) { Logger.SitecoreDebug($"LegacyRedirectResolver couldn't find site info match for: {siteRoot._Path}"); return; } else { Logger.SitecoreDebug($"LegacyRedirectResolver found site info match: {siteInfo.Name}"); } var host = siteInfo.HostName; var protocol = Settings.GetSetting("Site.Protocol", "https"); Logger.SitecoreDebug($"LegacyRedirectResolver article url: {protocol}://{host}{newPath}"); args.Context.Response.Status = "301 Moved Permanently"; args.Context.Response.AddHeader("Location", $"{protocol}://{host}{newPath}"); args.Context.Response.End(); } catch (ThreadAbortException) { //This is a valid error resulting from an aborted redirect. //No need to log. } catch (Exception ex) { Logger.SitecoreError("Could not get site configuration to serve a 404 page for the request " + args.LocalPath, ex, this); } Sitecore.Diagnostics.Log.Info("Ended LegacyRedirectResolver", " LegacyRedirectResolver"); }
public IViewComponentResult Invoke(ArticleSearch search) { ViewBag.Tags = _TagRepo.GetAll(); return(View(search)); }
public IActionResult Get( [FromQuery] ArticleSearch search, [FromServices] IGetAllArticlesQuery query) { return(Ok(_executor.ExecuteQuery(query, search))); }