public string RegisterTransaction(Product product)
        {
            var transactionId = Guid.NewGuid().ToString();

            TransactionStorage.Add(new TransactionData
            {
                ProductToBuy          = product,
                TransactionChangeTime = DateTime.Now,
                TransactionGuid       = transactionId,
                TransactionStatus     = TransactionStatusEnum.AuthWaiting,
                AuthCode = "1234",
            });

            return(transactionId);
        }
Example #2
0
        public void ConsumeBlockData(BlockData <MaintainBlock> blockData)
        {
            if (!Active)
            {
                return;
            }

            var block = blockData.Block;

            if (block.BlockId <= LastProcessedBlockId)
            {
                return;
            }

            var dirtyData   = new DirtyData();
            var commitItems = NewCommitItems();

            foreach (var item in block.Items)
            {
                ConsumeTransaction(dirtyData, commitItems, item);
                TransactionStorage.Add(block.BlockId, item);
            }

            CommmitDirtyData(dirtyData, commitItems);
            commitItems.Commit();

            var lastTransactionid = LastProcessedTransactionId;
            var count             = block.Transactions.Count;

            if (count > 0)
            {
                lastTransactionid = block.Transactions[count - 1].TransactionId;
            }

            foreach (var metaStorage in _metaDiscStorage)
            {
                metaStorage.LastBlockId       = block.BlockId;
                metaStorage.LastTransactionId = lastTransactionid;
                metaStorage.Commit();
            }

            TransactionStorage.Save();
        }
Example #3
0
        public void ConsumeCoreBlockData(BlockData <CoreBlock> blockData)
        {
            var block = blockData.Block;

            if (block.BlockId < LastProcessedBlockId)
            {
                return;
            }

            var dirtyData = new DirtyData();

            var i = 0;

            foreach (var item in block.Items)
            {
                var operation = item.Transaction;
                if (ConsumeTransaction(dirtyData, item))
                {
                    TransactionStorage.Add(block.BlockId, item);
                    i++;
                }
            }

            ProcessDirtyData(dirtyData);

            var lastTransactionid = LastProcessedTransactionId;
            var count             = block.Items.Count;

            if (count > 0)
            {
                lastTransactionid = block.Items[count - 1].Transaction.OperationId;
            }

            foreach (var metaStorage in _metaDiscStorage)
            {
                metaStorage.LastBlockId       = block.BlockId;
                metaStorage.LastTransactionId = lastTransactionid;
                metaStorage.Commit();
            }

            TransactionStorage.Save();
        }