Example #1
0
        public void LoadReadFeed()
        {
            logger.Info("Получаем таблицу прочитанных пользователем новостей...");

            if (NewsFeeds == null)
            {
                NewsFeeds = new List <NewsFeed> ();
            }

            string sql    = "SELECT * FROM `read_news` WHERE user_id = @user_id";
            var    param  = new { user_id = userService.CurrentUserId };
            var    readed = connection.Query(sql, param);

            foreach (var row in readed)
            {
                NewsFeed feed = NewsFeeds.Find(f => f.Id == row.feed_id);
                if (feed != null)
                {
                    feed.FirstRead  = false;
                    feed.DataBaseId = row.id;
                    string[] items = (row.items ?? "").Split(',');
                    foreach (var item in items)
                    {
                        feed.ReadItems.Add(item);
                    }
                }
                else
                {
                    logger.Warn($"В базе найден feed_id={row.feed_id}, но в программе он не настроен.");
                }
            }
            logger.Info("Ok");
        }
Example #2
0
        public bool ItemIsRead(SyndicationItem synitem)
        {
            NewsFeed feed = NewsFeeds.Find(f => f.Id == synitem.SourceFeed.Id);

            if (feed.FirstRead)
            {
                feed.ReadItems.Add(synitem.Id);
                return(true);
            }
            return(feed.ReadItems.Contains(synitem.Id));
        }
Example #3
0
        public void UpdateFeedReads(NewsFeed feed)
        {
            if (feed.FirstRead)
            {
                throw new InvalidOperationException("Нельзя обновить новый фид с FirstRead = true");
            }
            logger.Info("Обновляем прочитанные новости...");
            string sql        = "UPDATE read_news SET items = @items WHERE id = @id";
            var    parameters = new { id = feed.DataBaseId, items = String.Join(",", feed.ReadItems) };

            connection.Execute(sql, parameters);
            logger.Info("Ok");
        }