Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }