/**
  * seta o like da entidadeAtiva atual pra um comentario específico
  *
  * @param  [integer] id do comentario
  * @return
  */
 public function getLikecomentario($id)
 {
     //Verifica se o comentario existe
     $comentario = Comentario::findOrFail($id);
     //Testo se o usuário está logado
     $user = Auth::user();
     $entidadeAtiva = $user->entidadeAtiva;
     //Se já tiver dado like no comentario com esse id,
     //consigo encontralo pelo Collention->find()
     $alreadyLiked = $entidadeAtiva->likeComentario->find($comentario->id);
     if (!$alreadyLiked) {
         //Salvando relação (Dando o like finalmente!)
         $entidadeAtiva->likeComentario()->attach($comentario->id);
         // Aumenta a relevancia do post
         $comentario->post->relevancia += $comentario->post->relevancia_rate;
         $comentario->post->push();
         //Só levantar uma notificacao se o like for em um
         //comentario que nao seja seu ou de alguma de suas entidades
         if ($entidadeAtiva->user->id != $comentario->author->user->id) {
             //Criando nova notificacao
             $novaNotificacao = Notificacao::create(['titulo' => 'Curtiram seu comentario', 'mensagem' => $entidadeAtiva->apelido . ' curtiu seu comentario', 'tipo_notificacao' => 'like_comentario', 'url' => $comentario->post->url]);
             //associando a entidadeAtiva com o from e o autor do comentario likeado como target
             $entidadeAtiva->fromNotificacoes()->save($novaNotificacao);
             $comentario->author->notificacoes()->save($novaNotificacao);
             $novaNotificacao->push();
         }
     } else {
         //se ja estiver dando like, remover like
         $entidadeAtiva->likeComentario()->detach($comentario->id);
     }
     // Retorna a quantidade de likes para utilizar na view
     return $comentario->getQuantidadeLikes();
 }
Esempio n. 2
0
 /**
  * Estabele a relação de seguir uma ong
  * @param  String 	    $id 		Id da ong a ser seguida
  * @return JSON     	Resultado da requisicao
  */
 public function getFollowong($id)
 {
     //$entidadeAtiva do usuario logado.
     $entidadeAtiva = Auth::user()->entidadeAtiva;
     $ong = Ong::findOrFail($id);
     //se ja nao seguir essa ong
     if (!$entidadeAtiva->followOng->find($ong->id)) {
         $entidadeAtiva->followOng()->attach($ong->id);
         $entidadeAtiva->push();
         //Criando nova notificacao
         $novaNotificacao = Notificacao::create(['titulo' => 'Voce tem um novo seguidor', 'mensagem' => $entidadeAtiva->apelido . ' agora está te seguindo e vai receber seus posts', 'tipo_notificacao' => 'seguidor', 'url' => $entidadeAtiva->getUrl()]);
         //associando a entidadeAtiva com o from e o $ong seguido como target
         $entidadeAtiva->fromNotificacoes()->save($novaNotificacao);
         $ong->notificacoes()->save($novaNotificacao);
         $novaNotificacao->push();
     }
     $return['success'] = true;
     return json_encode($return);
 }