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 }); } }
private async Task <(Guid, List <BaseHistoryRecord>)> GenerateData(string[] pairs, string[] assets) { var walletId = Guid.NewGuid(); var random = new Random(); const int cashinsCount = 5; const int cashoutsCount = 3; const int tradesCount = 20; var list = new List <BaseHistoryRecord>(); for (var i = 0; i < cashinsCount; i++) { var cashin = new Cashin { Id = Guid.NewGuid(), WalletId = walletId, AssetId = assets[random.Next(assets.Length)], State = HistoryState.Finished, Timestamp = DateTime.UtcNow, Volume = random.Next(1, 100) }; list.Add(cashin); } for (var i = 0; i < cashoutsCount; i++) { var cashout = new Cashout { Id = Guid.NewGuid(), WalletId = walletId, AssetId = assets[random.Next(assets.Length)], State = HistoryState.Finished, Timestamp = DateTime.UtcNow, Volume = -random.Next(1, 100) }; list.Add(cashout); } for (var i = 0; i < tradesCount; i++) { var cashout = new Trade { Id = Guid.NewGuid(), WalletId = walletId, BaseAssetId = assets[random.Next(assets.Length)], Timestamp = DateTime.UtcNow, BaseVolume = -random.Next(1, 100), QuotingAssetId = assets[random.Next(assets.Length)], QuotingVolume = random.Next(1, 50), AssetPairId = pairs[random.Next(pairs.Length)], OrderId = Guid.NewGuid(), Price = random.Next() * 100 }; list.Add(cashout); } var repo = _container.Resolve <IHistoryRecordsRepository>(); await repo.InsertBulkAsync(list); return(walletId, list); }