Esempio n. 1
0
        public List <ArticleEntity> GetList(SearchArticle search)
        {
            string storeName = "FE_News_GetList";
            List <ArticleEntity> lstObject = new List <ArticleEntity>();

            try
            {
                using (IDbContext context = Context())
                {
                    lstObject = context.StoredProcedure(storeName)
                                .Parameter("CateId", search.CateId, DataTypes.Int32)
                                .Parameter("Keyword", search.TextSearch, DataTypes.String)
                                .Parameter("OrderBy", search.OrderBy, DataTypes.Int32)
                                .Parameter("PageIndex", search.PageIndex, DataTypes.Int32)
                                .Parameter("PageSize", search.PageSize, DataTypes.Int32)
                                .QueryMany <ArticleEntity>();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("{0} => {1}", storeName, ex));
            }

            return(lstObject);
        }
Esempio n. 2
0
        public async Task <IEnumerable <ArticleDTO> > SearchAsync(SearchArticle searchParams)
        {
            var liste = await _repo.SearchAsync(searchParams);

            var rtn = MapArticleDTO.MapDataToDTO(liste);

            return(rtn);
        }
Esempio n. 3
0
        public string SearchAndPaging(string strQuery, string index)
        {
            string result = string.Empty;

            try
            {
                List <SearchArticle>            searchArticleList = new List <SearchArticle>();
                PSCPortal.CMS.ArticleCollection ArticleList       = ArticleCollection.GetArticleCollectionPublish();
                string         nameSub       = Libs.Ultility.GetSubDomain() == string.Empty ? "HomePage" : Libs.Ultility.GetSubDomain();
                SubDomain      subDomain     = PSCPortal.Engine.SubDomain.GetSubByName(nameSub);
                PageCollection pagesBelongTo = subDomain.GetPagesBelongTo();
                string         strId         = string.Empty;
                foreach (var page in pagesBelongTo)
                {
                    foreach (var ar in ArticleList.Where(ar => ar.PageId == page.Id))
                    {
                        strId += ar.Id + " OR ";
                    }
                    if (strId.Length > 0)
                    {
                        strId = strId.Remove(strId.Length - 3, 3);
                    }
                }
                int    pageIndex = Int32.Parse(index);
                string strSearch = " ArticleDetail:(" + strQuery + ") AND ArticleId:" + "( " + strId + " )";
                Lucene.Net.Index.IndexReader        reader           = Lucene.Net.Index.IndexReader.Open(Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["IndexingArticle"]));
                Lucene.Net.QueryParsers.QueryParser parser           = new Lucene.Net.QueryParsers.QueryParser("ArticleDetail", new Lucene.Net.Analysis.Standard.StandardAnalyzer());
                Lucene.Net.Search.Query             query            = parser.Parse(strSearch);
                Lucene.Net.Search.IndexSearcher     searcher         = new Lucene.Net.Search.IndexSearcher(reader);
                Lucene.Net.Search.Hits                   hits        = searcher.Search(query);
                Lucene.Net.Highlight.QueryScorer         score       = new Lucene.Net.Highlight.QueryScorer(query);
                Lucene.Net.Highlight.SimpleHTMLFormatter formater    = new Lucene.Net.Highlight.SimpleHTMLFormatter("<span class='Highlight'>", "</span>");
                Lucene.Net.Highlight.Highlighter         highlighter = new Lucene.Net.Highlight.Highlighter(formater, score);
                result += hits.Length() + "_" + "<div class='blog_news'><div class='topic_news_title1'><div class='topic_news_title'><a href='#'>Kết quả tìm thấy: " + hits.Length() + "</a></div></div>";
                result += "<div class='ct_topic_l'><div class='ct_topic_r1'>";
                for (int i = pageIndex * 20 - 20; i < pageIndex * 20 && i < hits.Length(); i++)
                {
                    string detail = hits.Doc(i).Get("ArticleDetail");
                    Lucene.Net.Analysis.TokenStream ts = (new Lucene.Net.Analysis.Standard.StandardAnalyzer()).TokenStream("ArticleDetail", new System.IO.StringReader(detail));
                    SearchArticle searchArticle        = new SearchArticle();
                    searchArticle.Id        = hits.Doc(i).Get("ArticleId");;
                    searchArticle.Title     = hits.Doc(i).Get("ArticleTitle");
                    searchArticle.Highligth = highlighter.GetBestFragment(ts, detail);
                    searchArticleList.Add(searchArticle);
                }
                reader.Close();
                JavaScriptSerializer        serializer = new JavaScriptSerializer();
                Dictionary <string, object> resultDic  = new Dictionary <string, object>();
                resultDic["Count"] = hits.Length();
                resultDic["Data"]  = searchArticleList;
                result             = serializer.Serialize(resultDic);
            }
            catch (Exception e)
            {
            }
            return(result);
        }
