public BaselineListener(ITradeAlgorithm tradeAlgo, IUserInput userInput, ILogger <BaselineListener> logger, IOptions <KafkaOptions> options) : base(logger, options.Value, new List <string> {
     "TradeBaseline", "TradeOffer"
 })
 {
     _logger    = logger;
     _userInput = userInput;
     _tradeAlgo = tradeAlgo;
     //_cache = cache;
     baselineData = new BaselineData();
 }
        public override async Task ProcessingLogic(IConsumer <string, string> consumer, ConsumeResult <string, string> message)
        {
            dynamic kafkaMessage = JsonConvert.DeserializeObject(message.Value);

            //_logger.LogInformation($"message {message.Value}");

            if (kafkaMessage.tradeId != null)
            {
                //_logger.LogInformation("==========================================================================TradeOffer");

                Models.UserInput userInput = new Models.UserInput
                {
                    tradeId          = kafkaMessage.tradeId,
                    sourceCurrency   = kafkaMessage.paymentCurrency,
                    PPU              = kafkaMessage.pricePerUnit,
                    purchaseAmount   = kafkaMessage.requestedAmount,
                    purchaseCurrency = kafkaMessage.requestedCurrency,
                    status           = "Received",
                    timestampCreated = DateTime.Now
                };

                String status = await _tradeAlgo.ShouldAcceptTrade(userInput, baselineData);

                userInput.status = status;

                var gg = await _userInput.AddUserInput(userInput);
            }
            else if (kafkaMessage.RecordId != null)
            {
                //_logger.LogInformation("==========================================================================TradeBaseline");

                /*_logger.LogInformation("Hello1 " + baselineData.sgdToUsdBaseline);
                *  _logger.LogInformation("Hello2 " + baselineData.usdToSgdBaseline);
                *  _logger.LogInformation("Hello3 " + baselineData.sgdToGbpBaseline);
                *  _logger.LogInformation("Hello4 " + baselineData.gbpToSgdBaseline);
                *  _logger.LogInformation("Hello5 " + baselineData.usdToGbpBaseline);
                *  _logger.LogInformation("Hello6 " + baselineData.gbpToUsdBaseline);*/

                Models.Baseline baseline = new Models.Baseline
                {
                    recordId       = kafkaMessage.RecordId,
                    originType     = kafkaMessage.OriginType,
                    originModifier = kafkaMessage.OriginModifier,
                    usdModifier    = kafkaMessage.UsdModifier,
                    gdpModifier    = kafkaMessage.GbpModifier,
                    createdTs      = kafkaMessage.CreatedTs,
                    version        = kafkaMessage.Version
                };

                baselineData = _tradeAlgo.ComputeBaselinePPU(baseline);

                /*_logger.LogInformation("Hello11 " + baselineData.sgdToUsdBaseline);
                *  _logger.LogInformation("Hello12 " + baselineData.usdToSgdBaseline);
                *  _logger.LogInformation("Hello13 " + baselineData.sgdToGbpBaseline);
                *  _logger.LogInformation("Hello14 " + baselineData.gbpToSgdBaseline);
                *  _logger.LogInformation("Hello15 " + baselineData.usdToGbpBaseline);
                *  _logger.LogInformation("Hello16 " + baselineData.gbpToUsdBaseline);*/
            }
            else
            {
                _logger.LogInformation("==========================================================================ERROR, wrong format");
                _logger.LogInformation($"message {message.Value}");
            }

            consumer.Commit(message);
        }