private Task ProcessMessageAsync(CashOutEvent message) { var fees = message.CashOut.Fees; var fee = fees?.FirstOrDefault()?.Transfer; var @event = new CashOutProcessedEvent { OperationId = Guid.Parse(message.Header.RequestId), RequestId = Guid.Parse(message.Header.MessageId), WalletId = Guid.Parse(message.CashOut.WalletId), Volume = decimal.Parse(message.CashOut.Volume), AssetId = message.CashOut.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(CashOutEvent message) { var fees = message.CashOut.Fees; var fee = fees?.FirstOrDefault()?.Transfer; var entity = new Cashout() { //BlockchainHash = , FeeSize = ParseNullabe(fee?.Volume), State = HistoryState.Finished, Id = Guid.Parse(message.Header.RequestId), WalletId = Guid.Parse(message.CashOut.WalletId), AssetId = message.CashOut.AssetId, Timestamp = message.Header.Timestamp, Volume = -Math.Abs(decimal.Parse(message.CashOut.Volume)) }; if (!await _historyRecordsRepository.TryInsertAsync(entity)) { _log.Warning($"Skipped duplicated cashout record", context: new { id = message.Header.RequestId }); } }
private CashInOutQueueMessage ToOld(CashOutEvent cashOutEvent) { return(new CashInOutQueueMessage { Id = cashOutEvent.Header.MessageId, ClientId = cashOutEvent.CashOut.WalletId, Amount = cashOutEvent.CashOut.Volume.StartsWith('-') ? cashOutEvent.CashOut.Volume : $"-{cashOutEvent.CashOut.Volume}", AssetId = cashOutEvent.CashOut.AssetId, Date = cashOutEvent.Header.Timestamp, Fees = cashOutEvent.CashOut.Fees?.ToOldFees(cashOutEvent.Header.Timestamp), }); }
private async Task ProcessMessageAsync(CashOutEvent item) { try { await _cashOperationsCollector.AddDataItemAsync( new Service.Limitations.Core.Domain.CashOperation { Id = item.Header.MessageId ?? item.Header.RequestId, ClientId = item.CashOut.WalletId, Asset = item.CashOut.AssetId, Volume = double.Parse(item.CashOut.Volume), DateTime = item.Header.Timestamp }); } catch (Exception ex) { _log.Error(ex, context: item); throw; } }
private Task ProcessMessageAsync(CashOutEvent message) { UpdateBalances(message.Header, message.BalanceUpdates); UpdateTotalBalances(message.Header, message.BalanceUpdates); return(Task.CompletedTask); }
private async Task ProcessCashoutMessage(CashOutEvent cashoutEvent) { var message = ToOld(cashoutEvent); await _messageProcessor.ProcessMessage(message); }