rendered paste bodyusing 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
}
}