Exemplo n.º 1
0
        public async Task <bool> AddUpVoteToPostAsync(string postId, ClaimsPrincipal user)
        {
            var dbPost = await this.redditCloneUnitOfWork.Posts.GetByIdAsync(postId);

            if (dbPost == null)
            {
                return(false);
            }

            var dbUserId   = this.userManager.GetUserId(user);
            var dbVotePost = await this.redditCloneUnitOfWork.VotePostRepository
                             .GetByUserIdAsync(dbUserId, postId);

            if (dbVotePost == null)
            {
                dbVotePost = this.CreatePost(dbUserId, postId);
                this.redditCloneUnitOfWork.VotePostRepository.Add(dbVotePost);
            }
            else if (dbVotePost.Value > 0)
            {
                return(false);
            }
            else
            {
                dbPost.DownVotesCount--;
            }

            dbVotePost.Value = 1;
            dbPost.UpVotesCount++;

            var rowsAffected = await this.redditCloneUnitOfWork.CompleteAsync();

            return(UnitOfWorkValidator.IsUnitOfWorkCompletedSuccessfully(rowsAffected));
        }
Exemplo n.º 2
0
        public async Task <bool> AddResponseToCommentAsync(ClaimsPrincipal user, CommentBindingModel model)
        {
            var dbComment = await this.unitOfWork.Comments.GetByIdAsync(model.SourceId);

            if (dbComment == null)
            {
                return(false);
            }

            var dbUserId = this.userManager.GetUserId(user);
            var dbReply  = this.commentMapper.MapComment(dbComment.PostId, model.Description, dbUserId);

            dbComment.Replies.Add(dbReply);
            var rowsAffected = await unitOfWork.CompleteAsync();

            return(UnitOfWorkValidator.IsUnitOfWorkCompletedSuccessfully(rowsAffected));
        }
Exemplo n.º 3
0
        public async Task <bool> CreatePostAsync(ClaimsPrincipal user, PostCreationBindingModel model)
        {
            var dbSubreddit = await this.redditCloneUnitOfWork.Subreddits
                              .GetByIdAsync(model.SelectedSubredditId);

            if (dbSubreddit == null)
            {
                return(false);
            }

            var dbUserId = this.userManager.GetUserId(user);
            var dbPost   = this.postMapper.MapPost(model, dbUserId);

            redditCloneUnitOfWork.Posts.Add(dbPost);
            var rowsAffected = await redditCloneUnitOfWork.CompleteAsync();

            return(UnitOfWorkValidator.IsUnitOfWorkCompletedSuccessfully(rowsAffected));
        }
        public async Task <bool> CreateSubredditAsync(SubredditCreationBindingModel model, ClaimsPrincipal user)
        {
            var subredditsWithName = await this.redditCloneUnitOfWork.Subreddits.FindAsync(s => s.Name == model.Name);

            if (subredditsWithName.Count() > 0)
            {
                return(false);
            }

            var dbSubreddit = this.mapper.Map <Subreddit>(model);
            var dbUserId    = this.userManager.GetUserId(user);

            dbSubreddit.AuthorId = dbUserId;

            this.redditCloneUnitOfWork.Subreddits.Add(dbSubreddit);
            int rowsAffected = await this.redditCloneUnitOfWork.CompleteAsync();

            return(UnitOfWorkValidator.IsUnitOfWorkCompletedSuccessfully(rowsAffected));
        }
Exemplo n.º 5
0
        public async Task <bool> RemoveUpVoteToPostAsync(string postId, ClaimsPrincipal user)
        {
            var dbPost = await this.redditCloneUnitOfWork.Posts.GetByIdAsync(postId);

            if (dbPost == null)
            {
                return(false);
            }

            var dbUserId   = this.userManager.GetUserId(user);
            var dbVotePost = await this.redditCloneUnitOfWork.VotePostRepository
                             .GetByUserIdAsync(dbUserId, postId);

            if (this.IsUpVoteValid(dbVotePost) == false)
            {
                return(false);
            }

            dbPost.UpVotesCount--;
            this.redditCloneUnitOfWork.VotePostRepository.Remove(dbVotePost);
            var rowsAffected = await this.redditCloneUnitOfWork.CompleteAsync();

            return(UnitOfWorkValidator.IsUnitOfWorkCompletedSuccessfully(rowsAffected));
        }