public void LoadData(Stock myStock) { if(myStock==null || myStock.CompanyProfile==null) return; stock = myStock; Symbol = stock.Symbol; CenterName = Utils.GetCenterFolder(stock.TradeCenterId.ToString()); Load_CoCauSohuu(); KhoiLuongCPNiemYetHienTai(); Load_BanLanhdao(); }
public void LoadData(Stock mystock) { if (mystock == null || mystock.CompanyProfile == null || mystock.CompanyProfile.FinancePeriods == null || mystock.CompanyProfile.financeInfos == null || mystock.CompanyProfile.FinancePeriods.Count == 0) return; stock = mystock; CenterName = Utils.GetCenterFolder(stock.TradeCenterId.ToString()); Symbol = stock.Symbol; txtType.Value = stock.CompanyProfile.FinancePeriods[0].Quarter == 5 ? "2" : "1"; BindData(); BindRepeater(); }
public void LoadData(Stock mystock) { if(mystock==null || mystock.CompanyProfile==null) return; stock = mystock; Symbol = stock.Symbol; CenterName = Utils.GetCenterName(stock.TradeCenterId.ToString()); rptData.DataSource = stock.CompanyProfile.Subsidiaries; rptData.DataBind(); rptCtyLienKet.DataSource = stock.CompanyProfile.AssociatedCompanies; rptCtyLienKet.DataBind(); }
private void GetParams() { Symbol = (Request["Symbol"] ?? "").Trim().ToUpper(); try { stock = ((Stock)((CafeF.Redis.Page.MasterPage.StockMain)(((ContentPlaceHolder)this.Parent.Parent).Page).Master).GetStock); } catch { stock = StockBL.getStockBySymbol(Symbol) ?? null; } if(stock ==null) return; CenterName = Utils.GetCenterFolder(stock.TradeCenterId.ToString()); var allowV2 = (ConfigurationManager.AppSettings["AllowCeoV2"] ?? "") == "TRUE"; HasCeo = (allowV2 && stock.CompanyProfile.AssociatedCeo != null && stock.CompanyProfile.AssociatedCeo.Count > 0); }
public void Load_ThongTinChung(Stock mystock) { stock = mystock; if (stock == null || stock.CompanyProfile.commonInfos == null) return; Symbol = stock.Symbol; CenterName = Utils.GetCenterName(stock.TradeCenterId.ToString()); var common = stock.CompanyProfile.commonInfos; ltrContent_Nhomnganh.Text = common.Category; ltrContent_VonDieule.Text = String.Format("{0:#,###}", common.Capital); ltrKLCPNiemYet.Text = String.Format("{0:#,###}", common.TotalVolume); ltrKLCPLuuHanh.Text = String.Format("{0:#,###}", common.OutstandingVolume); ltrContent_Gioithieu.Text = common.Content; var auditName = common.AuditFirmName??""; var auditSite = (common.AuditFirmSite??"").Trim(); var consultantName = common.ConsultantName??""; var consultantSite = (common.ConsultantSite??"").Trim(); var businessLicense = common.BusinessLicense??""; var consultantSymbol = (common.ConsultantSymbol ?? "").Trim(); if (!string.IsNullOrEmpty(auditSite) && !auditSite.StartsWith("http://") && !auditSite.StartsWith("https://")) { auditSite = "http://" + auditSite; } ltrAudit.Text = string.IsNullOrEmpty(auditSite)?auditName:string.Format("<a href='{0}' target='_blank'>{1}</a>", auditSite, auditName); pnAudit.Visible = !String.IsNullOrEmpty(auditName); if (!string.IsNullOrEmpty(consultantSite) && !consultantSite.StartsWith("http://") && !consultantSite.StartsWith("https://")){ consultantSite = "http://" + consultantSite; } ltrConsultant.Text = string.IsNullOrEmpty(consultantSite) ? consultantName : string.Format("<a href='{0}' target='_blank'>{1}</a>", consultantSite, consultantName); pnConsultant.Visible = !string.IsNullOrEmpty(consultantName); ltrBusinessLicense.Text = businessLicense; pnBusiness.Visible = !string.IsNullOrEmpty(businessLicense); pnAuditConsultant.Visible = !String.IsNullOrEmpty(auditName) || !string.IsNullOrEmpty(consultantName) || !string.IsNullOrEmpty(businessLicense); pnConsultantStock.Visible = false; if(!string.IsNullOrEmpty(consultantSymbol)) { var info = StockBL.GetStockCompactInfo(consultantSymbol); if(info!=null) { ltrConsultantStock.Text = string.Format("<a href='{0}' target='_blank'>{1}</a>", Utils.GetSymbolLink(info.Symbol, info.CompanyName, info.TradeCenterId.ToString()), info.Symbol); pnConsultantStock.Visible = true; } } }
protected void Page_Load(object sender, EventArgs e) { __Symbol = (Request.QueryString["symbol"] ?? "").Trim().ToUpper(); if (__Symbol == "") return; __Symbol = Server.UrlDecode(__Symbol); __Symbol = __Symbol.Replace(",", ""); try { stock = ((Stock)((CafeF.Redis.Page.MasterPage.StockMain)(((ContentPlaceHolder)this.Parent).Page).Master).GetStock); } catch (Exception) { stock = StockBL.getStockBySymbol(__Symbol); } if (stock == null) return; if (IsPostBack) return; lblStatus.Text = stock.StatusText; lblStatus.Visible = !string.IsNullOrEmpty(stock.StatusText); symbolFolder = stock.FolderImage; if(stock.PrevTradeInfo==null || stock.PrevTradeInfo.Count==0) { divFirstInfo.Visible = false; }else { var temp = "<tr><td style=\"color:#343434; background: url(http://cafef3.vcmedia.vn/images/images/top_6px_dot.gif) no-repeat transparent top left; padding-left: 10px;\">Giao dịch đầu tiên tại <b>{0}</b>:</td><td style=\"font-weight: bold; color: #004370; text-align:right;\">{1}</td></tr><tr><td style=\"color:#343434;\">Với Khối lượng (cp):</td><td style=\"font-weight: bold; text-align:right;\">{2}</td></tr><tr><td style=\"color:#343434;\">Giá đóng cửa trong ngày (nghìn đồng):</td><td style=\"font-weight: bold; text-align:right;\">{3}</td></tr><tr><td style=\"color:#343434;\">Ngày giao dịch cuối cùng:</td><td style=\"font-weight: bold; color: #004370; text-align:right;\">{4}</td></tr>"; var tret = "<table width='100%' border='0' cellspacing='0' cellpadding='0'>"; foreach (var info in stock.PrevTradeInfo) { tret += string.Format(temp, info.Floor, info.FirstDate.ToString("dd/MM/yyyy"), info.FirstVolume.ToString("#,##0"), info.FirstPrice.ToString("#,##0.0"), info.EndDate.ToString("dd/MM/yyyy")); } tret += "</table>"; ltrFirstInfo.Text = tret; divFirstInfo.Visible = true; } GenData(stock.CompanyProfile.basicInfos); GenDataPrice(__Symbol); }
private void button1_Click(object sender, EventArgs e) { var start = DateTime.Now; textBox1.Text = start.ToString(); var redis = new RedisClient(ConfigRedis.Host, ConfigRedis.Port); var sdt = SqlDb.GetSymbolList(-1); foreach (DataRow dr in sdt.Rows) { Thread.Sleep(1000); var start2 = DateTime.Now; string symbol = dr["Symbol"].ToString().ToUpper(); symbol = "SSI"; try { #region Update stock from sql //stock.Symbol = "AAA"; //load stock data var dt = SqlDb.GetSymbolData(symbol); if (dt.Rows.Count <= 0) return; var row = dt.Rows[0]; var stock = new Stock() { Symbol = row["Symbol"].ToString(), TradeCenterId = int.Parse(row["TradeCenterId"].ToString()), IsDisabled = row["IsDisabled"].ToString() == "1", StatusText = row["StatusText"].ToString(), ShowTradeCenter = row["ShowTradeCenter"].ToString() == "1", FolderImage = row["FolderChart"].ToString() }; //profile var profile = new CompanyProfile { Symbol = stock.Symbol }; //profile - basicInfo var basicInfo = new BasicInfo() { Symbol = stock.Symbol, Name = row["CompanyName"].ToString(), TradeCenter = stock.TradeCenterId.ToString() }; //profile - basicInfo - basicCommon /*PE = double.Parse(row["PE"].ToString()),*/ var basicCommon = new BasicCommon() { AverageVolume = double.Parse(row["AVG10SS"].ToString()), Beta = double.Parse(row["Beta"].ToString()), EPS = double.Parse(row["EPS"].ToString()), Symbol = stock.Symbol, TotalValue = double.Parse(row["MarketCap"].ToString()), ValuePerStock = double.Parse(row["BookValue"].ToString()), VolumeTotal = double.Parse(row["SLCPNY"].ToString()) }; basicCommon.PE = basicCommon.EPS != 0 ? (double.Parse(row["LastPrice"].ToString()) / basicCommon.EPS) : 0; basicInfo.basicCommon = basicCommon; //profile - basicInfo - category var category = new CategoryObject() { ID = int.Parse(row["CategoryId"].ToString()), Name = row["CategoryName"].ToString() }; basicInfo.category = category; //profile - basicInfo - firstInfo var firstInfo = new FirstInfo() { FirstPrice = double.Parse(row["FirstPrice"].ToString()), FirstTrade = row["FirstTrade"].Equals(DBNull.Value) ? null : ((DateTime?)row["FirstTrade"]), FirstVolume = double.Parse(row["FirstVolume"].ToString()), Symbol = stock.Symbol }; basicInfo.firstInfo = firstInfo; profile.basicInfos = basicInfo; //profile - subsidiaries var subsidiaries = new List<OtherCompany>(); var associates = new List<OtherCompany>(); var cdt = SqlDb.GetChildrenCompany(stock.Symbol); var i = 0; foreach (DataRow cdr in cdt.Rows) { i++; var child = new OtherCompany() { Name = cdr["CompanyName"].ToString(), Note = cdr["NoteInfo"].ToString(), OwnershipRate = double.Parse(cdr["Rate"].ToString()), Order = i, SharedCapital = double.Parse(cdr["TotalShareValue"].ToString()), Symbol = stock.Symbol, TotalCapital = double.Parse(cdr["CharterCapital"].ToString()) }; if (cdr["isCongTyCon"].ToString() == "1") subsidiaries.Add(child); else associates.Add(child); } profile.Subsidiaries = subsidiaries; profile.AssociatedCompanies = associates; //profile - commonInfo var commonInfo = new CommonInfo() { Symbol = stock.Symbol, Capital = double.Parse(row["VonDieuLe"].ToString()), Category = row["CategoryName"].ToString(), Content = row["About"].ToString(), OutstandingVolume = double.Parse(row["TotalShare"].ToString()), TotalVolume = double.Parse(row["SLCPNY"].ToString()) }; commonInfo.Content += "<p><b>Địa chỉ:</b> " + row["Address"].ToString() + "</p>"; commonInfo.Content += "<p><b>Điện thoại:</b> " + row["Phone"].ToString() + "</p>"; commonInfo.Content += "<p><b>Người phát ngôn:</b> " + row["Spokenman"].ToString() + "</p>"; if (string.IsNullOrEmpty(row["Email"].ToString())) commonInfo.Content += "<p><b>Email:</b> <a href='mailto:" + row["Email"] + "'>" + row["Email"] + "</a></p>"; if (string.IsNullOrEmpty(row["Website"].ToString())) commonInfo.Content += "<p><b>Website:</b> <a href='" + row["Website"] + "'>" + row["Website"] + "</a></p>"; profile.commonInfos = commonInfo; //profile - financePeriod var fyt = SqlDb.GetFinancePeriod(stock.Symbol); var periods = new List<FinancePeriod>(); FinancePeriod period = null; var tmp = 0; foreach (DataRow fyr in fyt.Rows) { if (period == null || tmp != int.Parse(fyr["Year"].ToString()) * 10 + int.Parse(fyr["QuarterType"].ToString())) { if (period != null) { period.UpdateTitle(); periods.Add(period); } period = new FinancePeriod() { Quarter = int.Parse(fyr["QuarterType"].ToString()), Year = int.Parse(fyr["Year"].ToString()) }; } tmp = int.Parse(fyr["Year"].ToString()) * 10 + int.Parse(fyr["QuarterType"].ToString()); switch (fyr["MaChiTieu"].ToString()) { case "Audited": period.SubTitle = fyr["TieuDeNhom"].ToString(); break; case "QuarterModify": var qrt = fyr["TieuDeNhom"].ToString(); var qrti = 0; if (qrt.EndsWith("T")) { period.QuarterTitle = qrt.Remove(qrt.Length - 1) + " tháng"; } else if (int.TryParse(qrt, out qrti) && qrti >= 1 && qrti < 5) { period.QuarterTitle = "Quý " + qrti; } else period.QuarterTitle = ""; break; case "YearModify": if (int.TryParse(fyr["TieuDeNhom"].ToString(), out qrti)) { period.YearTitle = "Năm " + qrti; } else period.YearTitle = ""; break; case "FromDate": qrt = fyr["TieuDeNhom"].ToString(); if (qrt.Contains("/")) period.BeginTitle = qrt.Substring(0, qrt.LastIndexOf("/")); break; case "ToDate": qrt = fyr["TieuDeNhom"].ToString(); if (qrt.Contains("/")) period.EndTitle = qrt.Substring(0, qrt.LastIndexOf("/")); break; default: break; } } if (period != null) { period.UpdateTitle(); periods.Add(period); } profile.FinancePeriods = periods; //profile - financeInfo var financeInfo = new List<FinanceInfo>(); var fit = SqlDb.GetChiTieuFinance(stock.Symbol); var fvt = SqlDb.GetFinanceData(stock.Symbol); var groupId = 0; FinanceInfo info = null; foreach (DataRow fir in fit.Rows) { if (info == null || groupId != int.Parse(fir["LoaiChiTieu"].ToString())) { if (info != null) financeInfo.Add(info); info = new FinanceInfo() { NhomChiTieuId = groupId, Symbol = stock.Symbol, TenNhomChiTieu = fir["TenLoaiChiTieu"].ToString() }; } groupId = int.Parse(fir["LoaiChiTieu"].ToString()); var chiTieu = new FinanceChiTieu() { ChiTieuId = fir["MaChiTieu"].ToString(), TenChiTieu = fir["TieuDeKhac"].ToString() }; if (fir["MaChiTieu"].ToString() == "ROA") { int b = 0; } foreach (var financePeriod in periods) { var fvrs = fvt.Select("MaChiTieu = '" + fir["MaChiTieu"] + "' AND Year = " + financePeriod.Year + " AND QuarterType = " + financePeriod.Quarter); if (fvrs.Length > 0) { chiTieu.Values.Add(new FinanceValue() { Quarter = financePeriod.Quarter, Year = financePeriod.Year, Value = double.Parse(fvrs[0]["FinanceValue"].ToString()) }); } else { chiTieu.Values.Add(new FinanceValue() { Quarter = financePeriod.Quarter, Year = financePeriod.Year, Value = 0 }); } } info.ChiTieus.Add(chiTieu); } if (info != null) financeInfo.Add(info); profile.financeInfos = financeInfo; //profile - leader var leaders = new List<Leader>(); var ldt = SqlDb.GetCeos(stock.Symbol); foreach (DataRow ldr in ldt.Rows) { leaders.Add(new Leader() { GroupID = ldr["ParentId"].ToString(), Name = ldr["FullName"].ToString(), Positions = ldr["TenNhom"].ToString() }); } profile.Leaders = leaders; //profile - owner var owners = new List<MajorOwner>(); var odt = SqlDb.GetShareHolders(stock.Symbol); foreach (DataRow odr in odt.Rows) { owners.Add(new MajorOwner() { Name = odr["FullName"].ToString(), Rate = double.Parse(odr["ShareHoldPct"].ToString()), ToDate = (DateTime)odr["DenNgay"], Volume = double.Parse(odr["SoCoPhieu"].ToString()) }); } profile.MajorOwners = owners; stock.CompanyProfile = profile; //business plans var plans = new List<BusinessPlan>(); if (row["HasPlan"].ToString() == "1") { plans.Add(new BusinessPlan() { Body = row["PlanNote"].ToString(), Date = (DateTime)row["PlanDate"], DividendsMoney = double.Parse(row["Dividend"].ToString()), DividendsStock = double.Parse(row["DivStock"].ToString()), ID = int.Parse(row["PlanId"].ToString()), IncreaseExpected = double.Parse(row["CapitalRaising"].ToString()), ProfitATax = double.Parse(row["NetIncome"].ToString()), ProfitBTax = double.Parse(row["TotalProfit"].ToString()), Revenue = double.Parse(row["TotalIncome"].ToString()), Symbol = stock.Symbol, Year = int.Parse(row["KYear"].ToString()) }); } stock.BusinessPlans1 = plans; //dividend histories var divs = new List<DividendHistory>(); var ddt = SqlDb.GetDividendHistory(stock.Symbol); foreach (DataRow ddr in ddt.Rows) { divs.Add(new DividendHistory() { DonViDoiTuong = ddr["DonViDoiTuong"].ToString(), NgayGDKHQ = (DateTime)ddr["NgayGDKHQ"], GhiChu = ddr["GhiChu"].ToString(), SuKien = ddr["SuKien"].ToString(), Symbol = stock.Symbol, TiLe = ddr["TiLe"].ToString() }); } stock.DividendHistorys = divs; //báo cáo phân tích var reports = new List<Reports>(); var rdt = SqlDb.GetAnalysisReports(stock.Symbol); foreach (DataRow rdr in rdt.Rows) { reports.Add(new Reports() { ID = int.Parse(rdr["ID"].ToString()), Title = rdr["title"].ToString(), DateDeploy = (DateTime)rdr["PublishDate"], ResourceCode = rdr["Source"].ToString(), IsHot = rdr["IsHot"].ToString().ToLower() == "true" }); } stock.Reports3 = reports; //công ty cùng ngành var samecateCompanies = new List<StockShortInfo>(); var scdt = SqlDb.GetSameCateCompanies(stock.Symbol); foreach (DataRow scdr in scdt.Rows) { samecateCompanies.Add(new StockShortInfo() { Symbol = scdr["StockSymbol"].ToString(), TradeCenterId = int.Parse(scdr["TradeCenterId"].ToString()), Name = scdr["FullName"].ToString(), EPS = double.Parse(scdr["EPS"].ToString()) }); } stock.SameCategory = samecateCompanies; //eps tương đương var sameEPSCompanies = new List<StockShortInfo>(); var sedt = SqlDb.GetSameEPSCompanies(stock.Symbol); foreach (DataRow sedr in sedt.Rows) { sameEPSCompanies.Add(new StockShortInfo() { Symbol = sedr["StockSymbol"].ToString(), TradeCenterId = int.Parse(sedr["TradeCenterId"].ToString()), Name = sedr["FullName"].ToString(), EPS = double.Parse(sedr["EPS"].ToString()), MarketValue = double.Parse(sedr["MarketCap"].ToString()) }); } stock.SameEPS = sameEPSCompanies; //pe tương đương var samePECompanies = new List<StockShortInfo>(); var spdt = SqlDb.GetSamePECompanies(stock.Symbol); foreach (DataRow spdr in spdt.Rows) { samePECompanies.Add(new StockShortInfo() { Symbol = spdr["StockSymbol"].ToString(), TradeCenterId = int.Parse(spdr["TradeCenterId"].ToString()), Name = spdr["FullName"].ToString(), EPS = double.Parse(spdr["EPS"].ToString()), MarketValue = double.Parse(spdr["MarketCap"].ToString()) }); } stock.SamePE = samePECompanies; //stock history var history = new StockCompactHistory(); //stock history - price var price = new List<PriceCompactHistory>(); var pdt = SqlDb.GetPriceHistory(stock.Symbol, 10); foreach (DataRow pdr in pdt.Rows) { price.Add(new PriceCompactHistory() { ClosePrice = double.Parse(pdr["Price"].ToString()), BasicPrice = double.Parse(pdr["BasicPrice"].ToString()), Ceiling = double.Parse(pdr["Ceiling"].ToString()), Floor = double.Parse(pdr["Floor"].ToString()), Volume = double.Parse(pdr["Volume"].ToString()), TotalValue = double.Parse(pdr["TotalValue"].ToString()), TradeDate = (DateTime)pdr["TradeDate"] }); } history.Price = price; //stock history - order var order = new List<OrderCompactHistory>(); var hodt = SqlDb.GetOrderHistory(stock.Symbol, 10); foreach (DataRow hodr in hodt.Rows) { order.Add(new OrderCompactHistory() { AskAverageVolume = double.Parse(hodr["AskAverage"].ToString()), AskLeft = double.Parse(hodr["AskLeft"].ToString()), BidAverageVolume = double.Parse(hodr["BidAverage"].ToString()), BidLeft = double.Parse(hodr["BidLeft"].ToString()), TradeDate = (DateTime)hodr["Trading_Date"] }); } history.Orders = order; //stock history - foreign var foreign = new List<ForeignCompactHistory>(); var fdt = SqlDb.GetForeignHistory(stock.Symbol, 10); foreach (DataRow fdr in fdt.Rows) { foreign.Add(new ForeignCompactHistory() { BuyPercent = double.Parse(fdr["FBuyPercent"].ToString()), SellPercent = double.Parse(fdr["FSellPercent"].ToString()), NetVolume = double.Parse(fdr["FNetVolume"].ToString()), NetValue = double.Parse(fdr["FNetValue"].ToString()), TradeDate = (DateTime)fdr["Trading_Date"] }); } history.Foreign = foreign; stock.StockPriceHistory = history; //tin tức và sự kiện var news = new List<StockNews>(); var ndt = SqlDb.GetCompanyNews(stock.Symbol, -1); foreach (DataRow ndr in ndt.Rows) { news.Add(new StockNews() { DateDeploy = (DateTime)ndr["PostTime"], ID = int.Parse(ndr["Id"].ToString()), Title = ndr["Title"].ToString(), TypeID = ndr["ConfigId"].ToString() }); } stock.StockNews = news; #endregion var end2 = DateTime.Now; //var st = BLFACTORY.RedisClient.Get<Stock>("stock:stockid:ACB:Object"); string key = string.Format(RedisKey.Key, symbol); //var redis = new RedisClient(ConfigRedis.Host, ConfigRedis.Port); if (redis.ContainsKey(key)) redis.Set<Stock>(key, stock); else redis.Add<Stock>(key, stock); } catch (Exception ex) { MessageBox.Show(symbol + " : " + ex.ToString()); } } DateTime end = DateTime.Now; MessageBox.Show("DOne"); //var set = DateTime.Now; //textBox3.Text = set.ToString(); ////var st = redis.Get<Stock>(key); //var get = DateTime.Now; //textBox4.Text = get.ToString(); }
private bool UpdateStock(string symbol) { var ret = true; var related = new List<string>(); var sql = new SqlDb(); //////log.WriteEntry(symbol + "-1-" + ret, EventLogEntryType.Information); try { var redis = new RedisClient(ConfigRedis.Host, ConfigRedis.Port); var key = string.Format(RedisKey.Key, symbol.ToUpper()); var bExisted = false; var stock = new Stock() { Symbol = symbol }; #region Update stock from sql //stock.Symbol = "AAA"; //load stock data //profile var profile = bExisted ? stock.CompanyProfile : new CompanyProfile { Symbol = stock.Symbol }; var basicInfo = bExisted ? profile.basicInfos : new BasicInfo() { Symbol = stock.Symbol }; var basicCommon = bExisted ? profile.basicInfos.basicCommon : new BasicCommon() { Symbol = stock.Symbol }; var category = bExisted ? profile.basicInfos.category : new CategoryObject(); var firstInfo = bExisted ? profile.basicInfos.firstInfo : new FirstInfo() { Symbol = stock.Symbol }; var commonInfo = bExisted ? profile.commonInfos : new CommonInfo() { Symbol = stock.Symbol }; //basic information if (!bExisted || related.Contains("SB")) { try { var dt = sql.GetSymbolData(symbol); if (dt.Rows.Count <= 0) return true; var row = dt.Rows[0]; #region StockCompactInfo var compactkey = string.Format(RedisKey.KeyCompactStock, symbol.ToUpper()); var compact = new StockCompactInfo() { Symbol = symbol.ToUpper(), TradeCenterId = int.Parse(row["TradeCenterId"].ToString()), CompanyName = row["CompanyName"].ToString(), EPS = double.Parse(row["EPS"].ToString()), FolderChart = row["FolderChart"].ToString(), ShowTradeCenter = row["ShowTradeCenter"].ToString().ToUpper() == "TRUE", IsBank = row["IsBank"].ToString().ToUpper() == "TRUE", IsCCQ = row["IsCCQ"].ToString().ToUpper() == "TRUE" }; if (redis.ContainsKey(compactkey)) redis.Set(compactkey, compact); else redis.Add(compactkey, compact); #endregion stock.Symbol = row["Symbol"].ToString(); stock.TradeCenterId = int.Parse(row["TradeCenterId"].ToString()); stock.IsDisabled = row["IsDisabled"].ToString() == "TRUE"; stock.StatusText = row["StatusText"].ToString(); stock.ShowTradeCenter = row["ShowTradeCenter"].ToString().ToUpper() == "TRUE"; stock.FolderImage = row["FolderChart"].ToString(); stock.IsBank = row["IsBank"].ToString() == "TRUE"; stock.IsCCQ = row["IsCCQ"].ToString().ToUpper() == "TRUE"; //profile - basicInfo basicInfo.Name = row["CompanyName"].ToString(); basicInfo.TradeCenter = stock.TradeCenterId.ToString(); //profile - basicInfo - basicCommon /*PE = double.Parse(row["PE"].ToString()),*/ basicCommon.AverageVolume = double.Parse(row["AVG10SS"].ToString()); basicCommon.Beta = double.Parse(row["Beta"].ToString()); basicCommon.EPS = double.Parse(row["EPS"].ToString()); basicCommon.TotalValue = double.Parse(row["MarketCap"].ToString()); basicCommon.ValuePerStock = double.Parse(row["BookValue"].ToString()); basicCommon.VolumeTotal = double.Parse(row["SLCPNY"].ToString()); basicCommon.OutstandingVolume = double.Parse(row["TotalShare"].ToString()); basicCommon.PE = basicCommon.EPS != 0 ? (double.Parse(row["LastPrice"].ToString()) / basicCommon.EPS) : 0; basicCommon.EPSDate = row["EPSDate"].ToString(); basicCommon.CCQv3 = double.Parse(row["CCQv3"].ToString()); basicCommon.CCQv6 = double.Parse(row["CCQv6"].ToString()); basicCommon.CCQdate = DateTime.ParseExact(row["CCQdate"].ToString(), "yyyy.MM.dd", CultureInfo.InvariantCulture, DateTimeStyles.None); basicInfo.basicCommon = basicCommon; //profile - basicInfo - category category.ID = int.Parse(row["CategoryId"].ToString()); category.Name = row["CategoryName"].ToString(); basicInfo.category = category; //profile - basicInfo - firstInfo firstInfo.FirstPrice = double.Parse(row["FirstPrice"].ToString()); firstInfo.FirstTrade = row["FirstTrade"].Equals(DBNull.Value) ? null : ((DateTime?)row["FirstTrade"]); firstInfo.FirstVolume = double.Parse(row["FirstVolume"].ToString()); basicInfo.firstInfo = firstInfo; profile.basicInfos = basicInfo; //profile - commonInfo commonInfo.Capital = double.Parse(row["VonDieuLe"].ToString()); commonInfo.Category = row["CategoryName"].ToString(); commonInfo.Content = row["About"].ToString(); commonInfo.OutstandingVolume = double.Parse(row["TotalShare"].ToString()); commonInfo.TotalVolume = double.Parse(row["SLCPNY"].ToString()); commonInfo.Content += "<p><b>Địa chỉ:</b> " + row["Address"].ToString() + "</p>"; commonInfo.Content += "<p><b>Điện thoại:</b> " + row["Phone"].ToString() + "</p>"; commonInfo.Content += "<p><b>Người phát ngôn:</b> " + row["Spokenman"].ToString() + "</p>"; if (!string.IsNullOrEmpty(row["Email"].ToString())) commonInfo.Content += "<p><b>Email:</b> <a href='mailto:" + row["Email"] + "'>" + row["Email"] + "</a></p>"; if (!string.IsNullOrEmpty(row["Website"].ToString())) commonInfo.Content += "<p><b>Website:</b> <a href='" + row["Website"] + "' target='_blank'>" + row["Website"] + "</a></p>"; commonInfo.AuditFirmName = row["AuditName"].ToString(); commonInfo.AuditFirmSite = row["AuditSite"].ToString().Trim(); commonInfo.ConsultantName = row["ConsultantName"].ToString(); commonInfo.ConsultantSite = row["ConsultantSite"].ToString(); commonInfo.BusinessLicense = row["BusinessLicense"].ToString(); profile.commonInfos = commonInfo; //business plans var plans = new List<BusinessPlan>(); if (row["HasPlan"].ToString() == "1") { plans.Add(new BusinessPlan() { Body = row["PlanNote"].ToString(), Date = (DateTime)row["PlanDate"], DividendsMoney = double.Parse(row["Dividend"].ToString()), DividendsStock = double.Parse(row["DivStock"].ToString()), ID = int.Parse(row["PlanId"].ToString()), IncreaseExpected = double.Parse(row["CapitalRaising"].ToString()), ProfitATax = double.Parse(row["NetIncome"].ToString()), ProfitBTax = double.Parse(row["TotalProfit"].ToString()), Revenue = double.Parse(row["TotalIncome"].ToString()), Symbol = stock.Symbol, Year = int.Parse(row["KYear"].ToString()) }); } stock.BusinessPlans1 = plans; } catch (Exception ex) { ////log.WriteEntry(symbol + " : BasicInfo : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //profile - subsidiaries if (!bExisted || related.Contains("SS")) { try { var subsidiaries = new List<OtherCompany>(); var associates = new List<OtherCompany>(); var cdt = sql.GetChildrenCompany(stock.Symbol); var i = 0; foreach (DataRow cdr in cdt.Rows) { i++; var child = new OtherCompany() { Name = cdr["CompanyName"].ToString(), Note = cdr["NoteInfo"].ToString(), OwnershipRate = double.Parse(cdr["Rate"].ToString()), Order = i, SharedCapital = double.Parse(cdr["TotalShareValue"].ToString()), Symbol = stock.Symbol, TotalCapital = double.Parse(cdr["CharterCapital"].ToString()) }; if (cdr["isCongTyCon"].ToString() == "1") subsidiaries.Add(child); else associates.Add(child); } profile.Subsidiaries = subsidiaries; profile.AssociatedCompanies = associates; } catch (Exception ex) { ////log.WriteEntry(symbol + " : Cty con : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //profile - financePeriod if (!bExisted || related.Contains("SF")) { try { var periods = new List<FinancePeriod>(); var financeInfo = new List<FinanceInfo>(); var fyt = sql.GetFinancePeriod(stock.Symbol); FinancePeriod period = null; var tmp = 0; foreach (DataRow fyr in fyt.Rows) { if (period == null || tmp != int.Parse(fyr["Year"].ToString()) * 10 + int.Parse(fyr["QuarterType"].ToString())) { if (period != null) { period.UpdateTitle(); periods.Add(period); } period = new FinancePeriod() { Quarter = int.Parse(fyr["QuarterType"].ToString()), Year = int.Parse(fyr["Year"].ToString()) }; } tmp = int.Parse(fyr["Year"].ToString()) * 10 + int.Parse(fyr["QuarterType"].ToString()); switch (fyr["MaChiTieu"].ToString()) { case "Audited": period.SubTitle = fyr["TieuDeNhom"].ToString(); break; case "QuarterModify": var qrt = fyr["TieuDeNhom"].ToString(); var qrti = 0; if (qrt.EndsWith("T")) { period.QuarterTitle = qrt.Remove(qrt.Length - 1) + " tháng"; } else if (int.TryParse(qrt, out qrti) && qrti >= 1 && qrti < 5) { period.QuarterTitle = "Quý " + qrti; } else period.QuarterTitle = ""; break; case "YearModify": if (int.TryParse(fyr["TieuDeNhom"].ToString(), out qrti)) { period.YearTitle = "Năm " + qrti; } else period.YearTitle = ""; break; case "FromDate": qrt = fyr["TieuDeNhom"].ToString(); if (qrt.Contains("/")) period.BeginTitle = qrt.Substring(0, qrt.LastIndexOf("/")); break; case "ToDate": qrt = fyr["TieuDeNhom"].ToString(); if (qrt.Contains("/")) period.EndTitle = qrt.Substring(0, qrt.LastIndexOf("/")); break; default: break; } } if (period != null) { period.UpdateTitle(); periods.Add(period); } profile.FinancePeriods = periods; //profile - financeInfo var fit = sql.GetChiTieuFinance(stock.Symbol); var fvt = sql.GetFinanceData(stock.Symbol); var groupId = 0; FinanceInfo info = null; foreach (DataRow fir in fit.Rows) { if (info == null || groupId != int.Parse(fir["LoaiChiTieu"].ToString())) { if (info != null) financeInfo.Add(info); info = new FinanceInfo() { NhomChiTieuId = groupId, Symbol = stock.Symbol, TenNhomChiTieu = fir["TenLoaiChiTieu"].ToString() }; } groupId = int.Parse(fir["LoaiChiTieu"].ToString()); var chiTieu = new FinanceChiTieu() { ChiTieuId = fir["MaChiTieu"].ToString(), TenChiTieu = fir["TieuDeKhac"].ToString() }; if (fir["MaChiTieu"].ToString() == "ROA") { int b = 0; } foreach (var financePeriod in periods) { var fvrs = fvt.Select("MaChiTieu = '" + fir["MaChiTieu"] + "' AND Year = " + financePeriod.Year + " AND QuarterType = " + financePeriod.Quarter); if (fvrs.Length > 0) { chiTieu.Values.Add(new FinanceValue() { Quarter = financePeriod.Quarter, Year = financePeriod.Year, Value = double.Parse(fvrs[0]["FinanceValue"].ToString()) }); } else { chiTieu.Values.Add(new FinanceValue() { Quarter = financePeriod.Quarter, Year = financePeriod.Year, Value = 0 }); } } info.ChiTieus.Add(chiTieu); } if (info != null) financeInfo.Add(info); profile.financeInfos = financeInfo; } catch (Exception ex) { ////log.WriteEntry(symbol + " : FinanceInfo : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //profile - leader if (!bExisted || related.Contains("SC")) { try { var leaders = new List<Leader>(); var ldt = sql.GetCeos(stock.Symbol); foreach (DataRow ldr in ldt.Rows) { leaders.Add(new Leader() { GroupID = ldr["ParentId"].ToString(), Name = ldr["FullName"].ToString(), Positions = ldr["TenNhom"].ToString() }); } profile.Leaders = leaders; } catch (Exception ex) { ////log.WriteEntry(symbol + " : Leaders : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //profile - owner if (!bExisted || related.Contains("SH")) { try { var owners = new List<MajorOwner>(); var odt = sql.GetShareHolders(stock.Symbol); foreach (DataRow odr in odt.Rows) { owners.Add(new MajorOwner() { Name = odr["FullName"].ToString(), Rate = double.Parse(odr["ShareHoldPct"].ToString()), ToDate = (DateTime)odr["DenNgay"], Volume = double.Parse(odr["SoCoPhieu"].ToString()) }); } profile.MajorOwners = owners; } catch (Exception ex) { ////log.WriteEntry(symbol + " : Owners : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //profile - CEO if (!bExisted || related.Contains("SCN")) { try { var ceos = new List<StockCeo>(); var cdt = sql.GetCeosNew(stock.Symbol); foreach (DataRow cdr in cdt.Rows) { var ceo = new StockCeo() { CeoId = int.Parse(cdr["CeoId"].ToString()), CeoCode = cdr["CeoCode"].ToString(), GroupID = int.Parse(cdr["PositionType"].ToString()), Name = cdr["CeoName"].ToString(), Positions = cdr["PositionName"].ToString(), Process = cdr["CeoProfileShort"].ToString(), Age = 0 }; var birthday = cdr["CeoBirthday"].ToString(); if (birthday.Contains("/")) { int year; if (!int.TryParse(birthday.Substring(birthday.LastIndexOf("/") + 1), out year)) year = 0; if (year > 0) { if (year < 100) year = 1900 + year; ceo.Age = year; } } ceos.Add(ceo); } profile.AssociatedCeo = ceos; } catch (Exception ex) { ////log.WriteEntry(symbol + " : CEO New : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } stock.CompanyProfile = profile; /*================================*/ //dividend histories if (!bExisted || related.Contains("SD")) { try { var divs = new List<DividendHistory>(); var ddt = sql.GetDividendHistory(stock.Symbol); foreach (DataRow ddr in ddt.Rows) { divs.Add(new DividendHistory() { DonViDoiTuong = ddr["DonViDoiTuong"].ToString(), NgayGDKHQ = (DateTime)ddr["NgayGDKHQ"], GhiChu = ddr["GhiChu"].ToString(), SuKien = ddr["SuKien"].ToString(), Symbol = stock.Symbol, TiLe = ddr["TiLe"].ToString() }); } stock.DividendHistorys = divs; } catch (Exception ex) { //log.WriteEntry(symbol + " : Dividend : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //báo cáo phân tích if (!bExisted || related.Contains("SA")) { try { var reports = new List<Reports>(); var rdt = sql.GetAnalysisReports(stock.Symbol); foreach (DataRow rdr in rdt.Rows) { reports.Add(new Reports() { ID = int.Parse(rdr["ID"].ToString()), Title = rdr["title"].ToString(), DateDeploy = (DateTime)rdr["PublishDate"], ResourceCode = rdr["Source"].ToString(), IsHot = rdr["IsHot"].ToString().ToLower() == "true" }); } stock.Reports3 = reports; } catch (Exception ex) { //log.WriteEntry(symbol + " : AnalyseReport : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //công ty cùng ngành if (!bExisted || related.Contains("SCA")) { try { var samecateCompanies = new List<StockShortInfo>(); var scdt = sql.GetSameCateCompanies(stock.Symbol); foreach (DataRow scdr in scdt.Rows) { samecateCompanies.Add(new StockShortInfo() { Symbol = scdr["StockSymbol"].ToString(), TradeCenterId = int.Parse(scdr["TradeCenterId"].ToString()), Name = scdr["FullName"].ToString(), EPS = double.Parse(scdr["EPS"].ToString()) }); } stock.SameCategory = samecateCompanies; } catch (Exception ex) { //log.WriteEntry(symbol + " : SameCate : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //eps tương đương if (!bExisted || related.Contains("SEPS")) { try { var sameEPSCompanies = new List<StockShortInfo>(); var sedt = sql.GetSameEPSCompanies(stock.Symbol); foreach (DataRow sedr in sedt.Rows) { sameEPSCompanies.Add(new StockShortInfo() { Symbol = sedr["StockSymbol"].ToString(), TradeCenterId = int.Parse(sedr["TradeCenterId"].ToString()), Name = sedr["FullName"].ToString(), EPS = double.Parse(sedr["EPS"].ToString()), MarketValue = double.Parse(sedr["MarketCap"].ToString()) }); } stock.SameEPS = sameEPSCompanies; } catch (Exception ex) { //log.WriteEntry(symbol + " : SameEPS : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //pe tương đương if (!bExisted || related.Contains("SPE")) { try { var samePECompanies = new List<StockShortInfo>(); var spdt = sql.GetSamePECompanies(stock.Symbol); foreach (DataRow spdr in spdt.Rows) { samePECompanies.Add(new StockShortInfo() { Symbol = spdr["StockSymbol"].ToString(), TradeCenterId = int.Parse(spdr["TradeCenterId"].ToString()), Name = spdr["FullName"].ToString(), EPS = double.Parse(spdr["EPS"].ToString()), MarketValue = double.Parse(spdr["MarketCap"].ToString()) }); } stock.SamePE = samePECompanies; } catch (Exception ex) { ////log.WriteEntry(symbol + " : SamePE : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //stock history var history = bExisted ? stock.StockPriceHistory : new StockCompactHistory(); //stock history - price if (!bExisted || related.Contains("SP")) { try { var price = new List<PriceCompactHistory>(); var pdt = sql.GetPriceHistory(stock.Symbol, 10); foreach (DataRow pdr in pdt.Rows) { price.Add(new PriceCompactHistory() { ClosePrice = double.Parse(pdr["Price"].ToString()), BasicPrice = double.Parse(pdr["BasicPrice"].ToString()), Ceiling = double.Parse(pdr["Ceiling"].ToString()), Floor = double.Parse(pdr["Floor"].ToString()), Volume = double.Parse(pdr["Volume"].ToString()), TotalValue = double.Parse(pdr["TotalValue"].ToString()), TradeDate = (DateTime)pdr["TradeDate"] }); } history.Price = price; } catch (Exception ex) { //log.WriteEntry(symbol + " : Price : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //stock history - order if (!bExisted || related.Contains("SO")) { try { var order = new List<OrderCompactHistory>(); var hodt = sql.GetOrderHistory(stock.Symbol, 10); foreach (DataRow hodr in hodt.Rows) { order.Add(new OrderCompactHistory() { AskAverageVolume = double.Parse(hodr["AskAverage"].ToString()), AskLeft = double.Parse(hodr["AskLeft"].ToString()), BidAverageVolume = double.Parse(hodr["BidAverage"].ToString()), BidLeft = double.Parse(hodr["BidLeft"].ToString()), TradeDate = (DateTime)hodr["Trading_Date"] }); } history.Orders = order; } catch (Exception ex) { //log.WriteEntry(symbol + " : Order : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } //stock history - foreign if (!bExisted || related.Contains("SFT")) { try { var foreign = new List<ForeignCompactHistory>(); var fdt = sql.GetForeignHistory(stock.Symbol, 10); foreach (DataRow fdr in fdt.Rows) { foreign.Add(new ForeignCompactHistory() { BuyPercent = double.Parse(fdr["FBuyPercent"].ToString()), SellPercent = double.Parse(fdr["FSellPercent"].ToString()), NetVolume = double.Parse(fdr["FNetVolume"].ToString()), NetValue = double.Parse(fdr["FNetValue"].ToString()), TradeDate = (DateTime)fdr["Trading_Date"] }); } history.Foreign = foreign; } catch (Exception ex) { //log.WriteEntry(symbol + " : Foreign : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } stock.StockPriceHistory = history; /*====================*/ //tin tức và sự kiện if (!bExisted || related.Contains("SN")) { try { //var news = new List<StockNews>(); //var ndt = sql.GetCompanyNews(stock.Symbol, -1); //foreach (DataRow ndr in ndt.Rows) //{ // news.Add(new StockNews() { DateDeploy = (DateTime)ndr["PostTime"], ID = int.Parse(ndr["Id"].ToString()), Title = ndr["Title"].ToString(), TypeID = ndr["ConfigId"].ToString() }); //} //stock.StockNews = news; var keylist = string.Format(RedisKey.KeyCompanyNewsByStock, stock.Symbol, 0); //Tất cả var ls = new List<string>(); var pdt = sql.GetCompanyNews(stock.Symbol, -1); var key1 = string.Format(RedisKey.KeyCompanyNewsByStock, stock.Symbol, 1); //Tình hình SXKD & Phân tích khác var key2 = string.Format(RedisKey.KeyCompanyNewsByStock, stock.Symbol, 2); // Cổ tức - Chốt quyền var key3 = string.Format(RedisKey.KeyCompanyNewsByStock, stock.Symbol, 3); // Thay đổi nhân sự var key4 = string.Format(RedisKey.KeyCompanyNewsByStock, stock.Symbol, 4); // Tăng vốn - Cổ phiếu quỹ var key5 = string.Format(RedisKey.KeyCompanyNewsByStock, stock.Symbol, 5); // GD cđ lớn & cđ nội bộ var cate1 = new List<string>(); var cate2 = new List<string>(); var cate3 = new List<string>(); var cate4 = new List<string>(); var cate5 = new List<string>(); var stocknews = new List<StockNews>(); foreach (DataRow rdr in pdt.Rows) { var compact = new StockNews() { ID = int.Parse(rdr["ID"].ToString()), Body = "", DateDeploy = (DateTime)rdr["PostTime"], Image = "", Title = rdr["title"].ToString(), Sapo = "", TypeID = rdr["ConfigId"].ToString(), Symbol = rdr["StockSymbols"].ToString() }; var obj = new StockNews() { ID = int.Parse(rdr["ID"].ToString()), Body = rdr["Content"].ToString(), DateDeploy = (DateTime)rdr["PostTime"], Image = rdr["ImagePath"].ToString(), Title = rdr["title"].ToString(), Sapo = rdr["SubContent"].ToString(), TypeID = rdr["ConfigId"].ToString(), Symbol = rdr["StockSymbols"].ToString() }; for (int i = 0xD800; i < 0xDFFF; i++) { obj.Body.Replace((char)i, ' '); } if (stocknews.Count < 6) { stocknews.Add(compact); } var newskey = obj.DateDeploy.ToString("yyyyMMddHHmm") + obj.ID; var compactkey = string.Format(RedisKey.KeyCompanyNewsCompact, obj.ID); var detailkey = string.Format(RedisKey.KeyCompanyNewsDetail, obj.ID); if (redis.ContainsKey(compactkey)) redis.Set(compactkey, compact); else redis.Add(compactkey, compact); if (redis.ContainsKey(detailkey)) redis.Set(detailkey, obj); else redis.Add(detailkey, obj); if (!ls.Contains(newskey)) ls.Add(newskey); #region Update category list if (obj.TypeID.Contains("1")) { if (!cate1.Contains(newskey)) cate1.Add(newskey); } else { if (cate1.Contains(newskey)) cate1.Remove(newskey); } if (obj.TypeID.Contains("2")) { if (!cate2.Contains(newskey)) cate2.Add(newskey); } else { if (cate2.Contains(newskey)) cate2.Remove(newskey); } if (obj.TypeID.Contains("3")) { if (!cate3.Contains(newskey)) cate3.Add(newskey); } else { if (cate3.Contains(newskey)) cate3.Remove(newskey); } if (obj.TypeID.Contains("4")) { if (!cate4.Contains(newskey)) cate4.Add(newskey); } else { if (cate4.Contains(newskey)) cate4.Remove(newskey); } if (obj.TypeID.Contains("5")) { if (!cate5.Contains(newskey)) cate5.Add(newskey); } else { if (cate5.Contains(newskey)) cate5.Remove(newskey); } #endregion } stock.StockNews = stocknews; ls.Sort(); ls.Reverse(); if (redis.ContainsKey(keylist)) redis.Set(keylist, ls); else redis.Add(keylist, ls); #region Update category list cate1.Sort(); cate1.Reverse(); if (redis.ContainsKey(key1)) redis.Set(key1, cate1); else redis.Add(key1, cate1); cate2.Sort(); cate2.Reverse(); if (redis.ContainsKey(key2)) redis.Set(key2, cate2); else redis.Add(key2, cate2); cate3.Sort(); cate3.Reverse(); if (redis.ContainsKey(key3)) redis.Set(key3, cate3); else redis.Add(key3, cate3); cate4.Sort(); cate4.Reverse(); if (redis.ContainsKey(key4)) redis.Set(key4, cate4); else redis.Add(key4, cate4); cate5.Sort(); cate5.Reverse(); if (redis.ContainsKey(key5)) redis.Set(key5, cate5); else redis.Add(key5, cate5); #endregion } catch (Exception ex) { //log.WriteEntry(symbol + " : News : " + ex.ToString(), EventLogEntryType.Error); ret = false; } } #endregion if (redis.ContainsKey(key)) redis.Set<Stock>(key, stock); else redis.Add<Stock>(key, stock); } catch (Exception ex) { ////log.WriteEntry(symbol + ": " + ex.ToString(), EventLogEntryType.Error); ret = false; } return ret; }
protected void Page_Load(object sender, EventArgs e) { //if (!IsPostBack) //{ form1.Action = Request.RawUrl; symbol = (Request.Params["symbol"] ?? "").Trim().ToUpper(); ceocode = (Request.Params["ceocode"] ?? "").Trim().ToUpper(); symbol = symbol.ToUpper(); ceocode = ceocode.ToUpper(); CeoPhotos = new Dictionary<string, string>(); CeoStocks = new Dictionary<string, StockCompactInfo>(); CeoStockPrices = new Dictionary<string, StockPrice>(); if (symbol != "") { stock = StockBL.getStockBySymbol(symbol); if (stock != null) { var tab = ""; switch ((Request["tabid"] ?? "").ToLower()) { case "1": tab = "Thông tin tài chính"; break; case "2": tab = "Thông tin công ty"; break; case "3": tab = ((Request["Tab"] ?? "").ToLower() != "co-dong-lon") ? "Ban lãnh đạo" : "Cổ đông lớn"; break; case "4": tab = "Công ty con - Công ty liên kết"; break; default: tab = "Tin tức và dữ liệu doanh nghiệp"; break; } this.Page.Title = string.Format("{1} : {0} | {2}CafeF.vn", stock.CompanyProfile.basicInfos.Name, stock.Symbol, tab + (tab != "" ? " | " : "")); AddMetaTag("Keywords", string.Format("{0}, {1}, hồ sơ công ty, thông tin giao dịch{2}", stock.Symbol, stock.CompanyProfile.basicInfos.Name, (tab != "" ? " , " : "") + tab)); AddMetaTag("Description", string.Format("Thông tin giao dịch và hồ sơ {0}{1}", stock.CompanyProfile.basicInfos.Name, (tab != "" ? " - " : "") + tab)); } stockTienDoBDS = TienDoBDSBL.get_TienDoBDSBySymbol(symbol); } else { if (ceocode != "") { ceo = CeoBL.getCeoByCode(ceocode); var path = HttpContext.Current.Items["VirtualUrl"] ?? ""; symbolCeo = path.ToString().Contains("?cs=") ? (path.ToString().Substring(path.ToString().IndexOf("?cs=") + 4)) : ""; if (ceo != null) { string pos = ""; if (symbolCeo == "") { foreach (var ceopos in ceo.CeoPosition) { if (ceopos.CeoSymbol != "") { symbolCeo = ceopos.CeoSymbol; pos = ceopos.PositionTitle; break; } } } else { foreach (var ceopos in ceo.CeoPosition) { if (ceopos.CeoSymbol == symbolCeo) { pos = ceopos.PositionTitle; break; } } if (pos == "") { if (ceo.CeoPosition.Count > 0) { pos = ceo.CeoPosition[0].PositionTitle; symbolCeo = ceo.CeoPosition[0].CeoSymbol; } } } this.Page.Title = string.Format("{1} : {0} - {2} | CafeF.vn", ceo.CeoName, string.IsNullOrEmpty(symbolCeo) ? "CEO" : symbolCeo.ToUpper(), pos); AddMetaTag("Keywords", string.Format("{0}, {1}, hồ sơ ceo, thông tin ceo", string.IsNullOrEmpty(symbolCeo) ? "CEO" : symbolCeo.ToUpper(), ceo.CeoName)); AddMetaTag("Description", string.Format("Thông tin và hồ sơ {0}", ceo.CeoName)); if (!string.IsNullOrEmpty(symbolCeo)) { stockForCeo = StockBL.getStockBySymbol(symbolCeo.ToUpper()); if (stockForCeo != null) { var ls = new List<string> {ceocode}; foreach (var tmp in stockForCeo.CompanyProfile.AssociatedCeo) { if (!ls.Contains(tmp.CeoCode)) ls.Add(tmp.CeoCode); } CeoPhotos = CeoBL.GetCeoImage(ls); } } var ss = new List<string>(); foreach (var asset in ceo.CeoAsset) { if(asset.Symbol!="" && !ss.Contains(asset.Symbol)) ss.Add(asset.Symbol); } foreach (var relation in ceo.CeoRelation) { if(relation.Symbol!="" && !ss.Contains(relation.Symbol)) ss.Add(relation.Symbol); } CeoStocks = StockBL.GetStockCompactInfoMultiple(ss); CeoStockPrices = StockBL.GetStockPriceMultiple(ss); } } } }