public IHttpActionResult EditReplay(int tweetId, int replyId, ReplyToTweetBindingModel model)
        {
            var loggedUserId = this.User.Identity.GetUserId();
            var loggedUser   = this.TwitterData.Users.Find(loggedUserId);

            if (loggedUser == null)
            {
                return(this.Unauthorized());
            }

            var tweet = this.TwitterData.Tweets.All().FirstOrDefault(p => p.Id == tweetId);

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

            var reply = this.TwitterData.Replies.All().FirstOrDefault(r => r.Id == replyId);

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

            if (reply.AuthorId != loggedUser.Id)
            {
                return(this.Unauthorized());
            }

            if (model == null)
            {
                return(this.BadRequest("Empty model is not allowed"));
            }

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


            reply.Content = model.Content;
            this.TwitterData.SaveChanges();

            var replyFromDb = this.TwitterData.Replies.All().Where(r => r.Id == replyId)
                              .Select(ReplyViewModel.Create)
                              .FirstOrDefault();

            return(this.Ok(replyFromDb));
        }
        public IHttpActionResult ReplyToTweet(int tweetId, ReplyToTweetBindingModel model)
        {
            var loggedUserId = this.User.Identity.GetUserId();
            var loggedUser   = this.TwitterData.Users.Find(loggedUserId);

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

            var tweet = this.TwitterData.Tweets.Find(tweetId);

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

            if (model == null)
            {
                return(this.BadRequest("Empty model is not allowed"));
            }

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

            var reply = new Reply()
            {
                Content  = model.Content,
                PostedOn = DateTime.UtcNow,
                AuthorId = loggedUserId
            };

            tweet.Replies.Add(reply);
            this.TwitterData.SaveChanges();

            var response = this.TwitterData.Replies.All()
                           .Where(r => r.Id == reply.Id)
                           .Select(ReplyViewModel.Create)
                           .FirstOrDefault();

            return(this.Ok(response));
        }