using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using LittleShop.Enums;

namespace LittleShop.Models;

public class CryptoPayment
{
    [Key]
    public Guid Id { get; set; }
    
    public Guid OrderId { get; set; }
    
    public CryptoCurrency Currency { get; set; }
    
    [Required]
    [StringLength(500)]
    public string WalletAddress { get; set; } = string.Empty;
    
    [Column(TypeName = "decimal(18,8)")]
    public decimal RequiredAmount { get; set; }
    
    [Column(TypeName = "decimal(18,8)")]
    public decimal PaidAmount { get; set; } = 0;
    
    public PaymentStatus Status { get; set; } = PaymentStatus.Pending;
    
    [StringLength(200)]
    public string? BTCPayInvoiceId { get; set; }
    
    [StringLength(200)]
    public string? TransactionHash { get; set; }
    
    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
    
    public DateTime? PaidAt { get; set; }
    
    public DateTime ExpiresAt { get; set; }
    
    // Navigation properties
    public virtual Order Order { get; set; } = null!;
}