private async Task ProcessMessageAsync(CashInEvent message)
        {
            var fees = message.CashIn.Fees;
            var fee  = fees?.FirstOrDefault()?.Transfer;

            var entity = new Cashin()
            {
                AssetId = message.CashIn.AssetId,
                //BlockchainHash = ,
                FeeSize   = ParseNullabe(fee?.Volume),
                Id        = Guid.Parse(message.Header.RequestId),
                State     = HistoryState.Finished,
                Timestamp = message.Header.Timestamp,
                Volume    = Math.Abs(decimal.Parse(message.CashIn.Volume)),
                WalletId  = Guid.Parse(message.CashIn.WalletId)
            };

            if (!await _historyRecordsRepository.TryInsertAsync(entity))
            {
                _log.Warning($"Skipped duplicated cashin record", context: new
                {
                    id = message.Header.RequestId
                });
            }
        }
        public async Task <CommandHandlingResult> Handle(CreateForwardCashinCommand command, IEventPublisher eventPublisher)
        {
            var entity = Mapper.Map <Cashin>(command);

            if (!await _historyRecordsRepository.TryInsertAsync(entity))
            {
                _logger.Warning($"Skipped duplicated forward cashin record", context: new
                {
                    id = command.OperationId
                });

                return(CommandHandlingResult.Ok());
            }

            eventPublisher.PublishEvent(new ForwardCashinCreatedEvent
            {
                AssetId     = command.AssetId,
                OperationId = command.OperationId,
                Timestamp   = command.Timestamp,
                Volume      = command.Volume,
                WalletId    = command.WalletId
            });

            return(CommandHandlingResult.Ok());
        }
        public async Task <CommandHandlingResult> Handle(CashOutProcessedEvent @event)
        {
            var entity = Mapper.Map <Cashout>(@event);

            if (!await _historyRecordsRepository.TryInsertAsync(entity))
            {
                _logger.Warning($"Skipped duplicated cashout record", context: new
                {
                    id = @event.OperationId
                });
            }

            return(CommandHandlingResult.Ok());
        }
示例#4
0
        public async Task <CommandHandlingResult> Handle(CashTransferProcessedEvent @event)
        {
            var cashInOuts = Mapper.Map <IEnumerable <BaseHistoryRecord> >(@event);

            foreach (var cashInOut in cashInOuts)
            {
                if (!await _historyRecordsRepository.TryInsertAsync(cashInOut))
                {
                    _logger.Warning($"Skipped duplicated transfer record", context: new
                    {
                        id = @event.OperationId
                    });
                }
            }

            return(CommandHandlingResult.Ok());
        }