using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; using eprintServer.Enums; namespace eprintServer.Entities; [Table("invoices")] public class Invoice { [Key] [Column("id")] public long Id { get; set; } [Column("user_id")] public long UserId { get; set; } [JsonIgnore] [ForeignKey(nameof(UserId))] public User User { get; set; } [Column("order_id")] public long OrderId { get; set; } [JsonIgnore] [ForeignKey(nameof(OrderId))] public Order Order { get; set; } [NotMapped] public long UserIdentifier => User?.Id ?? UserId; [NotMapped] public string? UserName => User?.Username; [Column("invoice_date")] public DateTime InvoiceDate { get; set; } = DateTime.UtcNow; [Column("total_amount")] public decimal TotalAmount { get; set; } [Column("discount_percentage")] public double DiscountPercentage { get; set; } [Column("discount_amount")] public decimal DiscountAmount { get; set; } [Column("tax_amount")] public decimal TaxAmount { get; set; } [Column("status")] public InvoiceStatus Status { get; set; } = InvoiceStatus.SUBMITTED; public ICollection InvoiceItems { get; set; } = new List(); [Column("refund_date")] public DateTime? RefundDate { get; set; } [Column("timestmp")] public DateTime Timestamp { get; set; } = DateTime.UtcNow; }