using System; using Castle.ActiveRecord; namespace ECOEarth.Web.Domain { [ActiveRecord] public class OrderItem : ActiveRecordBase { public OrderItem(string productName, double basePrice, double shipping, bool vatQualifying) { this.productName = productName; this.basePrice = basePrice; this.shippingPerItem = shipping; this.vatQualifying = vatQualifying; } public OrderItem() { } private int orderItemId; [PrimaryKey] public int OrderItemId { get { return orderItemId; } set { orderItemId = value; } } private string productId; private string productName; private int quantity =1; private bool vatQualifying; public virtual bool VatQualifying { get { return vatQualifying; } } private double basePrice; private double shippingPerItem; public virtual string ProductId { get { return productId; } set { productId = value; } } [Property] public virtual string ProductName { get { return productName; } set { productName = value; } } [Property] public virtual int Quantity { get { return quantity; } set { quantity = value; } } [Property] public virtual double BasePrice { get { return basePrice; } set { basePrice = value; } } public virtual double ShippingPerItem { get { return shippingPerItem; } set { shippingPerItem = value; } } public virtual double Shipping { get { return ShippingPerItem*Quantity; } } public virtual double VAT { get { return this.VatQualifying ? Math.Round(this.Price*0.175d, 2) : 0d; } } public virtual double Price { get { return BasePrice*Quantity; } } public virtual void ChangeQuantity(int newQuantity) { if(newQuantity < 1) throw new ArgumentOutOfRangeException("Quantity must be equal or greater than 1."); this.Quantity = newQuantity; } } }