Пример #1
0
        Task <ArticleViewData> IArticleStorage.GetViewDataAsync(int id)
        {
            return(base.ConnectAsync <ArticleViewData>(async conn =>
            {
                var data = new ArticleViewData();

                string sql = $@"SELECT TOP 1 *, ISNULL((select top 1 text from type where typeid = a.typeid), '')  as typetext FROM article a  ";
                var model = await conn.QueryFirstOrDefaultAsync <Article>(sql + "  WHERE id = @id", new { id });
                if (model != null)
                {
                    var param = new { model.created, model.typeid };
                    data.Previous = await conn.QueryFirstOrDefaultAsync <Article>(sql + "  WHERE created < @created and typeid = @typeid", param);
                    data.Next = await conn.QueryFirstOrDefaultAsync <Article>(sql + "  WHERE created > @created and typeid = @typeid", param);
                }
                sql = $@"SELECT TOP 6 *, ISNULL((select top 1 text from type where typeid = a.typeid), '')  as typetext FROM article a  ";
                //热点
                data.HotList = await conn.QueryAsync <Article>(sql + " WHERE ishot = 1 order by created desc");
                //最新
                data.NewList = await conn.QueryAsync <Article>(sql + " WHERE isnew = 1 order by created desc");
                //推荐
                data.ShowList = await conn.QueryAsync <Article>(sql + " WHERE isshow = 1 order by created desc");

                return data;
            }));
        }
        // GET: /KnowledgeBase/Article/id/title/
        public ActionResult Article(int?id, string Title)
        {
            ArticleViewData knowledgeData = new ArticleViewData();

            knowledgeData.KnowledgeArticle    = knowledgeDB.KnowledgeArticles.Find(id);
            knowledgeData.KnowledgeCategories = knowledgeDB.KnowledgeCategories.OrderBy(c => c.Name).Where(c => c.KnowledgeArticles.Count > 0).ToList();

            ViewBag.currentCategoryID = knowledgeData.KnowledgeArticle.CategoryId;
            return(View(knowledgeData));
        }
        //
        // GET: /KnowledgeBase/
        public ActionResult Index()
        {
            ArticleViewData knowledgeData = new ArticleViewData();

            knowledgeData.KnowledgeCategories = knowledgeDB.KnowledgeCategories.OrderBy(c => c.Name).Where(c => c.KnowledgeArticles.Count > 0).ToList();
            knowledgeData.Articles            = knowledgeDB.KnowledgeArticles.Where(c => c.Hidden == false).OrderByDescending(c => c.DateModified).Take(10).ToList();

            ViewBag.noCategoryClass = "active";
            return(View(knowledgeData));
        }
        public ActionResult Search(string searchTerm)
        {
            ViewBag.SearchTerm = searchTerm;
            string[] terms = searchTerm.Split(' ');

            ArticleViewData searchData = new ArticleViewData();

            searchData.KnowledgeCategories = knowledgeDB.KnowledgeCategories.OrderBy(c => c.Name).Where(c => c.KnowledgeArticles.Count > 0).ToList();
            searchData.Articles            = knowledgeDB.KnowledgeArticles.MultiValueContainsAny(terms, s => s.Title).ToList();
            return(View(searchData));
        }
        // GET: /KnowledgeBase/category/id/categoryname
        public ActionResult Category(int?id, string categoryName)
        {
            ArticleViewData knowledgeData = new ArticleViewData();

            knowledgeData.KnowledgeCategories = knowledgeDB.KnowledgeCategories.OrderBy(c => c.Name).Where(c => c.KnowledgeArticles.Count > 0).ToList();
            knowledgeData.Articles            = knowledgeDB.KnowledgeArticles.Where(c => c.CategoryId == id).ToList();
            knowledgeData.CurrentCategory     = knowledgeDB.KnowledgeCategories.Single(c => c.KnowledgeCategoryId == id);

            ViewBag.currentCategoryId = id;
            return(View(knowledgeData));
        }