An alternative to UBB.threads
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

220 lines
6.3 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Web.Core;
using Web.Core.DB;
using Web.Core.DB.conditions;
namespace FLocal.Common.dataobjects {
public class Punishment : SqlObject<Punishment> {
public class TableSpec : ISqlObjectTableSpec {
public const string TABLE = "Punishments";
public const string FIELD_ID = "Id";
public const string FIELD_POSTID = "PostId";
public const string FIELD_OWNERID = "OwnerId";
public const string FIELD_ORIGINALBOARDID = "OriginalBoardId";
public const string FIELD_MODERATORID = "ModeratorId";
public const string FIELD_PUNISHMENTDATE = "PunishmentDate";
public const string FIELD_PUNISHMENTTYPE = "PunishmentType";
public const string FIELD_ISWITHDRAWED = "IsWithdrawed";
public const string FIELD_COMMENT = "Comment";
public const string FIELD_EXPIRES = "Expires";
public const string FIELD_TRANSFERID = "TransferId";
public const string FIELD_LAYERCHANGEID = "LayerChangeId";
public static readonly TableSpec instance = new TableSpec();
public string name { get { return TABLE; } }
public string idName { get { return FIELD_ID; } }
public void refreshSqlObject(int id) { Refresh(id); }
}
protected override ISqlObjectTableSpec table { get { return TableSpec.instance; } }
private int _postId;
public int postId {
get {
this.LoadIfNotLoaded();
return this._postId;
}
}
public Post post {
get {
return Post.LoadById(this.postId);
}
}
private int _ownerId;
public int ownerId {
get {
this.LoadIfNotLoaded();
return this._ownerId;
}
}
public User owner {
get {
return User.LoadById(this.ownerId);
}
}
private int _originalBoardId;
public int originalBoardId {
get {
this.LoadIfNotLoaded();
return this._originalBoardId;
}
}
public Board originalBoard {
get {
return Board.LoadById(this.originalBoardId);
}
}
private int _moderatorId;
public int moderatorId {
get {
this.LoadIfNotLoaded();
return this._moderatorId;
}
}
public Account moderator {
get {
return Account.LoadById(this.moderatorId);
}
}
private DateTime _punishmentDate;
public DateTime punishmentDate {
get {
this.LoadIfNotLoaded();
return this._punishmentDate;
}
}
private int _punishmentTypeId;
public int punishmentTypeId {
get {
this.LoadIfNotLoaded();
return this._punishmentTypeId;
}
}
public PunishmentType punishmentType {
get {
return PunishmentType.LoadById(this.punishmentTypeId);
}
}
private bool _isWithdrawed;
public bool isWithdrawed {
get {
this.LoadIfNotLoaded();
return this._isWithdrawed;
}
}
private string _comment;
public string comment {
get {
this.LoadIfNotLoaded();
return this._comment;
}
}
private DateTime _expires;
public DateTime expires {
get {
this.LoadIfNotLoaded();
return this._expires;
}
}
private int? _transferId;
public int? transferId {
get {
this.LoadIfNotLoaded();
return this._transferId;
}
}
public PunishmentTransfer transfer {
get {
return PunishmentTransfer.LoadById(this.transferId.Value);
}
}
private int? _layerChangeId;
public int? layerChangeId {
get {
this.LoadIfNotLoaded();
return this._layerChangeId;
}
}
public PunishmentLayerChange layerChange {
get {
return PunishmentLayerChange.LoadById(this.layerChangeId.Value);
}
}
protected override void doFromHash(Dictionary<string, string> data) {
this._postId = int.Parse(data[TableSpec.FIELD_POSTID]);
this._ownerId = int.Parse(data[TableSpec.FIELD_OWNERID]);
this._originalBoardId = int.Parse(data[TableSpec.FIELD_ORIGINALBOARDID]);
this._moderatorId = int.Parse(data[TableSpec.FIELD_MODERATORID]);
this._punishmentDate = Util.ParseDateTimeFromTimestamp(data[TableSpec.FIELD_PUNISHMENTDATE]).Value;
this._punishmentTypeId = int.Parse(data[TableSpec.FIELD_PUNISHMENTTYPE]);
this._isWithdrawed = Util.string2bool(data[TableSpec.FIELD_ISWITHDRAWED]);
this._comment = data[TableSpec.FIELD_COMMENT];
this._expires = Util.ParseDateTimeFromTimestamp(data[TableSpec.FIELD_EXPIRES]).Value;
this._transferId = Util.ParseInt(data[TableSpec.FIELD_TRANSFERID]);
this._layerChangeId = Util.ParseInt(data[TableSpec.FIELD_LAYERCHANGEID]);
}
public XElement exportToXml(UserContext context) {
return new XElement("punishment",
this.post.exportToXmlBase(context),
new XElement("owner", this.owner.exportToXmlForViewing(context)),
new XElement("originalBoard", this.originalBoard.exportToXmlSimple(context, Board.SubboardsOptions.None)),
new XElement("moderator", this.moderator.user.exportToXmlForViewing(context)),
new XElement("punishmentDate", this.punishmentDate.ToXml()),
this.punishmentType.exportToXml(context),
new XElement("isWithdrawed", this.isWithdrawed.ToPlainString()),
new XElement("comment", this.comment),
new XElement("expires", this.expires.ToXml()),
this.transferId.HasValue ? this.transfer.exportToXml(context) : null,
this.layerChangeId.HasValue ? this.layerChange.exportToXml(context) : null
);
}
public static IEnumerable<Punishment> getEffectivePunishments(User user, Board board) {
return
from stringId in Config.instance.mainConnection.LoadIdsByConditions(
TableSpec.instance,
new ComplexCondition(
ConditionsJoinType.AND,
new ComparisonCondition(
TableSpec.instance.getColumnSpec(TableSpec.FIELD_OWNERID),
ComparisonType.EQUAL,
user.id.ToString()
),
new ComparisonCondition(
TableSpec.instance.getColumnSpec(TableSpec.FIELD_ORIGINALBOARDID),
ComparisonType.EQUAL,
board.id.ToString()
),
new ComparisonCondition(
TableSpec.instance.getColumnSpec(TableSpec.FIELD_ISWITHDRAWED),
ComparisonType.EQUAL,
"0"
),
new ComparisonCondition(
TableSpec.instance.getColumnSpec(TableSpec.FIELD_EXPIRES),
ComparisonType.GREATEROREQUAL,
DateTime.Now.ToUTCString()
)
),
Diapasone.unlimited
) select Punishment.LoadById(int.Parse(stringId));
}
}
}