예제 #1
0
        static void UpdateDB(List <distroTrend.Model.Distro> listDistro)
        {
            BLL.Distro distroBL = new BLL.Distro();

            string sqlConn = System.Configuration.ConfigurationManager.AppSettings["dbConnection"];

            string message = string.Empty;

            foreach (distroTrend.Model.Distro distro in listDistro)
            {
                message = string.Empty;

                distroTrend.Model.Distro distroDb = distroBL.GetDistro(distro.Code, sqlConn);

                if (distroDb == null)
                {
                    message = distro.Name + " is not found in DB. Inserting...";
                }
                else
                {
                    if (distroDb.Description != distro.Description || distroDb.ImageURL != distro.ImageURL)
                    {
                        message = distro.Name + " found in DB but details are outdated. Updating...";
                        distroBL.Update(sqlConn, distroDb.Id, distro);
                    }
                }

                if (!string.IsNullOrEmpty(message))
                {
                    logger.Info(message);
                    Console.WriteLine(message);
                }
            }
        }
예제 #2
0
        private DataTable GetDistrosFromDB()
        {
            DataSet ds = new DataSet();

            BLL.Distro distro = new BLL.Distro();
            ds = distro.GetDistroAsDataSet(_connString);

            DataTable dt = GetDistroRanking(ds.Tables[0]);

            return(dt);
        }
예제 #3
0
        static List <distroTrend.Model.Points> ParseDataDWPoints(string data, string connString)
        {
            BLL.Distro distroBL = new BLL.Distro();
            List <distroTrend.Model.Distro> listDistro       = distroBL.GetDistro(connString);
            List <distroTrend.Model.Points> listDistroPoints = new List <distroTrend.Model.Points>();
            var doc = new HtmlAgilityPack.HtmlDocument();

            doc.LoadHtml(data);

            var nodes = doc.DocumentNode.SelectNodes(@"//td[@class='phr2']/a");

            int counter = 0;

            foreach (HtmlNode node in nodes)
            {
                counter++;
                string   title  = node.InnerText;
                string[] token  = node.OuterHtml.Split(new char[] { '\"' }, StringSplitOptions.RemoveEmptyEntries);
                string   dwCode = string.Empty;
                if (token.Length > 1)
                {
                    dwCode = token[1];
                }

                string  code         = GetCode(title);
                Decimal points       = 0;
                string  pointsString = string.Empty;

                HtmlNode nodeTr = node.ParentNode.ParentNode;
                if (nodeTr != null && nodeTr.ChildNodes.Count > 4)
                {
                    pointsString = nodeTr.ChildNodes[5].InnerText;
                }
                //HtmlNodeCollection nodePoints = nodeTr.SelectNodes(@"//td[@class='phr3']");

                //foreach (HtmlNode nodeTd in nodePoints)
                //{
                //    pointsString = nodeTd.InnerText;
                //}

                Decimal.TryParse(pointsString, out points);
                logger.Debug("Points in string=" + pointsString + ", and after convertion points=" + points);

                distroTrend.Model.Distro distro = listDistro.Where(x => x.Code.Trim() == code).FirstOrDefault();
                //distro.Id;

                if (distro != null)
                {
                    distroTrend.Model.Points objPoints = new distroTrend.Model.Points();
                    objPoints.distroId          = distro.Id;
                    objPoints.DistroWatchPoints = points;
                    objPoints.Date = DateTime.Now;

                    distroTrend.Model.Points pointE = listDistroPoints.FirstOrDefault(p => p.distroId == objPoints.distroId);
                    if (pointE != null)
                    {
                        pointE.DistroWatchPoints = points;
                        logger.Debug("Updated in list, Id=" + objPoints.distroId + ", Points=" + objPoints.DistroWatchPoints);
                    }
                    else
                    {
                        listDistroPoints.Add(objPoints);
                        logger.Debug("Added to list, Id=" + objPoints.distroId + ", Points=" + objPoints.DistroWatchPoints);
                    }
                }

                //if (listDistroPoints.Count > 30)
                //    break;
            }

            return(listDistroPoints);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            logger.Trace("Inside " + this.GetType().Name + ".Page_Load()");
            int    distroId = 0;
            Distro distro   = null;

            string _connString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;

            if (Request.QueryString[Helper.Constants.URL_PARAMETER_DISTRO_ID] != null)
            {
                distroId = Convert.ToInt32(Request.QueryString[Helper.Constants.URL_PARAMETER_DISTRO_ID].ToString());
            }

            logger.Debug("Parameter distroId=" + distroId);

            BLL.Distro objDistro = new BLL.Distro();

            if (distroId > 0)
            {
                distro = objDistro.GetDistro(_connString).Where(x => x.Id == distroId).SingleOrDefault();
            }

            if (distro != null)
            {
                lblName.Text        = distro.Name;
                lblDescription.Text = distro.Description;
                if (!string.IsNullOrEmpty(distro.ImageURL))
                {
                    //imgLogo.ImageUrl = "https://distrowatch.com/" + distro.ImageURL;
                    imgLogo.ImageUrl = distro.ImageURL;
                }

                if (!string.IsNullOrWhiteSpace(distro.HomePage))
                {
                    hlUrl.Text        = "Click here to visit the website";
                    hlUrl.NavigateUrl = distro.HomePage;
                }
                else
                {
                    hlUrl.Text = "Not set";
                }
            }

            if (distroId > 0)
            {
                List <distroTrend.Model.Edition> editions = GetEditions(distroId);
                if (editions.Count > 0)
                {
                    lvEditions.DataSource = editions;
                    lvEditions.DataBind();
                }

                List <distroTrend.Model.Version> versions = GetVersions(distroId);

                if (versions.Count > 0)
                {
                    lvRelease.DataSource = versions;
                    lvRelease.DataBind();
                }
            }
        }