Esempio n. 4
0
        public ResultSet SearchAllArticles(string terms, string type, int page, string lang)
        {
            ResultSet results = new ResultSet();

            SetContextLanguage(lang);

            int blurbLimit         = 150; // TODO: move to constant
            SearchResultsItem item = Sitecore.Context.Database.GetItem(Constants.Pages.SearchResults);

            if (item != null && !string.IsNullOrEmpty(item.SearchResultSummaryCharacterLimit.Raw))
            {
                blurbLimit = item.SearchResultSummaryCharacterLimit.Integer;
            }

            int                  totalResults   = 0;
            List <Article>       articles       = SearchHelper.PerformArticleSearch(terms, type, page, out totalResults);
            List <SearchArticle> searchArticles = new List <SearchArticle>();

            foreach (Article article in articles)
            {
                DefaultArticlePageItem articleItem = article.GetItem();
                if (articleItem == null)
                {
                    continue;
                }

                // Handle cases such as invalid link format exception
                try
                {
                    var sa = new SearchArticle
                    {
                        Title     = Common.Helpers.TextHelper.HighlightSearchTitle(terms, HttpUtility.HtmlDecode(articleItem.ContentPage.PageTitle.Rendered)),
                        Url       = articleItem.GetUrl(),
                        Thumbnail = articleItem.GetArticleThumbnailUrl(230, 129),
                        Blurb     = articleItem.GetSearchResultBlurb(blurbLimit),
                        Type      = articleItem.GetArticleType()
                    };

                    searchArticles.Add(sa);
                }
                catch (Exception ex)
                {
                    Sitecore.Diagnostics.Log.Error("Error populating search result", ex, this);
                }
            }

            results.Articles     = searchArticles;
            results.TotalMatches = totalResults;

            results.HasMoreResults = HasMoreResults(page, Constants.SEARCH_RESULTS_ENTRIES_PER_PAGE, results.Articles.Count(), totalResults);

            return(results);
        }
Esempio n. 5
0
        public List <ArticleModel> GetList(SearchArticle search)
        {
            List <ArticleModel> lstObject = new List <ArticleModel>();

            try
            {
                lstObject = Execute(() => GetListNoCache(search), "ArticleBo:GetList", Const.MediumCacheTime, true, search);
            }
            catch (Exception ex)
            {
                Logger.WriteLog(Logger.LogType.Error, ex.ToString());
            }
            return(lstObject);
        }
Esempio n. 6
0
        public int GetListCount(SearchArticle search)
        {
            int totalCount = 0;

            try
            {
                totalCount = Execute(() => _articleDal.GetListCount(search), "ArticleBo:GetListCount", Const.MediumCacheTime, true, search);
            }
            catch (Exception ex)
            {
                Logger.WriteLog(Logger.LogType.Error, ex.ToString());
            }
            return(totalCount);
        }
Esempio n. 7
0
        public string ParserArticleUrl(string urlAlias, ref SearchArticle searchInfo)
        {
            string trueAlias = string.Empty;

            urlAlias = string.Concat(urlAlias, "-");

            #region Category

            int cateId = 0;

            if (!string.IsNullOrEmpty(urlAlias) && urlAlias.StartsWith("tin-tuc"))
            {
                urlAlias  = urlAlias.Replace("tin-tuc-", string.Empty);
                trueAlias = "tin-tuc";
            }
            else if (!string.IsNullOrEmpty(urlAlias))
            {
                List <CategoryEntity> lstCateDesc = _categoryBo.GetListDesc();
                foreach (var item in lstCateDesc)
                {
                    if (urlAlias.StartsWith(item.DisplayUrl + "-"))
                    {
                        searchInfo.CateId = cateId = item.CatalogID;
                        urlAlias          = StringUtils.SubStringAlias(urlAlias, item.DisplayUrl);
                        trueAlias         = string.Concat(trueAlias, item.DisplayUrl);
                        break;
                    }
                }
            }
            if (cateId == 0)
            {
                trueAlias = "tin-tuc";
            }

            #endregion

            if (!string.IsNullOrEmpty(searchInfo.TextSearch))
            {
                trueAlias = string.Format("{0}/k={1}", trueAlias, searchInfo.TextSearch);
            }

            if (searchInfo.PageIndex > 1)
            {
                trueAlias = string.Format("{0}/p{1}", trueAlias, searchInfo.PageIndex);
            }

            return(string.Concat("/", trueAlias));
        }
