static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "CurrencyRates", durable: false, exclusive: false, autoDelete: false, arguments: null); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body); if (!String.IsNullOrEmpty(message)) { using (var context = new CryptoCurrencyTrackerContext()) { RatesInfo messageInfo = JsonConvert.DeserializeObject <RatesInfo>(message); RatesInfo rate = context.Rates.Where(x => x.ApiId == messageInfo.ApiId && x.CurrencyId == messageInfo.CurrencyId).FirstOrDefault(); try { if (rate != null && rate.ID > 0) { rate.RateTime = messageInfo.RateTime; rate.Price = messageInfo.Price; context.Rates.Update(rate); } else { context.Rates.Add(messageInfo); } context.SaveChanges(); } catch (Exception e) { //TO DO Add logging here } } } }; while (true) { channel.BasicConsume(queue: "CurrencyRates", autoAck: true, consumer: consumer); Thread.Sleep(100); } } }
// TO DO: // ADD Logging // Not use While True // Add Configs // Add Comments // Research on optimazing static void Main(string[] args) { List <ApiInfo> apis = new List <ApiInfo>(); List <ExchangeCurrencyInfo> currency = new List <ExchangeCurrencyInfo>(); using (var context = new CryptoCurrencyTrackerContext()) { apis = context.API.ToList(); currency = context.Currency.ToList(); } Tracker tracker = new Tracker(apis, currency); tracker.Start(); }
public JsonResult LoadData(DataTableRequest request) { try { var context = new CryptoCurrencyTrackerContext(); int pageSize = request.length; int skip = request.start; int recordsTotal = 0; var ratesData = context.Rates.Include(x => x.API).Include(m => m.Currency).ToList <RatesInfo>(); recordsTotal = ratesData.Count(); var data = ratesData.Skip(skip).Take(pageSize).ToList(); return(Json(new RatesDataTableModel { draw = request.draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data })); } catch (Exception) { throw; } }