namespace WalletService.API.Application.Queries;

using MediatR;

/// <summary>
/// EN: Query to get wallet transactions with pagination
/// VI: Query để lấy lịch sử giao dịch ví với phân trang
/// </summary>
public record GetWalletTransactionsQuery(
    Guid UserId,
    int Page = 1,
    int PageSize = 20
) : IRequest<WalletTransactionsDto>;

public record WalletTransactionsDto(
    IEnumerable<WalletTransactionDto> Transactions,
    int TotalCount,
    int Page,
    int PageSize,
    int TotalPages
);

public record WalletTransactionDto(
    Guid Id,
    decimal Amount,
    string Currency,
    string Type,
    string Description,
    string? ReferenceId,
    decimal BalanceAfter,
    DateTime CreatedAt
);
