Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        public ActionResult Index()
        {
            var context           = new StoreInfoContext();
            ExchangeRateView info = new ExchangeRateView
            {
                usdExchangeRates = context.USDExchangeRates.ToList(),
                vndExchangeRates = context.VNDExchangeRates.ToList()
            };

            return(View(info));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
        }
Пример #7
0
        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"));
            }
        }
Пример #8
0
        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"));
            }
        }
Пример #9
0
        //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);
        }
Пример #10
0
        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
            {
            }
        }
Пример #11
0
        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);
                    }
                }
            }
        }
Пример #12
0
        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;
                }
            }
        }