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)
            {
            }
        }
Esempio n. 2
0
 public void UpdateConnected(Data.General.StockGroup StockGroup)
 {
     _context.Entry(StockGroup).State = EntityState.Modified;
 }
Esempio n. 3
0
        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()
            {
            });
        }
Esempio n. 4
0
 public async Task Add(Data.General.StockGroup StockGroup)
 {
     await _context.StockGroups.AddAsync(StockGroup);
 }