Пример #1
0
        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();
        }
Пример #2
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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());
        }
Пример #7
0
        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()));
        }
Пример #8
0
 public PostViewModel GetViewModel(AddPostBindingModel model)
 {
     return(Mapper.Map <AddPostBindingModel, PostViewModel>(model));
 }