namespace WalletService.Domain.Events;

using MediatR;

/// <summary>
/// EN: Domain event raised when a payment is completed successfully.
/// VI: Domain event duoc phat ra khi thanh toan hoan thanh thanh cong.
/// </summary>
public class PaymentCompletedDomainEvent : INotification
{
    public Guid PaymentId { get; }
    public Guid OrderId { get; }
    public string TransactionId { get; }
    public decimal Amount { get; }
    public string Currency { get; }
    public DateTime OccurredAt { get; }

    public PaymentCompletedDomainEvent(
        Guid paymentId,
        Guid orderId,
        string transactionId,
        decimal amount,
        string currency)
    {
        PaymentId = paymentId;
        OrderId = orderId;
        TransactionId = transactionId;
        Amount = amount;
        Currency = currency;
        OccurredAt = DateTime.UtcNow;
    }
}
