public async Task ParsAndSaveStockInfo(string infoUrl, Enums.MarketTypeEnum marketType) { try { var result = _httpCallService.GetAlborzServiceAsync <string>(infoUrl, null); var finalInfo = result.Result.Result; if (!string.IsNullOrEmpty(finalInfo)) { var configuration = Configuration.Default.WithJs(); var context = BrowsingContext.New(configuration); var engine = context.GetService <JsScriptingService>(); var angleDocument = await context.OpenAsync(req => req.Content(finalInfo)); //نام گروه var lSecValue = engine.EvaluateScript(angleDocument, "LSecVal"); //کد گروه var cgrValCot = engine.EvaluateScript(angleDocument, "CgrValCot"); //کدهای نماد var instrumentID = engine.EvaluateScript(angleDocument, "InstrumentID"); var insCode = engine.EvaluateScript(angleDocument, "InsCode"); //عنوان کامل نماد var title = engine.EvaluateScript(angleDocument, "Title"); //نام نماد var lVal18AFC = engine.EvaluateScript(angleDocument, "LVal18AFC"); //حجم مبنا var baseVol = engine.EvaluateScript(angleDocument, "BaseVol"); var estimatedEPS = engine.EvaluateScript(angleDocument, "EstimatedEPS"); //پی به ای گروه var sectorPE = engine.EvaluateScript(angleDocument, "SectorPE"); string groupName = lSecValue.ToString(); var group = await _unitOfWork.StockGroupService.FindAsync(groupName); int stockGroupId = 0; //اضافه کردن یا بروزرسانی اطلاعات گروه if (group == null) { var grp = new Data.General.StockGroup() { Code = cgrValCot.ToString(), Name = groupName }; await _unitOfWork.StockGroupService.Add(grp); await _unitOfWork.SaveAsync(); stockGroupId = grp.Id; } else { group.Code = cgrValCot.ToString(); group.PE = Helpers.Convertions.Todouble(sectorPE); _unitOfWork.StockGroupService.UpdateConnected(group); await _unitOfWork.SaveAsync(); stockGroupId = group.Id; } var stock = await _unitOfWork.StockService.FindAsync(insCode.ToString()); if (stock == null) { await _unitOfWork.StockService.Add(new Data.General.Stock() { Code = instrumentID.ToString(), UniqueCode = insCode.ToString(), StockGroupId = stockGroupId, BaseVolume = Helpers.Convertions.ToInt(baseVol), //EnglishSign = items[4].InnerText, //EnglishName = items[5].InnerText, PersianSign = lVal18AFC.ToString(), PersianName = title.ToString(), MarketType = marketType, EPS = Helpers.Convertions.ToInt(estimatedEPS), InfoUrl = infoUrl }); await _unitOfWork.SaveAsync(); } else { //بروزرسانی //stock.BaseVolume = Helpers.Convertions.ToInt(baseVol); } } } catch (Exception exc) { } }
public void UpdateConnected(Data.General.StockGroup StockGroup) { _context.Entry(StockGroup).State = EntityState.Modified; }
public async Task <GenericBoolResponse> Handle(UpdateStocksInfoCommand request, CancellationToken cancellationToken) { var result = _httpCallService.GetAlborzServiceAsync <string>("http://www.tsetmc.com/Loader.aspx?ParTree=111C1417", null); var finalResult = result.Result.Result; if (!string.IsNullOrEmpty(finalResult)) { HtmlDocument pageDocument = new HtmlDocument(); pageDocument.LoadHtml(finalResult); HtmlNode node = pageDocument.DocumentNode.SelectSingleNode("//div"); HtmlNode tableElement = pageDocument.GetElementbyId("tblToGrid"); _unitOfWork.StockService.DeleteAll(Enums.MarketTypeEnum.Boors); foreach (HtmlNode rowElement in tableElement.ChildNodes) { System.Collections.Generic.List <HtmlNode> items = rowElement.Descendants().Where(a => a.Name.ToLower() == "td").ToList(); if (items != null && items.Count() > 0) { string code = items[0].InnerText; if (!ContainsUnicodeCharacter(code)) { string url = ""; foreach (var atag in items[0].ChildNodes) { url = atag.Attributes["href"].Value; } string groupName = items[2].InnerText; var group = await _unitOfWork.StockGroupService.FindAsync(groupName); int stockGroupId = 0; if (group == null) { var grp = new Data.General.StockGroup() { Code = "", Name = groupName }; await _unitOfWork.StockGroupService.Add(grp); await _unitOfWork.SaveAsync(); stockGroupId = grp.Id; } else { stockGroupId = group.Id; } await _unitOfWork.StockService.Add(new Data.General.Stock() { Code = code, StockGroupId = stockGroupId, EnglishSign = items[4].InnerText, EnglishName = items[5].InnerText, PersianSign = items[6].InnerText, PersianName = items[7].InnerText }); await _unitOfWork.SaveAsync(); } } } } return(new GenericBoolResponse() { }); }
public async Task Add(Data.General.StockGroup StockGroup) { await _context.StockGroups.AddAsync(StockGroup); }