/// <summary> /// query transaction info /// </summary> /// <returns></returns> public async Task <PageList <TransferInfo> > QueryTransfers(TransferFilter filter) { using var db = new TrackDB(); var result = db.QueryTransfers(filter) as PageList <TransferInfo>; return(result); }
/// <summary> /// query transaction info /// </summary> /// <param name="txId"></param> /// <returns></returns> public async Task <object> GetTransaction(UInt256 txId) { var snapshot = Helpers.GetDefaultSnapshot(); var transaction = snapshot.GetTransaction(txId); if (transaction == null) { return(Error(ErrorCode.TxIdNotFound)); } var model = new TransactionModel(transaction); var txState = snapshot.GetTransactionState(txId); if (txState != null) { Header header = snapshot.GetHeader(txState.BlockIndex); model.BlockHash = header.Hash; model.BlockHeight = txState.BlockIndex; model.Timestamp = header.Timestamp; model.Confirmations = snapshot.GetHeight() - header.Index + 1; } using var db = new TrackDB(); var trans = db.QueryTransfers(new TransferFilter() { TxIds = new List <UInt256>() { txId }, PageSize = int.MaxValue }).List; model.Transfers = trans.Select(tx => tx.ToTransferModel()).ToList(); var executeResult = db.GetExecuteLog(txId); if (executeResult?.Notifications.NotEmpty() == true) { model.Notifies.AddRange( executeResult.Notifications.Select(n => new NotifyModel() { Contract = n.Contract, EventName = n.EventName, State = JStackItem.FromJson(n.State), })); } return(model); }