Esempio n. 8
0
        public async Task <List <Article> > SearchAsync(SearchArticle searchParams, CancellationToken ct = default)
        {
            List <Article> retour = await _context.Article
                                    //.Include(v => v.Vehicule)
                                    //.Include(c => c.Conducteur)
                                    //.Include(s => s.StatutAmende)
                                    //.Include(t => t.TypeAmende)
                                    //.Where(x => (searchParams.VehiculeId == null ? 1 == 1 : x.VehiculeId == searchParams.VehiculeId))
                                    //.Where(x => (searchParams.ConducteurId == null ? 1 == 1 : x.ConducteurId == searchParams.ConducteurId))
                                    //.Where(x => (searchParams.TypeAmendeId == null ? 1 == 1 : x.TypeAmendeId == searchParams.TypeAmendeId))
                                    //.Where(x => (searchParams.StatutAmendeId == null ? 1 == 1 : x.StatutAmendeId == searchParams.StatutAmendeId))
                                    //.Where(x => (string.IsNullOrEmpty(searchParams.NumeroAmende) ? 1 == 1 : x.NumeroAmende.Contains(searchParams.NumeroAmende)))
                                    .Where(x => !x.IsDeleted)
                                    .OrderByDescending(on => on.DateCreation)
                                    .ToListAsync();

            return(retour);
        }
Esempio n. 9
0
        public int GetListCount(SearchArticle search)
        {
            string storeName = "FE_News_GetList_Count";

            try
            {
                using (var context = Context())
                {
                    return(context.StoredProcedure("FE_News_GetList_Count")
                           .Parameter("CateId", search.CateId, DataTypes.Int32)
                           .Parameter("Keyword", search.TextSearch, DataTypes.String)
                           .QuerySingle <int>());
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("{0} => {1}", storeName, ex));
            }
        }
Esempio n. 10
0
        public async Task <ActionResult <ArticlesModel> > Search([FromQuery] SearchArticle searchParams)
        {
            ArticlesModel            retour   = new ArticlesModel();
            IEnumerable <ArticleDTO> resultat = await _logic.SearchAsync(searchParams);

            retour.TotalCount = resultat.ToList().Count;
            resultat          = resultat
                                .Skip(searchParams.PageIndex * searchParams.PageSize)
                                .Take(searchParams.PageSize)
                                .ToList();

            retour.Items = resultat;

            if (resultat == null)
            {
                logItem.Message += "Search Pas trouvé " + searchParams.ToString();
                loggingService.WriteError(logItem);
                return(StatusCode(StatusCodes.Status404NotFound));
            }
            return(retour);
        }
Esempio n. 11
0
        public MetaModel BuildMetaArticle(SearchArticle searchInfo)
        {
            MetaModel metaTag = new MetaModel()
            {
                TitlePage       = Const.MetaNewsTitle,
                MetaTitle       = Const.MetaNewsTitle,
                MetaDescription = Const.MetaNewsDescription,
                MetaKeyword     = Const.MetaNewsKeyword
            };

            if (!string.IsNullOrEmpty(searchInfo.TextSearch))
            {
                metaTag.TitlePage       = string.Format("Tìm kiếm {0}", searchInfo.TextSearch);
                metaTag.MetaTitle       = string.Format("Tìm kiếm {0}", searchInfo.TextSearch);
                metaTag.MetaDescription = string.Format("Tìm kiếm {0}", searchInfo.TextSearch);
            }
            else if (searchInfo.CateId > 0)
            {
                CategoryEntity cateInfo = _categoryBo.GetByCateId(searchInfo.CateId);
                if (cateInfo != null && cateInfo.CatalogID > 0)
                {
                    metaTag.TitlePage       = cateInfo.Name;
                    metaTag.MetaTitle       = cateInfo.Name;
                    metaTag.MetaDescription = cateInfo.Name;
                }
            }

            if (searchInfo.PageIndex > 1)
            {
                metaTag.TitlePage = string.Concat(metaTag.TitlePage, " - trang " + searchInfo.PageIndex);
                if (!string.IsNullOrEmpty(Const.PrefixTitle))
                {
                    metaTag.TitlePage = string.Concat(metaTag.TitlePage, " - ", Const.PrefixTitle);
                }
            }

            return(metaTag);
        }
