public PartialViewResult CreateFeed(HomeViewModel model) { // get a user that matches the name of the currently logged in user User user = _userService.FindUserForName(User.Identity.Name); Feed feed = new Feed() { Name = model.NewFeedName, Owner = user }; model.Feeds = _twitterService.AddFeed(feed); _unit.Commit(); model.NewFeedName = ""; ModelState.Clear(); return PartialView("_FeedView", model); }
/* this entire process of setting up the models should be refactored * in terms of partitioning the models and partial views */ private HomeViewModel GenerateIndexModel(long displayFeed) { HomeViewModel model = new HomeViewModel(); // get a user that matches the name of the currently logged in user User user = _userService.FindUserForName(User.Identity.Name); /* Find all of the tweets that should be displayed. The tweets that * should be displayed are either authored by the user or those that * are found in a user subscription */ List<Tweet> tweetsToDisplay = new List<Tweet>(); if (displayFeed == -1) { if (user.Feeds != null) { foreach (Feed feed in user.Feeds) { if (feed.Tweets != null && feed.Tweets.Count > 0) { tweetsToDisplay.AddRange(feed.Tweets); } } } if (user.Subscriptions != null) { foreach (Feed feed in user.Subscriptions) { if (feed.Tweets != null && feed.Tweets.Count > 0) { tweetsToDisplay.AddRange(feed.Tweets); } } } } else { Feed feed = _twitterService.GetFeed(displayFeed); tweetsToDisplay = (feed == null) ? new List<Tweet>() : feed.Tweets.ToList<Tweet>(); } model.DisplayFeed = displayFeed; model.Tweets = tweetsToDisplay.OrderByDescending(t => t.PostDate).ToList<Tweet>(); if (user.Feeds != null && user.Feeds.Count > 0) { model.HasFeeds = true; } // Add the user's feeds to the feed model that will be rendered as a partial view model.Feeds = user.Feeds == null ? new List<Feed>() : user.Feeds; model.Feeds = model.Feeds.OrderBy(f => f.Name).ToList(); model.Subscriptions = user.Subscriptions == null ? new List<Feed>() : user.Subscriptions; StringBuilder sb = new StringBuilder(); sb.Append("["); List<Feed> possible = _twitterService.GetPossibleSubscriptionsFor(user); foreach (Feed feed in possible) { string subscription = string.Format("{{value: \"{0} by @{1}\", tokens: [\"{2}\",\"{3}\",\"{4}\"]}}", feed.Name, feed.Owner.UserName, feed.Owner.Name.Split(' ')[0], feed.Owner.Name.Split(' ')[1], feed.Name); sb.Append(string.Format("{0},", subscription)); } if (possible.Count > 0) { sb.Replace(',', ']', sb.Length - 1, 1); } else { sb.Append("]"); } model.SubscriptionTypeahead = sb.ToString(); model.FeedList = model.Feeds.Select(f => new SelectListItem() { Text = f.Name, Value = Convert.ToString(f.ID) }); return model; }
public PartialViewResult Tweet(HomeViewModel model) { Tweet tweet = new Tweet() { BelongsTo = _twitterService.GetFeed(Convert.ToInt64(model.SelectedFeed)), Content = model.Tweet, PostDate = DateTime.Now }; _twitterService.AddTweet(tweet); _unit.Commit(); HomeViewModel updatedMode = GenerateIndexModel(model.DisplayFeed); updatedMode.Tweet = ""; updatedMode.SelectedFeed = model.SelectedFeed; ModelState.Clear(); return PartialView("_TweetView", updatedMode); }