protected override void OnPrepareTransactScope(UpvotePublicacaoCommand command)
        {
            Usuario    usuario    = _usuarioRepository.Find(_serviceContext.UsuarioAtualId);
            Publicacao publicacao = _publicacaoRepository.Find(command.Publicacao.Id);

            PublicacaoUpvote upvoteExistente = _publicacaoUpvoteRepository.PodeUpvote(publicacao, usuario);

            if (upvoteExistente != null)
            {
                publicacao.Downvote();
                _publicacaoUpvoteRepository.Delete(upvoteExistente);
                return;
            }

            // Excluir downvote caso exista no momento do upvote
            PublicacaoDownvote downvoteExistente = _publicacaoDownvoteRepository.PodeDownvote(publicacao, usuario);

            if (downvoteExistente != null)
            {
                publicacao.Upvote();
                _publicacaoDownvoteRepository.Delete(downvoteExistente);
            }

            publicacao.Upvote();

            PublicacaoUpvote publicacaoUpvote = new PublicacaoUpvote(publicacao, usuario);

            _publicacaoUpvoteRepository.Save(publicacaoUpvote);
        }
        protected override void OnPrepareTransactScope(InativarPublicacaoCommand command)
        {
            Publicacao publicacao = _publicacaoRepository.Find(command.Publicacao.Id);

            publicacao.Inativar();

            _publicacaoRepository.Update(publicacao);
        }