public async Task <Boolean> AddUserInput(Models.UserInput userInput) { _context.UserInput.Add(userInput); await _context.SaveChangesAsync(); return(true); }
public HttpStatusCode RegisterIcu() { var restClient = new RestClient("http://localhost:54384/api/"); var restRequest = new RestRequest("ICUConfig/register", Method.POST); Models.UserInput userInput = new Models.UserInput(); userInput.numberOfBeds = 3; userInput.layout = 'H'; restRequest.AddJsonBody(JsonConvert.SerializeObject(userInput)); IRestResponse restResponse = restClient.Execute(restRequest); return(restResponse.StatusCode); }
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); }
public async Task <String> ShouldAcceptTrade(Models.UserInput userInput, BaselineData data) { if (--skipCounter > 0) { return("Skipped"); } //BaselineData data = _cache.Get<BaselineData>(cacheKey); if (!data.hasValues)//(data == null) { //_logger.LogInformation("==========================================================================Baseline doesnt exist yet"); data = ComputeBaselinePPU(await GetBaseline()); //return "No Trade Baseline"; } //if (userInput.purchaseAmount <= baselineAmount) // return "Too small purchase amounts"; /*_logger.LogInformation("Hello1 " + data.sgdToUsdBaseline); * _logger.LogInformation("Hello2 " + data.usdToSgdBaseline); * _logger.LogInformation("Hello3 " + data.sgdToGbpBaseline); * _logger.LogInformation("Hello4 " + data.gbpToSgdBaseline); * _logger.LogInformation("Hello5 " + data.usdToGbpBaseline); * _logger.LogInformation("Hello6 " + data.gbpToUsdBaseline);*/ double applicableConversion = -1.0; if (userInput.sourceCurrency == "SGD") { if (userInput.purchaseCurrency == "USD") { applicableConversion = data.sgdToUsdBaseline; } else if (userInput.purchaseCurrency == "GBP") { applicableConversion = data.sgdToGbpBaseline; } else { _logger.LogInformation("==========================================================================Error Invalid Conversion"); } } else if (userInput.sourceCurrency == "USD") { if (userInput.purchaseCurrency == "SGD") { applicableConversion = data.usdToSgdBaseline; } else if (userInput.purchaseCurrency == "GBP") { applicableConversion = data.usdToGbpBaseline; } else { _logger.LogInformation("==========================================================================Error Invalid Conversion"); } } else if (userInput.sourceCurrency == "GBP") { if (userInput.purchaseCurrency == "SGD") { applicableConversion = data.gbpToSgdBaseline; } else if (userInput.purchaseCurrency == "USD") { applicableConversion = data.gbpToUsdBaseline; } else { _logger.LogInformation("==========================================================================Error Invalid Conversion"); } } else { _logger.LogInformation("==========================================================================Error Invalid Conversion"); } if (((double)userInput.PPU > applicableConversion)) { try { var request = new HttpRequestMessage(HttpMethod.Post, "/api/v1/trade/" + userInput.tradeId); var client = _clientFactory.CreateClient("TradeBankProject"); //var json = JsonConvert.SerializeObject(userInput); //request.Content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { response.EnsureSuccessStatusCode(); //_logger.LogInformation("==========================================================================Trade success"); return("Trade Success"); } else { if (++failCounter > maxFails) { skipCounter = skipAmount; } //_logger.LogInformation("==========================================================================Trade not ours"); //throw new HttpRequestException(); return("Trade already taken"); } } catch (Exception e) { _logger.LogInformation($"message {e.Message}"); return("Trade API Exception"); } } //_logger.LogInformation("==========================================================================Trade offer baseline is low"); return("Trade offer baseline is low"); }