public JsonResult Curtir(string tipo, int id, bool curtida)
        {
            var usuario = Usuario.Load(CurrentUser.Data.SubjectId);

            int sucesso         = 0;
            int countCurtida    = 0;
            int countNaoCurtida = 0;

            if (tipo == "r")
            {
                var obj = ComunidadeRespostaCurtida.CurtidaByUsuario(id, usuario.Id);

                if (obj == null)
                {
                    var objCurtida = new ComunidadeRespostaCurtida()
                    {
                        ComunidadeRespostaId = id,
                        Data      = DateTime.Now,
                        Curtida   = curtida,
                        UsuarioId = usuario.Id
                    };

                    objCurtida.Save();

                    sucesso = 1;
                }
                else
                {
                    if (obj.Curtida != curtida)
                    {
                        obj.Curtida = curtida;
                        obj.Data    = DateTime.Now;

                        obj.Save();

                        sucesso = 1;
                    }
                    else
                    {
                        obj.Delete();

                        sucesso = 0;
                    }
                }

                countCurtida    = ComunidadeService.CountCurtidaResposta(id, true);
                countNaoCurtida = ComunidadeService.CountCurtidaResposta(id, false);
            }
            else if (tipo == "c")
            {
                var obj = ComunidadeComentarioCurtida.CurtidaByUsuario(id, usuario.Id);

                if (obj == null)
                {
                    var objCurtida = new ComunidadeComentarioCurtida()
                    {
                        ComunidadeComentarioId = id,
                        Data      = DateTime.Now,
                        Curtida   = curtida,
                        UsuarioId = usuario.Id
                    };

                    objCurtida.Save();

                    sucesso = 1;
                }
                else
                {
                    if (obj.Curtida != curtida)
                    {
                        obj.Curtida = curtida;
                        obj.Data    = DateTime.Now;

                        obj.Save();

                        sucesso = 1;
                    }
                    else
                    {
                        obj.Delete();

                        sucesso = 0;
                    }
                }

                countCurtida    = ComunidadeService.CountCurtidaComentario(id, true);
                countNaoCurtida = ComunidadeService.CountCurtidaComentario(id, false);
            }

            return(Json(new {
                Sucesso = sucesso,
                Tipo = tipo,
                Id = id,
                Curtida = curtida,
                CountCurtida = countCurtida,
                CountNaoCurtida = countNaoCurtida,
            }));
        }
        public ActionResult TopicosRespostas(string slugtopico, string slugpergunta)
        {
            Usuario usuario = new Usuario();

            if (CurrentUser.Data != null)
            {
                usuario = Usuario.Load(CurrentUser.Data.SubjectId);
            }

            var objTopico   = ComunidadeService.GetComunidadeTopicoBySlug(slugtopico);
            var objPergunta = ComunidadeService.GetComunidadePerguntaBySlug(slugpergunta);

            var lstResposta = new List <Respostas>();

            foreach (var resposta in ComunidadeService.GetAllRespostasByPerguntaAndStatus(objPergunta.Id, StatusComunidade.Publicada.Id, 0))
            {
                Respostas objResposta = new Respostas
                {
                    Id              = resposta.Id,
                    Resposta        = resposta.Resposta,
                    Usuario         = resposta.Usuario.Nome,
                    IsEspecialista  = resposta.Usuario.IsEspecialista,
                    Data            = resposta.Data,
                    UserCurtida     = usuario.Id > 0 ? ComunidadeService.RespostaUserCurtida(usuario.Id, resposta.Id, true) : false,
                    CountCurtida    = ComunidadeService.CountCurtidaResposta(resposta.Id, true),
                    UserNaoCurtida  = usuario.Id > 0 ? ComunidadeService.RespostaUserCurtida(usuario.Id, resposta.Id, false) : false,
                    CountNaoCurtida = ComunidadeService.CountCurtidaResposta(resposta.Id, false)
                };

                var lstComentario = new List <Comentarios>();

                foreach (var comentario in ComunidadeService.GetAllComentariosByRespostaAndStatus(resposta.Id, StatusComunidade.Publicada.Id, 0))
                {
                    Comentarios objComentario = new Comentarios
                    {
                        Id              = comentario.Id,
                        Comentario      = comentario.Comentario,
                        Usuario         = comentario.Usuario.Nome,
                        IsEspecialista  = comentario.Usuario.IsEspecialista,
                        Data            = comentario.Data,
                        UserCurtida     = usuario.Id > 0 ? ComunidadeService.ComentarioUserCurtida(usuario.Id, comentario.Id, true) : false,
                        CountCurtida    = ComunidadeService.CountCurtidaComentario(comentario.Id, true),
                        UserNaoCurtida  = usuario.Id > 0 ? ComunidadeService.ComentarioUserCurtida(usuario.Id, comentario.Id, false) : false,
                        CountNaoCurtida = ComunidadeService.CountCurtidaComentario(comentario.Id, false),
                    };

                    lstComentario.Add(objComentario);
                }

                objResposta.Comentarios = lstComentario;

                lstResposta.Add(objResposta);
            }

            var model = new ComunidadeTopicoRespostaViewModel
            {
                /* base model defaults */
                Title       = $"{objTopico.Titulo} - Comunidades Virtuais Negócios da Terra",
                Description = "",
                Robots      = "index, follow",
                Canonical   = $"{Constants.UrlWeb}/comunidades-virtuais/{slugtopico}/{slugpergunta}",

                Pergunta = new Perguntas
                {
                    Id          = objPergunta.Id,
                    Topico      = objTopico.Titulo,
                    Pergunta    = objPergunta.Pergunta,
                    Descricao   = objPergunta.Descricao,
                    Data        = objPergunta.Data,
                    Usuario     = objPergunta.Usuario.Nome,
                    Slug        = slugtopico,
                    QtdResposta = ComunidadeService.CountRepostaByPergunta(objPergunta.Id)
                },
                ComunidadeRespostas     = lstResposta,
                ComunidadeEspecialistas = ComunidadeService.GetEspecialistasByTopico(objTopico.Id).ToList(),
                ComunidadeVideos        = ComunidadeService.GetVideosByTopico(objTopico.Id).ToList()
            };

            //Set viewbag's
            ViewBag.ActiveNav     = "Negócios da Terra";
            ViewBag.Editorial     = Service.Models.Editorial.Load(EditorialEnum.NegociosDaTerra.GetHashCode());
            ViewBag.ExibirLogo    = true;
            ViewBag.LinkActiveNav = "/negocios-da-terra";

            return(View(model));
        }