public JsonResult GoldPriceData() { var beginDate = new DateTime(1970, 1, 1, 0, 0, 0); var context = new StoreInfoContext(); var sjchcm = context.GoldPriceVietNam_Days.Where(g => g.Name == "SJC TP HCM").Select(g => new { x = DbFunctions.DiffSeconds(beginDate, g.VCreateDate), y = g.Buy }).ToList(); var pnj = context.GoldPriceVietNam_Days.Where(g => g.Name == "PNJ TP.HCM").Select(g => new { x = DbFunctions.DiffSeconds(beginDate, g.VCreateDate), y = g.Buy }).ToList(); var doji = context.GoldPriceVietNam_Days.Where(g => g.Name == "DOJI SG").Select(g => new { x = DbFunctions.DiffSeconds(beginDate, g.VCreateDate), y = g.Buy }).ToList(); return(Json(new ArrayList() { new { key = "SJC HCM", values = sjchcm }, new { key = "PNJ HCM", values = pnj }, new { key = "DOJI HCM", values = doji } }, JsonRequestBehavior.AllowGet)); }
public IEnumerable <ExchangeRateEntity> GetUSDExchangeRate(string name) { name = name.Replace(":", "/"); var context = new StoreInfoContext(); var result = context.USDExchangeRate_Days.Where(r => r.Name == name).ToList(); return(Mapper.Map <IEnumerable <ExchangeRateEntity> >(result)); }
public JsonResult GetMarketBy(string name) { var context = new StoreInfoContext(); var stocks = context.StockMarket_Days.Where(r => r.MarketName == name).ToList(); var result = Mapper.Map <IEnumerable <StockChartEntity> >(stocks); return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult Index() { var context = new StoreInfoContext(); ExchangeRateView info = new ExchangeRateView { usdExchangeRates = context.USDExchangeRates.ToList(), vndExchangeRates = context.VNDExchangeRates.ToList() }; return(View(info)); }
public JsonResult VNDExchangeRateData(string code) { var beginDate = new DateTime(1970, 1, 1, 0, 0, 0); var context = new StoreInfoContext(); var exchangeRates = context.VNDExchangeRate_Days.Where(e => e.Code == code).Select(e => new { x = DbFunctions.DiffSeconds(beginDate, e.UpdatedTime), y = e.Buy }).ToList(); return(Json(new ArrayList() { new { key = code, values = exchangeRates } }, JsonRequestBehavior.AllowGet)); }
public ActionResult GoldPrice() { var context = new StoreInfoContext(); GoldPriceView info = new GoldPriceView { Banks = context.GoldPriceVietNams.Where(g => g.Type == "BANK").ToList(), SJCs = context.GoldPriceVietNams.Where(g => g.Type == "SJC").ToList(), PNJs = context.GoldPriceVietNams.Where(g => g.Type == "PNJ").ToList(), DOJIs = context.GoldPriceVietNams.Where(g => g.Type == "DOJI").ToList(), Others = context.GoldPriceVietNams.Where(g => g.Type == "OTHERS").ToList(), }; return(View(info)); }
public ActionResult StockChart(string mack) { mack = mack.ToUpper(); var context = new StoreInfoContext(); var stockInfo = context.Stocks.Find(mack); if (stockInfo != null) { return(View(stockInfo)); } else { return(new HttpNotFoundResult("Không tìm thấy mã cổ phiếu")); } }
public ActionResult MarketChart(string marketName) { marketName = marketName.ToUpper(); var context = new StoreInfoContext(); var market = context.StockMarkets.Find(marketName); if (market != null) { return(View(market)); } else { return(new HttpNotFoundResult("Không tim thấy sàn")); } }
//TODO: Chuyển sang file web config private RateAndPrices GetRateAndPrices() { var context = new StoreInfoContext(); var result = new RateAndPrices(); //result.LocalGolds = new List<ReuterIndex> { // _reuterIndexRepository.GetByCode("SJC=") //}; //result.GlobalGolds = new List<ReuterIndex> { // _reuterIndexRepository.GetByCode("XAU=") //}; //result.Oils = new List<ReuterIndex> { // _reuterIndexRepository.GetByCode(".NAT_GAS"), // _reuterIndexRepository.GetByCode(".OIL"), // _reuterIndexRepository.GetByCode(".BRENT"), // _reuterIndexRepository.GetByCode(".GASOLINE"), //}; //result.Metals = new List<ReuterIndex> { // _reuterIndexRepository.GetByCode("XAG="), // _reuterIndexRepository.GetByCode("XPT="), //}; //result.VNDRates = _vndExchangeRateRepository.GetLastRates(); //var usdcodes = new List<string> { "EUR=", "INR=", "AUD=", "GBP=" }; //result.GoldVNs = context.GoldPriceVietNams.Where(g => g.IsShow == 1).OrderBy(g => g.Order).ToList(); //result.GoldWorlds = context.GoldPriceWorlds.OrderBy(e => e.Order).ToList(); //result.Metals = context.MetalPrices.Where(e => e.Order > 0).OrderBy(e => e.Order).ToList(); //result.Oils = context.OilPrices.OrderBy(e => e.Order).ToList(); //result.USDRates = context.USDExchangeRates.OrderBy(e => e.Order).ToList(); //result.VNDRates = context.VNDExchangeRates.OrderBy(e => e.Order).ToList(); //result.WorldStocks = context.StockWorlds.ToList(); //result.VNStocks = context.StockMarket_RealTimes.Where(s => s.IsShown).OrderBy(s => s.Order).ToList(); //usdcodes.ForEach(code => result.USDRates.Add(_reuterIndexRepository.GetByCode(code))); //var stockcodes = new List<string> { ".HNXI", ".VNI", ".DJI", ".IXIC", ".GSPC", "WTC-", "/.FCHI", "/.STOXX", "/.FTSE", ".N225", "/.HSI", "/.CSI300" }; //result.GlobalStockList = new List<ReuterIndex>(); //stockcodes.ForEach(code => result.GlobalStockList.Add(_reuterIndexRepository.GetByCode(code))); //result.VnMarketIndices = _vnMarketIndexRepository.GetLastIndices(); return(result); }
private void SaveRealtimeStock(List <RealtimeStock> stocks) { var context = new StoreInfoContext(); try { foreach (var stock in stocks) { if (stock.Symbol.Contains("^")) { var rt_StockMarket = context.StockMarket_RealTimes.Find(stock.Symbol); if (rt_StockMarket == null) { rt_StockMarket = new StockMarket_RealTime() { Close = float.Parse(stock.Close), LastUpdate = DateTime.Now, PercentChange = float.Parse(stock.PercentChange), PriceChange = float.Parse(stock.PriceChange), Ticker = stock.Symbol, Volumn = int.Parse(stock.Volumn) }; context.Entry(rt_StockMarket).State = EntityState.Added; } else { rt_StockMarket.LastUpdate = DateTime.Now; rt_StockMarket.PercentChange = float.Parse(stock.PercentChange); rt_StockMarket.PriceChange = float.Parse(stock.PriceChange); rt_StockMarket.Volumn = int.Parse(stock.Volumn); rt_StockMarket.Close = float.Parse(stock.Close); } } } context.SaveChanges(); } catch { } }
private void SaveTodayStock(ICollection <RealtimeStock> stocks, StoreInfoContext context) { var dictMarkets = new Dictionary <string, string> { { "^HASTC", "HNX" }, { "^VNINDEX", "HOSE" } }; float open, high, low, close; int volumn; DateTime date = DateTime.Now.Date; foreach (var stock in stocks) { //Save market index if (stock.Symbol.Contains("^")) { if (dictMarkets.ContainsKey(stock.Symbol.ToUpper())) { var marketTicker = stock.Symbol.ToUpper(); if (float.TryParse(stock.Open, out open) && float.TryParse(stock.PriceHighest, out high) && float.TryParse(stock.PriceLowest, out low) && float.TryParse(stock.Close, out close) && int.TryParse(stock.Volumn, out volumn) && dictMarkets.ContainsKey(marketTicker)) { var marketName = dictMarkets[marketTicker]; if (context.StockMarket_Days.Find(marketName, date) == null) { var stockMarketDay = new StockMarket_Day { Date = date, Close = close, High = high, Low = low, Open = open, MarketName = marketName, Volumn = volumn }; context.StockMarket_Days.Add(stockMarketDay); } } } } //Save company index else { if (float.TryParse(stock.Open, out open) && float.TryParse(stock.PriceHighest, out high) && float.TryParse(stock.PriceLowest, out low) && float.TryParse(stock.Close, out close) && int.TryParse(stock.Volumn, out volumn) && context.Stock_Days.Find(stock.Symbol, date) == null) { var stockDay = new Stock_Day { Date = date, Close = close, High = high, Low = low, Open = open, Ticker = stock.Symbol, Volumn = volumn }; context.Stock_Days.Add(stockDay); } } } }
private void UpdateStockPrices(object state) { if (_marketState == ViewModels.MarketState.Closed && DateTime.Now.Hour >= 9 && DateTime.Now.Hour < 15) { OpenMarket(); } else if (_marketState == ViewModels.MarketState.Open && (DateTime.Now.Hour >= 15 || DateTime.Now.Hour < 9)) { CloseMarket(); //Lưu lại giá trị ngày hôm nay using (var context = new StoreInfoContext()) { SaveTodayStock(_hoseStocks.Values, context); SaveTodayStock(_hnxStocks.Values, context); SaveTodayStock(_upcomStocks.Values, context); context.SaveChanges(); } } // This function must be re-entrant as it's running as a timer interval handler lock (_updateStockPricesLock) { if (!_updatingStockPrices) { _updatingStockPrices = true; var hoseStocks = ParseStockOnline("http://cophieu68.vn/datax123456/xml_stockonline_ho.txt"); SaveRealtimeStock(hoseStocks); foreach (var updatedStock in hoseStocks) { if (_hoseStocks.ContainsKey(updatedStock.Symbol)) { var stock = _hoseStocks[updatedStock.Symbol]; if (!updatedStock.Equals(stock)) { _hoseStocks[stock.Symbol] = updatedStock; BroadcastHoseStockPrice(updatedStock); } } } var hnxStocks = ParseStockOnline("http://cophieu68.vn/datax123456/xml_stockonline_ha.txt"); SaveRealtimeStock(hnxStocks); foreach (var updatedStock in hnxStocks) { if (_hnxStocks.ContainsKey(updatedStock.Symbol)) { var stock = _hnxStocks[updatedStock.Symbol]; if (!updatedStock.Equals(stock)) { _hnxStocks[stock.Symbol] = updatedStock; BroadcastHnxStockPrice(updatedStock); } } } var upcomStocks = ParseStockOnline("http://cophieu68.vn/datax123456/xml_stockonline_upcom.txt"); SaveRealtimeStock(upcomStocks); foreach (var updatedStock in upcomStocks) { if (_upcomStocks.ContainsKey(updatedStock.Symbol)) { var stock = _upcomStocks[updatedStock.Symbol]; if (!updatedStock.Equals(stock)) { _upcomStocks[stock.Symbol] = updatedStock; BroadcastUpcomStockPrice(updatedStock); } } } _updatingStockPrices = false; } } }