Esempio n. 12
0
        public List <ArticleModel> GetListNoCache(SearchArticle search)
        {
            List <ArticleModel>  lstModel   = new List <ArticleModel>();
            List <ArticleEntity> lstArticle = _articleDal.GetList(search);

            if (lstArticle != null && lstArticle.Count > 0)
            {
                //lstModel = lstArticle.Select(x => new ArticleModel(x)).ToList();
                CategoryEntity category = new CategoryEntity();
                foreach (ArticleEntity item in lstArticle)
                {
                    //category = _categoryBo.GetByCateId(item.CategoryID);
                    //if (category != null && category.CatalogID > 0)
                    //{
                    //    ArticleModel articleModel = new ArticleModel(item);
                    //    lstModel.Add(articleModel);
                    //}
                    ArticleModel articleModel = new ArticleModel(item);
                    lstModel.Add(articleModel);
                }
            }
            return(lstModel);
        }
Esempio n. 13
0
        public ActionResult Index(string name)
        {
            var articles = string.IsNullOrEmpty(name)? _getArticle.GetAllArticles : db.Articles.Where(p => p.Name.Contains(name)).ToList();

            foreach (var item in articles)
            {
                item.Image  = db.Pictures.FirstOrDefault(x => x.PictureName == item.ImageName);
                item.Blocks = db.BlocksInfo.Where(x => x.ArticleId == item.Id).ToList();

                foreach (var block in item.Blocks)
                {
                    block.ArticleName = item.Name;
                }
            }
            User user = dbUsers.Users.ToList().FirstOrDefault(g => g.UserName == User.Identity.Name);

            SearchArticle dataArticles = new SearchArticle();

            dataArticles.Articles = articles;
            dataArticles.User     = user;
            db.SaveChanges();
            return(View(dataArticles));
        }
Esempio n. 14
0
        public ActionResult Index(string alias, string textSearch, int pageIndex = 1)
        {
            int cateId = 0;

            if (!string.IsNullOrEmpty(textSearch))
            {
                textSearch = textSearch.Replace('-', ' ');
                textSearch = StringUtils.UnicodeToUnsignChar(textSearch);
            }

            SearchArticle searchInfo = new SearchArticle()
            {
                CateId     = cateId,
                TextSearch = textSearch,
                OrderBy    = CookieManager.Instance.Get <int>(Const.ArrangeArticle).ToInt(0),
                PageIndex  = pageIndex,
                PageSize   = Const.PageSizeArticle
            };

            #region Redirect Permanent 301

            string standardUrl = _buildLinkBo.ParserArticleUrl(alias, ref searchInfo);

            string url301     = standardUrl;
            string currentUrl = Request.RawUrl;

            if (currentUrl.Contains("?utm_source"))
            {
                string strUtm = currentUrl.Substring(currentUrl.IndexOf("?utm_source"), currentUrl.Length - currentUrl.IndexOf("?utm_source"));
                url301 = string.Concat(url301, strUtm);
            }
            if (!currentUrl.Equals(url301))
            {
                return(Redirect301(url301));
            }

            #endregion

            ArticleListModel model = new ArticleListModel();
            int totalRows          = _articleBo.GetListCount(searchInfo);
            if (totalRows > 0)
            {
                model.ArticleList = _articleBo.GetList(searchInfo);

                #region paging

                Pagings pageModel = new Pagings
                {
                    PageIndex = pageIndex,
                    Count     = totalRows,
                    LinkSite  = Utils.GetCurrentURL(standardUrl, pageIndex),
                    PageSize  = Const.PageSizeArticle
                };
                model.PagingInfo       = pageModel;
                ViewBag.MetaPagination = SEO.MetaPagination(pageModel.Count, pageIndex, pageModel.PageSize, pageModel.LinkSite);

                #endregion
            }
            if (pageIndex > 1 && totalRows > 0 && (model.ArticleList == null || model.ArticleList.Count == 0))
            {
                return(Redirect(model.PagingInfo.LinkSite));
            }

            model.SearchInfo = searchInfo;

            #region Meta

            MetaModel metaTag  = _buildLinkBo.BuildMetaArticle(searchInfo);
            string    metaTags = SEO.Instance.BindingMeta(standardUrl, metaTag.MetaTitle, metaTag.MetaDescription, metaTag.MetaKeyword);

            model.TitlePage   = metaTag.TitlePage;
            ViewBag.MetaTitle = metaTag.MetaTitle;
            ViewBag.Meta      = metaTags;

            #endregion

            return(View(model));
        }