namespace WalletService.API.Application.Queries;

using MediatR;

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

public record PointTransactionsDto(
    IEnumerable<PointTransactionDto> Transactions,
    int TotalCount,
    int Page,
    int PageSize,
    int TotalPages
);

public record PointTransactionDto(
    Guid Id,
    long Points,
    string Type,
    string Source,
    string Description,
    long BalanceAfter,
    DateTime CreatedAt,
    DateTime? ExpiresAt
);
