private Task ProcessMessageAsync(CashInEvent message)
        {
            var fees   = message.CashIn.Fees;
            var fee    = fees?.FirstOrDefault()?.Transfer;
            var @event = new CashInProcessedEvent
            {
                OperationId = Guid.Parse(message.Header.RequestId),
                RequestId   = Guid.Parse(message.Header.MessageId),
                WalletId    = Guid.Parse(message.CashIn.WalletId),
                Volume      = decimal.Parse(message.CashIn.Volume),
                AssetId     = message.CashIn.AssetId,
                Timestamp   = message.Header.Timestamp,
                FeeSize     = ParseNullabe(fee?.Volume)
            };

            _cqrsEngine.PublishEvent(@event, BoundedContext.Name);

            if (fees != null)
            {
                var feeEvent = new FeeChargedEvent
                {
                    OperationId   = message.Header.MessageId,
                    OperationType = FeeOperationType.CashInOut,
                    Fee           = fees.Where(x => x.Transfer != null).Select(x => x.Transfer).ToJson()
                };
                _cqrsEngine.PublishEvent(feeEvent, BoundedContext.Name);
            }

            return(Task.CompletedTask);
        }
        private async Task ProcessMessageAsync(CashInEvent message)
        {
            var fees   = message.CashIn.Fees;
            var fee    = fees?.FirstOrDefault()?.Transfer;
            var @event = new CashInProcessedEvent
            {
                OperationId = Guid.Parse(message.Header.RequestId),
                RequestId   = Guid.Parse(message.Header.MessageId),
                WalletId    = Guid.Parse(message.CashIn.WalletId),
                Volume      = decimal.Parse(message.CashIn.Volume),
                AssetId     = message.CashIn.AssetId,
                Timestamp   = message.Header.Timestamp,
                FeeSize     = ParseNullabe(fee?.Volume)
            };

            _cqrsEngine.PublishEvent(@event, BoundedContext.Name);

            if (fees != null)
            {
                var feeEvent = new FeeChargedEvent
                {
                    OperationId   = message.Header.MessageId,
                    OperationType = FeeOperationType.CashInOut,
                    Fee           = fees.Where(x => x.Transfer != null).Select(x => x.Transfer).ToJson()
                };
                _cqrsEngine.PublishEvent(feeEvent, BoundedContext.Name);
            }

            await _lykkeMailerliteClient.Customers.UpdateDepositAsync(new UpdateCustomerDepositRequest
            {
                CustomerId = message.CashIn.WalletId, RequestId = Guid.NewGuid().ToString(), Timestamp = message.Header.Timestamp.ToTimestamp()
            });
        }
Ejemplo n.º 3
0
        private async Task ProcessMessageAsync(CashInEvent item)
        {
            if (!_depositCurrencies.Contains(item.CashIn.AssetId, StringComparer.InvariantCultureIgnoreCase))
            {
                return;
            }

            _log.Info("CashIn event", context: item.ToJson());

            double volume = Convert.ToDouble(item.CashIn.Volume);

            (double convertedVolume, string assetId) = await _currencyConverter.ConvertAsync(item.CashIn.AssetId, volume);

            if (convertedVolume == 0)
            {
                return;
            }

            _cqrsEngine.PublishEvent(new ClientDepositedEvent
            {
                ClientId      = item.CashIn.WalletId,
                OperationId   = item.Header.MessageId ?? item.Header.RequestId,
                Asset         = item.CashIn.AssetId,
                Amount        = volume,
                BaseAsset     = assetId,
                BaseVolume    = convertedVolume,
                OperationType = "CashIn",
                Timestamp     = item.Header.Timestamp
            }, TierBoundedContext.Name);
        }
        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
                });
            }
        }
Ejemplo n.º 5
0
 private CashInOutQueueMessage ToOld(CashInEvent cashInEvent)
 {
     return(new CashInOutQueueMessage
     {
         Id = cashInEvent.Header.MessageId,
         ClientId = cashInEvent.CashIn.WalletId,
         Amount = cashInEvent.CashIn.Volume,
         AssetId = cashInEvent.CashIn.AssetId,
         Date = cashInEvent.Header.Timestamp,
         Fees = cashInEvent.CashIn.Fees?.ToOldFees(cashInEvent.Header.Timestamp),
     });
 }
Ejemplo n.º 6
0
 private async Task ProcessMessageAsync(CashInEvent item)
 {
     try
     {
         await _cashOperationsCollector.AddDataItemAsync(
             new Service.Limitations.Core.Domain.CashOperation
         {
             Id       = item.Header.MessageId ?? item.Header.RequestId,
             ClientId = item.CashIn.WalletId,
             Asset    = item.CashIn.AssetId,
             Volume   = double.Parse(item.CashIn.Volume),
             DateTime = item.Header.Timestamp,
         });
     }
     catch (Exception ex)
     {
         _log.Error(ex, context: item);
         throw;
     }
 }
Ejemplo n.º 7
0
 private Task ProcessMessageAsync(CashInEvent message)
 {
     UpdateBalances(message.Header, message.BalanceUpdates);
     UpdateTotalBalances(message.Header, message.BalanceUpdates);
     return(Task.CompletedTask);
 }
Ejemplo n.º 8
0
 private async Task ProcessCashinMessage(CashInEvent cashinEvent)
 {
     var message = ToOld(cashinEvent);
     await _messageProcessor.ProcessMessage(message);
 }