src/Modules/SimplCommerce.Module.Orders/Models/Order.cs (64 lines of code) (raw):
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
using SimplCommerce.Infrastructure.Models;
using SimplCommerce.Module.Core.Models;
namespace SimplCommerce.Module.Orders.Models
{
public class Order : EntityBase
{
public Order()
{
CreatedOn = DateTimeOffset.Now;
LatestUpdatedOn = DateTimeOffset.Now;
OrderStatus = OrderStatus.New;
IsMasterOrder = false;
}
public long CustomerId { get; set; }
[JsonIgnore] // To simplify the json stored in order history
public User Customer { get; set; }
public DateTimeOffset LatestUpdatedOn { get; set; }
public long LatestUpdatedById { get; set; }
[JsonIgnore]
public User LatestUpdatedBy { get; set; }
public DateTimeOffset CreatedOn { get; set; }
public long CreatedById { get; set; }
[JsonIgnore]
public User CreatedBy { get; set; }
public long? VendorId { get; set; }
[StringLength(450)]
public string CouponCode { get; set; }
[StringLength(450)]
public string CouponRuleName { get; set; }
public decimal DiscountAmount { get; set; }
public decimal SubTotal { get; set; }
public decimal SubTotalWithDiscount { get; set; }
public long ShippingAddressId { get; set; }
public OrderAddress ShippingAddress { get; set; }
public long BillingAddressId { get; set; }
public OrderAddress BillingAddress { get; set; }
public IList<OrderItem> OrderItems { get; set; } = new List<OrderItem>();
public OrderStatus OrderStatus { get; set; }
[StringLength(1000)]
public string OrderNote { get; set; }
public long? ParentId { get; set; }
[JsonIgnore]
public Order Parent { get; set; }
public bool IsMasterOrder { get; set; }
[StringLength(450)]
public string ShippingMethod { get; set; }
public decimal ShippingFeeAmount { get; set; }
public decimal TaxAmount { get; set; }
public decimal OrderTotal { get; set; }
[StringLength(450)]
public string PaymentMethod { get; set; }
public decimal PaymentFeeAmount { get; set; }
public IList<Order> Children { get; protected set; } = new List<Order>();
public void AddOrderItem(OrderItem item)
{
item.Order = this;
OrderItems.Add(item);
}
}
}