namespace Netina.Domain.Entities.Accounting;

[AdaptTwoWays("[name]LDto", IgnoreAttributes = new[] { typeof(AdaptIgnoreAttribute) }, MapType = MapType.Map | MapType.MapToTarget | MapType.Projection)]
[AdaptTwoWays("[name]SDto", IgnoreAttributes = new[] { typeof(AdaptIgnoreAttribute) }, MapType = MapType.Map | MapType.MapToTarget)]
[AdaptTo("[name]SDto", IgnoreAttributes = new[] { typeof(AdaptIgnoreAttribute) }, MapType = MapType.Projection)]
[GenerateMapper]

public partial class Payment : ApiEntity
{
    public Payment()
    {
        
    }
    public Payment(string factorNumber, double amount, string description, string transactionCode, string cardPan, string authority, PaymentType type, PaymentStatus status, Guid orderId, Guid customerId)
    {
        FactorNumber = factorNumber;
        Amount = amount;
        Description = description;
        TransactionCode = transactionCode;
        CardPan = cardPan;
        Authority = authority;
        Type = type;
        Status = status;
        OrderId = orderId;
        CustomerId = customerId;
    }

    public string FactorNumber { get; internal set; } = string.Empty;
    public double Amount { get; internal set; }
    public string Description { get; internal set; } = string.Empty;
    public string TransactionCode { get; internal set; } = string.Empty;
    public string CardPan { get; internal set; } = string.Empty;
    public string Authority { get; internal set; } = string.Empty;
    public PaymentType Type { get; internal set; }
    public PaymentStatus Status { get; internal set; }

    public Guid OrderId { get; internal set; }
    public Order? Order { get; internal set; }
    public Guid CustomerId { get; internal set; }
    public Customer? Customer { get; internal set; }
}