QSSupportLib.MainNewsFeed.SaveFirstRead C# (CSharp) Method

SaveFirstRead() public static method

public static SaveFirstRead ( ) : void
return void
        public static void SaveFirstRead()
        {
            if (!NewsReadExist)
                return;

            NewsFeeds.FindAll (f => f.FirstRead).ForEach(delegate(NewsFeed feed) {
                QSMain.CheckConnectionAlive();
                logger.Info ("Сохраняем новый feed({0})...", feed.Title);
                string sql = "INSERT INTO read_news (user_id, feed_id, items) " +
                    "VALUES (@user_id, @feed_id, @items)";
                DbCommand cmd = QSMain.ConnectionDB.CreateCommand();
                cmd.CommandText = sql;

                DbParameter param = cmd.CreateParameter();
                param.ParameterName = "@user_id";
                param.Value = QSMain.User.Id;
                cmd.Parameters.Add(param);

                param = cmd.CreateParameter();
                param.ParameterName = "@feed_id";
                param.Value = feed.Id;
                cmd.Parameters.Add(param);

                param = cmd.CreateParameter();
                param.ParameterName = "@items";
                param.Value = String.Join (",", feed.ReadItems);
                cmd.Parameters.Add(param);

                cmd.ExecuteNonQuery ();
                feed.FirstRead = false;
            });
        }

Usage Example

Example #1
0
        private void ThreadWorks()
        {
            logger.Info("Поток: Получаем ленты новостей.");
            SyndicationFeed mainFeed = new SyndicationFeed();

            foreach (var feed in MainNewsFeed.NewsFeeds)
            {
                if (!feed.Active)
                {
                    continue;
                }
                SyndicationFeed syndicationFeed;
                try
                {
                    using (XmlReader reader = XmlReader.Create(feed.FeedUri.AbsoluteUri))
                    {
                        syndicationFeed = SyndicationFeed.Load(reader);
                    }
                    syndicationFeed.Id = feed.Id;
                    syndicationFeed.Items.ToList().ForEach(i => i.SourceFeed = syndicationFeed);
                }
                catch (Exception ex)
                {
                    logger.Warn(ex, "Не удалось прочитать feed");
                    continue;
                }
                SyndicationFeed tempFeed = new SyndicationFeed(
                    mainFeed.Items.Union(syndicationFeed.Items).OrderByDescending(u => u.PublishDate));

                mainFeed = tempFeed;
            }
            logger.Info("Создаем меню новостей..");
            Application.Invoke(delegate {
                logger.Info("Запуск операций в основном потоке..");
                UnreadNewsCount = 0;
                var newsMenu    = new Menu();
                MenuItemId <SyndicationItem> newsItem;
                foreach (var news in mainFeed.Items)
                {
                    Label itemLabel = new Label();
                    if (MainNewsFeed.ItemIsRead(news))
                    {
                        itemLabel.Text = news.Title.Text;
                    }
                    else
                    {
                        itemLabel.Markup = String.Format("<b>{0}</b>", news.Title.Text);
                        UnreadNewsCount++;
                    }
                    newsItem = new MenuItemId <SyndicationItem> ();
                    newsItem.Add(itemLabel);
                    newsItem.ID            = news;
                    newsItem.TooltipMarkup = String.Format("<b>{0:D}</b> {1}", news.PublishDate, news.Summary.Text);
                    newsItem.Activated    += OnNewsActivated;
                    newsMenu.Append(newsItem);
                }
                this.Submenu = newsMenu;
                UpdateIcon();
                newsMenu.ShowAll();
                MainNewsFeed.SaveFirstRead();
                logger.Info("Ок");
            });
        }