Exemple #1
0
        public static IEnumerable <ArticleModels> GetItems(ArticleSearchModels search, int pageSize, int pageIndex, out int recordCount)
        {
            List <ArticleModels> items = new List <ArticleModels>();

            if (search == null)
            {
                recordCount = 0;
                return(items);
            }

            string sql = "Select ID, CardNo, Type, Title, Link, Archive, IsIssue, IssueStart, IssueEnd, Creator From Article A Where {0} Order By Sort, CreateTime Desc";

            List <string> where = new List <string>();
            where.Add("MenuID = " + search.MenuID);

            if (!string.IsNullOrWhiteSpace(search.Key))
            {
                string key = string.Format("Like N'%{0}%'", search.Key.Replace("'", "''"));
                where.Add(string.Format("(Title {0} OR Exists(Select 1 From Paragraph Where SourceNo = A.ID And (Title {0} OR Contents {0})))", key));
            }

            if (search.Types != null && search.Types.Count() > 0)
            {
                where.Add(string.Format("ID In (Select ArticleID From ArticleToType Where TypeID In ({0}))", string.Join(", ", search.Types)));
            }

            if (search.IssueStart != null)
            {
                where.Add(string.Format("IssueEnd >= '{0:yyyy/MM/dd HH:mm}'", search.IssueStart));
            }

            if (search.IssueEnd != null)
            {
                where.Add(string.Format("IssueStart <= '{0:yyyy/MM/dd HH:mm}'", search.IssueEnd));
            }

            SQLData.Database db    = new SQLData.Database(WebInfo.Conn);
            DataTable        datas = db.GetPageData(string.Format(sql, string.Join(" And ", where)), pageSize, pageIndex, out recordCount);

            foreach (DataRow dr in datas.Rows)
            {
                items.Add(new ArticleModels {
                    ID         = (long)dr["ID"],
                    CardNo     = (long)dr["CardNo"],
                    Type       = dr["Type"].ToString().Trim(),
                    Title      = dr["Title"].ToString().Trim(),
                    Link       = dr["Link"].ToString().Trim(),
                    Archive    = dr["Archive"].ToString().Trim(),
                    IsIssue    = (bool)dr["IsIssue"],
                    IssueStart = dr["IssueStart"] as DateTime?,
                    IssueEnd   = dr["IssueEnd"] as DateTime?,
                    Creator    = (long)dr["Creator"]
                });
            }

            return(items);
        }
        public ActionResult List(long siteId, long menuId, int?index, ArticleSearchModels search)
        {
            ViewBag.SiteID    = siteId;
            ViewBag.MenuID    = menuId;
            ViewBag.Types     = ArticleTypesDAO.GetIssueItems(menuId);
            ViewBag.UploadUrl = WorkV3.Golbal.UpdFileInfo.GetVPathByMenuID(siteId, menuId).TrimEnd('/') + "/";

            if (Request.HttpMethod == "GET")
            {
                if (index == null)
                {
                    WorkV3.Common.Utility.ClearSearchValue();
                }
                else
                {
                    ArticleSearchModels prevSearch = WorkV3.Common.Utility.GetSearchValue <ArticleSearchModels>();
                    if (prevSearch != null)
                    {
                        search = prevSearch;
                    }
                }
            }
            else if (Request.HttpMethod == "POST")
            {
                WorkV3.Common.Utility.SetSearchValue(search);
            }
            ViewBag.Search = search;

            Pagination pagination = new Pagination {
                PageIndex = index ?? 1,
                PageSize  = WebInfo.PageSize
            };

            int totalRecord;
            IEnumerable <ArticleModels> items = ArticleDAO.GetItems(search, pagination.PageSize, pagination.PageIndex, out totalRecord);

            pagination.TotalRecord = totalRecord;

            ViewBag.SitePages = WorkV3.Models.DataAccess.CardsDAO.GetPages(items.Select(item => item.CardNo));
            ViewBag.ItemTypes = ArticleDAO.GetItemTypes(items.Select(item => item.ID));

            ViewBag.Pagination = pagination;
            return(View(items));
        }