public async Task <IActionResult> ListAsync(
            [FromQuery] int top  = 100,
            [FromQuery] int skip = 0)
        {
            var query = new ListWalletQuery
            {
                Top  = top,
                Skip = skip
            };
            var result = await _queryExecutor.ExecuteAsync <ListWalletQuery, PaginationCollection <WalletDocument> >(query);

            return(Ok(result));
        }
        public async Task <Result <PaginationCollection <WalletDocument> > > HandleAsync(ListWalletQuery query, CancellationToken cancellationToken = default)
        {
            Assert.IsNotNull(query, nameof(query));
            cancellationToken.ThrowIfCancellationRequested();

            var userId  = _userContext.UserId;
            var wallets = await _readOnlyRepository.ListAsync(userId, top : query.Top, skip : query.Skip, cancellationToken);

            var totalCount = await _readOnlyRepository.CountAsync(p => p.UserId == userId, cancellationToken);

            var walletDocuments = wallets.Select(_mapper.Map).ToList();

            var paginationCollection = new PaginationCollection <WalletDocument>
            {
                Items = walletDocuments,
                Count = totalCount
            };

            return(Result.Ok(paginationCollection));
        }