namespace WalletService.Domain.Events;

using MediatR;

/// <summary>
/// EN: Domain event raised when a new payment is created.
/// VI: Domain event duoc phat ra khi mot thanh toan moi duoc tao.
/// </summary>
public class PaymentCreatedDomainEvent : INotification
{
    public Guid PaymentId { get; }
    public Guid OrderId { get; }
    public decimal Amount { get; }
    public string Currency { get; }
    public string GatewayName { get; }
    public DateTime OccurredAt { get; }

    public PaymentCreatedDomainEvent(
        Guid paymentId,
        Guid orderId,
        decimal amount,
        string currency,
        string gatewayName)
    {
        PaymentId = paymentId;
        OrderId = orderId;
        Amount = amount;
        Currency = currency;
        GatewayName = gatewayName;
        OccurredAt = DateTime.UtcNow;
    }
}
