예제 #1
0
        private async Task <int> ProcessTransactionObservation(TransactionHistoryObservation observation)
        {
            int count = 0;

            try
            {
                var context = new PaymentContext(observation.TableId);
                var last    = await _txHistoryRepository.GetLastRecordAsync(context.TableId);

                if (last != null)
                {
                    context.Cursor = last.PaymentId;
                }

                do
                {
                    count += await QueryAndProcessPayments(observation.Address, context);
                }while (!string.IsNullOrEmpty(context.Cursor));
            }
            catch (Exception ex)
            {
                await _log.WriteErrorAsync(nameof(TransactionHistoryService), nameof(ProcessTransactionObservation),
                                           $"Failed to process transaction observation for address. address={observation.Address}", ex);
            }
            return(count);
        }
예제 #2
0
        private TransactionHistoryObservation CreateTransactionObservation(string address)
        {
            var observation = new TransactionHistoryObservation
            {
                Address = address,
                TableId = Guid.NewGuid().ToString("N").ToUpper()
            };

            return(observation);
        }
예제 #3
0
        public async Task AddOutgoingTransactionObservationAsync(string address)
        {
            var observation = await _observationRepository.GetAsync(address);

            // ReSharper disable once ConvertIfStatementToNullCoalescingExpression
            if (observation == null)
            {
                observation = new TransactionHistoryObservation
                {
                    Address = address
                };
            }
            observation.IsOutgoingObserved = true;

            await _observationRepository.InsertOrReplaceAsync(observation);
        }