Example #1
0
        public async Task <IActionResult> GetV2(
            [FromBody] GetErc20TransferHistoryV2Request request,
            [FromQuery] int?start,
            [FromQuery] int?count)
        {
            var query = new Erc20TransferHistoryQuery
            {
                AssetHolder     = request.AssetHolder,
                BlockNumber     = request.BlockNumber,
                ContractAddress = request.ContractAddress,
                Count           = count,
                Start           = start
            };

            var transfers = (await _transferHistoryService.GetAsync(query))
                            .Select(x => new Erc20TransferHistoryResponse
            {
                BlockHash       = x.BlockHash,
                BlockNumber     = x.BlockNumber,
                BlockTimestamp  = x.BlockTimestamp,
                ContractAddress = x.ContractAddress,
                From            = x.From,
                LogIndex        = x.LogIndex,
                To = x.To,
                TransactionHash  = x.TransactionHash,
                TransactionIndex = x.TransactionIndex,
                TransferAmount   = x.TransferAmount.ToString(),
                GasUsed          = x.GasUsed,
                GasPrice         = x.GasPrice
            })
                            .ToList();

            return(new JsonResult(transfers));
        }
Example #2
0
        public async Task <IEnumerable <Erc20TransferHistoryModel> > GetAsync(Erc20TransferHistoryQuery query)
        {
            var filterBuilder = Builders <Erc20TransferHistoryEntity> .Filter;
            var filter        = filterBuilder.Empty;

            if (!string.IsNullOrEmpty(query.TransactionHash))
            {
                filter &= filterBuilder.Eq(x => x.TransactionHash, query.TransactionHash);
            }

            if (query.BlockNumber.HasValue)
            {
                filter &= filterBuilder.Eq(x => x.BlockNumber, query.BlockNumber.Value);
            }

            if (!string.IsNullOrEmpty(query.AssetHolder))
            {
                if (string.IsNullOrEmpty(query.ContractAddress))
                {
                    filter &= filterBuilder.Or
                              (
                        filterBuilder.Eq(x => x.From, query.AssetHolder),
                        filterBuilder.Eq(x => x.To, query.AssetHolder)
                              );
                }
                else
                {
                    filter &= filterBuilder.Or
                              (
                        filterBuilder.And(
                            filterBuilder.Eq(x => x.From, query.AssetHolder)
                            , filterBuilder.Eq(x => x.ContractAddress, query.ContractAddress)),
                        filterBuilder.And(filterBuilder.Eq(x => x.To, query.AssetHolder)
                                          , filterBuilder.Eq(x => x.ContractAddress, query.ContractAddress))
                              );
                }
            }

            var query1 = _historyCollection
                         .Find(filter)
                         .SortByDescending(x => x.BlockNumber)
                         .ThenBy(x => x.TransactionIndex)
                         .ThenBy(x => x.LogIndex)
                         .Skip(query.Start)
                         .Limit(query.Count);

            var entities = await _historyCollection
                           .Find(filter)
                           .SortByDescending(x => x.BlockNumber)
                           .ThenBy(x => x.TransactionIndex)
                           .ThenBy(x => x.LogIndex)
                           .Skip(query.Start)
                           .Limit(query.Count)
                           .ToListAsync();

            return(entities.Select(_mapper.Map <Erc20TransferHistoryModel>));
        }
Example #3
0
 public async Task <IEnumerable <Erc20TransferHistoryModel> > GetAsync(Erc20TransferHistoryQuery addressHistoryQuery)
 {
     return(await _transferHistoryRepository.GetAsync(addressHistoryQuery));
 }