public void AddPost(AddPostBindingModel post, string name) { var postToAdd = Mapper.Map <AddPostBindingModel, PostEntityModel>(post); postToAdd.DatePosted = DateTime.Now; postToAdd.AuthorName = name; this.Context.Posts.Add(postToAdd); this.Context.SaveChanges(); }
public ActionResult AddPost(AddPostBindingModel post) { if (ModelState.IsValid) { this.service.AddPost(post, User.Identity.Name); return(RedirectToAction("Index")); } return(RedirectToAction("AddPost", "Admin", new { area = "Administration" })); }
public IHttpActionResult PostOnWall(AddPostBindingModel postModel) { if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } var wallOwner = this.SocialNetworkData.Users.All() .FirstOrDefault(u => u.UserName == postModel.Username); if (wallOwner == null) { return(this.NotFound()); } var loggedUserId = this.User.Identity.GetUserId(); var loggedUser = this.SocialNetworkData.Users .GetById(loggedUserId); if (loggedUserId == null) { return(this.BadRequest("Invalid session token.")); } if (wallOwner.Id != loggedUserId) { var isFriendOfWallOwner = wallOwner.Friends .Any(fr => fr.Id == loggedUserId); if (!isFriendOfWallOwner) { return(this.BadRequest("Only friends can post on user's wall.")); } } var newPost = new Post() { Content = postModel.PostContent, WallOwner = wallOwner, WallOwnerId = wallOwner.Id, Author = loggedUser, AuthorId = loggedUserId, Date = DateTime.Now }; this.SocialNetworkData.Posts.Add(newPost); this.SocialNetworkData.SaveChanges(); return(this.Ok(PostViewModel.Create(newPost, loggedUser))); }
public IHttpActionResult PostOnWall(AddPostBindingModel postModel) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var wallOwner = this.SocialNetworkData.Users.All() .FirstOrDefault(u => u.UserName == postModel.Username); if (wallOwner == null) { return this.NotFound(); } var loggedUserId = this.User.Identity.GetUserId(); var loggedUser = this.SocialNetworkData.Users .GetById(loggedUserId); if (loggedUserId == null) { return this.BadRequest("Invalid session token."); } if (wallOwner.Id != loggedUserId) { var isFriendOfWallOwner = wallOwner.Friends .Any(fr => fr.Id == loggedUserId); if (!isFriendOfWallOwner) { return this.BadRequest("Only friends can post on user's wall."); } } var newPost = new Post() { Content = postModel.PostContent, WallOwner = wallOwner, WallOwnerId = wallOwner.Id, Author = loggedUser, AuthorId = loggedUserId, Date = DateTime.Now }; this.SocialNetworkData.Posts.Add(newPost); this.SocialNetworkData.SaveChanges(); return this.Ok(PostViewModel.Create(newPost, loggedUser)); }
public IHttpActionResult AddPost( [FromBody] AddPostBindingModel model) { 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.Data.Users .FirstOrDefault(u => u.UserName == model.WallOwnerUsername); if (wallOwner == null) { return(this.BadRequest(string.Format( "User {0} does not exist", model.WallOwnerUsername))); } string loggedUserId = this.User.Identity .GetUserId(); var post = new Post() { AuthorId = loggedUserId, WallOwner = wallOwner, Content = model.Content, PostedOn = DateTime.Now, }; this.Data.Posts.Add(post); this.Data.SaveChanges(); var data = this.Data.Posts .Where(p => p.Id == post.Id) .Select(PostViewModel.Create) .FirstOrDefault(); return(this.Ok(data)); }
public IHttpActionResult AddCommentToPost(int postId, AddPostBindingModel model) { //check if the post exists var post = this.Context.Posts.Find(postId); if (post == null) { return(this.NotFound()); } //if the model is empty if (model == null) { return(this.BadRequest("No values are sent!")); } //check for validations if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } //if everything is OK var userId = this.User.Identity.GetUserId(); var comment = new Comment() { Content = model.Content, PostedOn = DateTime.Now, AuthorId = userId }; post.Comments.Add(comment); this.Context.SaveChanges(); return(this.Ok()); }
public async Task <HttpResponseMessage> AddPostToUser(AddPostBindingModel model) { if (!ModelState.IsValid) { return(await this.BadRequest(this.ModelState).ExecuteAsync(new CancellationToken())); } if (model == null) { return(await this.BadRequest("Post cannot be empty.").ExecuteAsync(new CancellationToken())); } var user = this.Data.Users.FirstOrDefault(u => u.UserName == model.username); if (user == null) { return(await this.NotFound().ExecuteAsync(new CancellationToken())); } var currentUserId = User.Identity.GetUserId(); var currentUser = this.Data.Users.FirstOrDefault(x => x.Id == currentUserId); if (currentUser == null) { return(await this.BadRequest("Invalid user token! Please login again!").ExecuteAsync(new CancellationToken())); } if (!user.Friends.Contains(currentUser)) { return(await this.BadRequest("Not allowed. Wall-owner must be a friend or user.").ExecuteAsync(new CancellationToken())); } var newPost = new Post() { Content = model.postContent, Author = currentUser, PostedOn = DateTime.Now }; user.Posts.Add(newPost); this.Data.SaveChanges(); var dbPost = this.Data.Posts.FirstOrDefault(p => p.Id == newPost.Id); var postReturnView = new PostViewModel() { Id = dbPost.Id, AuthorId = dbPost.Author.Id, AuthorUsername = dbPost.Author.UserName, AuthorProfileImage = dbPost.Author.ProfilePicture, WallOwnerId = user.Id, PostContent = dbPost.Content, Date = dbPost.PostedOn, LikesCount = dbPost.Likes.Count, Liked = false, TotalCommentsCount = 0, Comments = new List <CommentViewModel>() }; return(await this.Ok(new { message = "Post successfully added.", post = postReturnView }).ExecuteAsync(new CancellationToken())); }
public PostViewModel GetViewModel(AddPostBindingModel model) { return(Mapper.Map <AddPostBindingModel, PostViewModel>(model)); }