public ActionResult Index(string feed) { var model = new IndexViewModel(); model.ChannelURL = feed; try { var selectedFeed = _repository.Feeds.FirstOrDefault(x => x.URL == feed); if (selectedFeed != null) { model.ChannelName = selectedFeed.DisplayName; model.BlogURL = selectedFeed.BlogURL; model.LastRefresh = selectedFeed.LastRefresh.ToString(); // Refresh the feed if the option is set if (_services.GetOption("AutoRefresh").Value.ToLower() == "true") { _services.Fetch(selectedFeed); TempData["Message"] = selectedFeed.DisplayName + " has been refreshed"; } try { if (Session["ViewMode"] == null || Session["ViewMode"].ToString() == "Show Unread Items") { var items = _repository.Items.Where(x => x.FeedID == selectedFeed.FeedID && x.IsRead == false).OrderByDescending(x => x.ItemID).Take(10).ToList(); model.Items = _builder.BuildItemsViewModelList(items, true); } else { var items = _repository.Items.Where(x => x.FeedID == selectedFeed.FeedID).OrderByDescending(x => x.ItemID).Take(10).ToList(); model.Items = _builder.BuildItemsViewModelList(items, true); } } catch (Exception ex) { TempData["Error"] = "Error reading feed: " + ex.Message.ToString(); } } if (!string.IsNullOrEmpty(model.ChannelURL)) { // Retrieve starred items if (model.ChannelURL.ToLower() == "starred") { model.ChannelName = "Starred Items"; try { var items = _repository.Items.Where(x => x.IsStarred == true).OrderByDescending(x => x.PublishDate).ToList(); model.Items = _builder.BuildItemsViewModelList(items, false); } catch (Exception ex) { TempData["Error"] = "Error reading feed: " + ex.Message.ToString(); } } // Show options screen if (model.ChannelURL.ToLower() == "options") { model.ChannelName = "Options"; } } // Build the feeds sidebar list var feeds = _repository.Feeds.OrderBy(x => x.DisplayName).ToList(); model.Feeds = _builder.BuildFeedsViewModelList(feeds, selectedFeed); } catch (Exception ex) { TempData["Error"] = ex.Message.ToString(); } return(View(model)); }