public override void PreProcess(IFeatureChain featureChain, FeatureAccount featureAccount, Transaction transaction, FeatureData featureData) { if (_chainHandler == null) { _chainHandler = featureChain.GetFeatureChainHandler <GroupChainHandler>(featureData.FeatureId); } var group = featureData as Group; var groupId = group.GroupId; var index = group.GroupIndex; var groupInfo = _chainHandler.GetGroupInfo(groupId); var info = groupInfo.LastTransactionInfo; PreviousGroupTransactions.Set(groupId, info.TransactionId); GroupTransactionsCount.Set(groupId, info.Count); if (index != null) { info = groupInfo.GetLastGroupIndexTransactionInfo(index, true); PreviousGroupIndexTransactions.Set(groupId, index, info.TransactionId); GroupIndexTransactionsCount.Set(groupId, info.Count); } }
public override Result QueryFeature(FeatureQuery query) { if (query.GetLong(0, out var groupId)) { var groupInfo = _handler.GetGroupInfo(groupId); if (groupInfo == null) { return(Result.DataNotFound); } var action = query.Action; if (action == LastTransactionInfoAction) { return(new PackableResult(groupInfo.LastTransactionInfo)); } else if (action == IndexLastTransactionInfoAction) { if (query.GetString(1, out var indexHex)) { var index = new Chain.Index(indexHex); return(new PackableResult(groupInfo.GetLastGroupIndexTransactionInfo(index, true))); } } } return(Result.InvalidQuery); }