All pastes #345597 Raw Edit

Mine

public text v1 · immutable
·published 2007-02-08 17:33 UTC
rendered paste body
using System;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Queries;
using NetCoders.Helpers;

namespace NetCoders.NFSCars.Model.Article
{
    [ActiveRecord("Articles")]
    public class Article : ActiveRecordBase<Article>
    {
        #region Properties / Methods
        private int _articleId;
        private User.User _author;
        private ArticleCategory _category;
        private string _title;
        private string _body;
        private string _bodyParsed;
        private DateTime _postDateTime;

        [PrimaryKey(PrimaryKeyType.Native, "ArticleID")]
        public int ArticleID
        {
            get
            {
                return _articleId;
            }
            set
            {
                _articleId = value;
            }
        }

        [BelongsTo("AuthorUserID", NotNull = true, Update = false)]
        public User.User Author
        {
            get
            {
                return _author;
            }
            set
            {
                _author = value;
            }
        }

        [BelongsTo("CategoryID", NotNull = true)]
        public ArticleCategory Category
        {
            get
            {
                return _category;
            }
            set
            {
                _category = value;
            }
        }

        [Property("Title", NotNull = true)]
        public string Title
        {
            get
            {
                return _title;
            }
            set
            {
                _title = value;
            }
        }

        [Property("Body", ColumnType = "StringClob", SqlType = "Text", NotNull = true)]
        public string Body
        {
            get
            {
                return _body;
            }
            set
            {
                _body = value;
            }
        }

        [Property("BodyParsed", ColumnType = "StringClob", SqlType = "Text", NotNull = true)]
        public string BodyParsed
        {
            get
            {
                return _bodyParsed;
            }
            set
            {
                _bodyParsed = value;
            }
        }

        [Property("PostDateTime", NotNull = true, Update = false)]
        public DateTime PostDateTime
        {
            get
            {
                return _postDateTime;
            }
            set
            {
                _postDateTime = value;
            }
        }
        #endregion

        #region FindAll
        public static ListHelper<Article> FindAll(int pageIndex, int pageSize)
        {
            SimpleQuery<Article> query = new SimpleQuery<Article>(@"
                FROM Article a 
                ORDER BY a.PostDateTime DESC");

            if (pageIndex <= 0)
            {
                pageIndex = 1;
            }

            int start = (pageIndex * pageSize) - pageSize;

            query.SetQueryRange(start, pageSize);

            ListHelper<Article> articles = new ListHelper<Article>((Article[])ExecuteQuery(query));

            articles.TotalItems = CountItems();

            return articles;
        }
        #endregion

        #region FindAllByCategory
        public static ListHelper<Article> FindAllByCategory(string category, int pageIndex, int pageSize)
        {
            SimpleQuery<Article> query = new SimpleQuery<Article>(@"
                FROM Article a 
                WHERE a.Category.Name = :category 
                ORDER BY a.PostDateTime DESC");

            query.SetParameter("category", category);

            if (pageIndex <= 0)
            {
                pageIndex = 1;
            }

            int start = (pageIndex * pageSize) - pageSize;

            query.SetQueryRange(start, pageSize);

            ListHelper<Article> articles = new ListHelper<Article>((Article[])ExecuteQuery(query));

            articles.TotalItems = CountItems();

            return articles;
        }
        #endregion

        #region CountItems
        public static int CountItems()
        {
            return CountItems(null, null);
        }

        public static int CountItems(string filter,
            params object[] parameters)
        {
            string queryString = null;

            if (filter != null && parameters != null)
            {
                queryString = " WHERE " + string.Format(filter, parameters);
            }

            ScalarQuery query = new ScalarQuery(typeof(Article),
                @"SELECT COUNT(*) FROM Article a" + queryString);

            return int.Parse(ExecuteQuery(query).ToString());
        }
        #endregion
    }
}