namespace WalletService.API.Application.Commands.Payments;

using MediatR;

/// <summary>
/// EN: Command to create a payment through a payment gateway.
/// VI: Command de tao thanh toan qua cong thanh toan.
/// </summary>
public record CreatePaymentCommand(
    Guid OrderId,
    decimal Amount,
    string Currency,
    string GatewayName,
    string ReturnUrl,
    string IpAddress
) : IRequest<CreatePaymentResult>;

/// <summary>
/// EN: Result of creating a payment.
/// VI: Ket qua cua viec tao thanh toan.
/// </summary>
public record CreatePaymentResult(
    Guid PaymentId,
    Guid OrderId,
    decimal Amount,
    string Currency,
    string GatewayName,
    string Status,
    string? PaymentUrl,
    DateTime CreatedAt
);
