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"); }
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)); }
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"); }