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);
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
        }