public IHttpActionResult GetFollowedUsers(string username, [FromUri] FollowedUsersBindingModel model)
        {
            var loggedUserId = this.User.Identity.GetUserId();
            var loggedUser   = this.TwitterData.Users.Find(loggedUserId);

            if (loggedUser == null)
            {
                return(this.BadRequest("Invalid session token."));
            }

            if (model == null)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var targetUser = this.TwitterData.Users.All()
                             .FirstOrDefault(u => u.UserName == username);

            if (targetUser == null)
            {
                return(this.NotFound());
            }

            var candidateUsers = targetUser.Followers
                                 .OrderBy(u => u.Fullname)
                                 .AsQueryable();

            if (model.StartUserId != null)
            {
                candidateUsers = candidateUsers
                                 .AsQueryable()
                                 .SkipWhile(p => p.Id != model.StartUserId)
                                 .Skip(1)
                                 .AsQueryable();
            }

            var users = candidateUsers
                        .Take(model.PageSize)
                        .Select(u => ProfileDataPreviewViewModel.Create(u, loggedUser));

            return(this.Ok(new
            {
                totalUsers = targetUser.Followers.Count,
                users
            }));
        }
        public IHttpActionResult GetUserPreviewInfo(string username)
        {
            var loggedUserId = this.User.Identity.GetUserId();
            var loggedUser   = this.TwitterData.Users.Find(loggedUserId);

            if (loggedUser == null)
            {
                return(this.BadRequest("Invalid session token."));
            }

            var targetUser = this.TwitterData.Users.All()
                             .FirstOrDefault(u => u.UserName == username);

            if (targetUser == null)
            {
                return(this.NotFound());
            }

            var targetUserInfo = ProfileDataPreviewViewModel.Create(targetUser, loggedUser);

            return(this.Ok(targetUserInfo));
        }