using MediatR;

namespace CMSMicroservice.Application.PackageCQ.Commands.VerifyUserPackagePurchasePayment;

/// <summary>
/// Shared verify + wallet credit path for package IPG payments (callback UI and reconciliation job).
/// </summary>
public class VerifyUserPackagePurchasePaymentCommand : IRequest<VerifyUserPackagePurchasePaymentResult>
{
    public long PurchaseId { get; set; }
    public string Authority { get; set; } = string.Empty;
    public string Status { get; set; } = "OK";
}

public class VerifyUserPackagePurchasePaymentResult
{
    public bool Success { get; init; }
    public bool AlreadyPaid { get; init; }
    public string Message { get; init; } = string.Empty;
    public long TransactionId { get; init; }
    public string ReferenceCode { get; init; } = string.Empty;
    public long PackageId { get; init; }
    public string PackageName { get; init; } = string.Empty;
    public long AmountPaid { get; init; }
    public DateTime PurchasedAt { get; init; }
}
