/** * 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); }
/** * Metodo para se recuperar a entidade que tem o $id passado por parametro * OBS: necessita do input hidden tipoEntidade; */ public function getEntidade($id) { $tipoEntidade = Input::get('tipoEntidade', ''); switch ($tipoEntidade) { case 'App\\Perfil': $entidade = Perfil::findOrFail($id); break; case 'App\\Ong': $entidade = Ong::findOrFail($id); break; case 'App\\Empresa': $entidade = Empresa::findOrFail($id); break; case 'App\\Post': $entidade = Post::findOrFail($id); break; default: $entidade = ''; // Se nao encontrar nenhuma entidade, quebrar? // App::abort(500, 'Entidade nao identificada'); break; } return $entidade ? $entidade : false; }
/** * Metodo para filtrar Vagas por POST, * @param categoriaOng -> id da categoria a ser usada no filtro * @param nome -> nome a ser usado no filtro * @param cidade_id -> id da cidade a ser usado no filtro */ public function postFiltrarvagas() { $categoriaVaga = Request::get('filtro_categoria'); $cidade_id = Request::get('filtro_cidade'); $filtro_ong = Request::get('filtro_ong'); $categorias = Vaga::getCategoriasComVagas(); $cidades = Vaga::getCidadesComVagas(); $ongs = Vaga::getOngsComVagas(); $causas = new Collection(); //Montando array de ongs para select $ongsArray = array(null => 'Projeto'); foreach ($ongs as $ong) { $ongsArray[$ong->id] = $ong->nome; } $ongs = $ongsArray; //Montando array de cidades para select $cidadesArray = array(null => 'Cidade'); foreach ($cidades as $cidade) { $cidadesArray[$cidade->id] = $cidade->nome; } $cidades = $cidadesArray; //Montando array de categorias para select $categoriasArray = array(null => 'Categoria'); foreach ($categorias as $categoria) { $categoriasArray[$categoria->id] = $categoria->nomeTraduzido; } $categorias = $categoriasArray; //Filtrando resultados pelas categorias if ($categoriaVaga && $categoriaVaga != "null") { $vagasByCategoria = CategoriaVaga::findOrFail($categoriaVaga)->vagas; $causas = $causas->merge($vagasByCategoria); } //Filtrando resultados por Cidade if ($cidade_id) { $vagasByCidade = Cidade::findOrFail($cidade_id)->vagas; //Se ja tiver filtrado, entao interseccionar os //resultados para maior relevancia if (count($causas)) { $causas = $causas->intersect($vagasByCidade); } else { $causas = $causas->merge($vagasByCidade); } } if ($filtro_ong) { $causasByOng = Ong::findOrFail($filtro_ong)->vagas; if (count($causas)) { $causas = $causas->intersect($causasByOng); } else { $causas = $causas->merge($causasByOng); } } if (!$cidade_id && (!$categoriaVaga || $categoriaVaga == "null") && !$filtro_ong) { $causas = Vaga::all(); } return view('cuidar.vagas', compact('causas', 'categorias', 'cidades', 'ongs')); }
/** * Deleta a Ong. * @param $id -> id da ong a ser deletada */ public function destroy($id) { $ong = Ong::findOrFail($id); $user = Auth::user(); //Se a Ong a ser deletada pertencer ao usuario logado. if ($user->id == $ong->user->id) { $ong->delete(); } else { App::abort(403, 'Voce nao tem permissão para deletar uma vaga que não te pertence.'); } return view('home'); }