예제 #1
0
        public IHttpActionResult AddTweet([FromBody] AddTweetBindingModel 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("Model cannot be null (no data in request)"));
            }

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

            var wallOwner = this.TwitterData.Users.All()
                            .FirstOrDefault(u => u.UserName == model.WallOwnerUsername);

            if (wallOwner == null)
            {
                return(this.BadRequest(string.Format(
                                           "User {0} does not exist",
                                           model.WallOwnerUsername)));
            }

            var tweet = new Tweet()
            {
                Author      = loggedUser,
                AuthorId    = loggedUserId,
                WallOwnerId = wallOwner.Id,
                WallOwner   = wallOwner,
                Content     = model.Content,
                PostedOn    = DateTime.UtcNow,
            };

            this.TwitterData.Tweets.Add(tweet);
            this.TwitterData.SaveChanges();

            var data = this.TwitterData.Tweets.All()
                       .Where(p => p.Id == tweet.Id)
                       .Select(TweetViewModel.Create)
                       .FirstOrDefault();

            return(this.Ok(data));
        }
예제 #2
0
        public ActionResult AddTweet(AddTweetBindingModel model)
        {
            if (model == null || !this.ModelState.IsValid)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Bad Request"));
            }

            var userId = this.User.Identity.GetUserId();
            var user   = this.Data.Users.Find(userId);

            if (user == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Bad Request"));
            }

            var tweet = new Tweet
            {
                Content     = model.Content,
                AuthorId    = userId,
                Author      = user,
                WallOwnerId = userId,
                WallOwner   = user,
                PostedOn    = DateTime.Now
            };

            user.OwnTweets.Add(tweet);
            this.Data.SaveChanges();

            var dbTweet = this.Data.Tweets.All()
                          .Where(t => t.Id == tweet.Id)
                          .Select(TweetViewModel.Create)
                          .AsEnumerable();

            this.SendTweet(tweet.Id);

            if (this.Request.IsAjaxRequest())
            {
                return(this.PartialView("DisplayTemplates/TweetViewModel", dbTweet));
            }

            return(this.RedirectToAction("Index", "Users", routeValues: new { this.User.Identity.Name }));
        }
예제 #3
0
 public ActionResult Add(AddTweetBindingModel model)
 {
     if (model != null && this.ModelState.IsValid)
     {
         var currentUserId = this.User.Identity.GetUserId();
         var tweet         = new Tweet
         {
             Content   = model.Content,
             Page      = model.PageUrl,
             TweetedAt = DateTime.Now,
             UserId    = currentUserId
         };
         this.TwitterData.Tweets.Add(tweet);
         this.TwitterData.SaveChanges();
         this.TempData[GlobalConstants.TempMessageKey] = "You have successfully added your tweet!";
         return(this.RedirectToAction("Home", "Users"));
     }
     this.TempData[GlobalConstants.TempMessageKey] = "Error during add tweet";
     return(this.View("_AddTweetPartial", model));
 }