// EN: Command to complete order payment after gateway callback confirmation.
// VI: Command hoàn tất thanh toán order sau khi nhận callback xác nhận từ cổng thanh toán.

using MediatR;

namespace OrderService.API.Application.Commands;

/// <summary>
/// EN: Command triggered by payment gateway callback to finalize order payment.
/// VI: Command được kích hoạt bởi callback cổng thanh toán để hoàn tất thanh toán order.
/// </summary>
public record CompleteOrderPaymentCommand(
    Guid OrderId,
    string GatewayTransactionId,   // EN: Transaction ID from payment gateway / VI: Mã giao dịch từ cổng thanh toán
    bool IsSuccess,                 // EN: Whether payment was successful / VI: Thanh toán có thành công không
    string? GatewayResponseCode     // EN: Response code from gateway / VI: Mã phản hồi từ cổng thanh toán
) : IRequest<CompleteOrderPaymentResult>;

/// <summary>
/// EN: Result of completing order payment.
/// VI: Kết quả hoàn tất thanh toán order.
/// </summary>
public record CompleteOrderPaymentResult(
    bool Success,
    string Status,
    string? ErrorMessage
);
