public ActionResult Create() { string content = Request.Params["micropostNew"]; bool isEmpty = string.IsNullOrEmpty(content); ViewBag.FlashMessage = (isEmpty) ? "Micropost cannot be blank!" : "Micropost created!"; ViewBag.FlashClass = (isEmpty) ? "error" : "success"; UserModel user = GetUserModelForAuthenticatedUser(); var micropostsForUser = new MicropostsForUserModel { User = user }; if (!isEmpty) { bool saved = _micropostBS.Save(user, content); if (!saved) { ViewBag.FlashMessage = "Micropost could not be created!"; ViewBag.FlashClass = "error"; } else { user = _userBS.GetUser(user.Id); micropostsForUser = _micropostBS.GetMicropostsForUser(user); } } return View("Index", micropostsForUser); }
public MicropostsForUserModel GetMicropostsForUser(UserModel user) { var micropostsForUser = new MicropostsForUserModel(); micropostsForUser.User = user; var micropostOwners = user.Microposts .Select(m => new MicropostOwnerModel {Owner = user, Micropost = m}) .ToList(); foreach (BoRef userId in user.Following) { var userBo = _repository.FindById<UserBo>(userId); UserModel followingUser = Mapper.Map<UserBo, UserModel>(userBo); if (followingUser != null) { var micropostsFollowOwner = followingUser.Microposts .Where(m => m != null) .Select(m => new MicropostOwnerModel { Owner = followingUser, Micropost = m }) .ToList(); micropostOwners.AddRange(micropostsFollowOwner); } } micropostsForUser.Microposts = micropostOwners.OrderByDescending(mo => mo.Micropost.CreatedAt); return micropostsForUser; }
public ActionResult Follow(string id) { var loggedId = new BoRef(User.Identity.Name); var userId = new BoRef(id); UserModel user = _userBS.GetUser(userId); var micropostsForUser = new MicropostsForUserModel { User = user }; bool followed = user.Followers.Any(r => r.Value == loggedId.Value); bool result = (followed) ? _userBS.Unfollow(loggedId, user) : _userBS.Follow(loggedId, user); if (result) { user = _userBS.GetUser(userId); micropostsForUser = _micropostBS.GetMicropostsForUser(user); } else { ViewBag.FlashMessage = "Follow/Unfollow failure!"; ViewBag.FlashClass = "error"; } return View("Show", micropostsForUser); }