示例#1
0
 /**
  * Metodo para trocar a entidadeAtiva atual
  * @param  $id   		Id da entidade a ser acessada
  * @param  $tipo 		Tipo da entidade (ong|empresa|perfil)
  */
 public function getAcessarcomo($id, $tipo)
 {
     $entidadeAtiva_id = $id;
     $entidadeAtiva_tipo = $tipo;
     if ($entidadeAtiva_tipo && $entidadeAtiva_id) {
         $entidadeExiste = false;
         switch ($entidadeAtiva_tipo) {
             case 'ong':
                 # Retorna a ong na lista de ongs do usuario, ou o perfil
                 $ong = Ong::find($entidadeAtiva_id);
                 $entidadeExiste = $ong && Auth::user()->ongs->find($id) ? true : false;
                 break;
             case 'empresa':
                 # Retorna a empresa na lista de empresas do usuario, ou o perfil
                 $empresa = Empresa::find($entidadeAtiva_id);
                 $entidadeExiste = $empresa && Auth::user()->empresas->find($id) ? true : false;
                 break;
             case 'perfil':
                 # Retorna a empresa na lista de empresas do usuario, ou o perfil
                 $perfil = Perfil::find($entidadeAtiva_id);
                 $entidadeExiste = $perfil && Auth::user()->perfil->id == $id ? true : false;
                 break;
             default:
                 break;
         }
         if ($entidadeExiste) {
             Session::put('entidadeAtiva_id', $entidadeAtiva_id);
             Session::put('entidadeAtiva_tipo', $entidadeAtiva_tipo);
         }
         return redirect('conectar');
     }
 }
示例#2
0
 /**
  * Create a new user instance after a valid registration.
  *
  * @param  array  $data
  * @return User
  */
 public function create(array $data)
 {
     $nome = ucwords(strtolower($data['username']));
     $sobrenome = ucwords(strtolower($data['username_last']));
     //Criando perfil, usando dos atributos dentro de fillable[]
     $user = User::create(['username' => $nome, 'email' => $data['email'], 'genero' => $data['genero'], 'password' => bcrypt($data['password'])]);
     //Criando perfil usando as informações da tela de registro.
     $perfil = new Perfil();
     $perfil->user_id = $user->id;
     $perfil->nome_completo = $nome . ' ' . $sobrenome;
     $perfil->apelido = $nome;
     $perfil->aniversario = Carbon::createFromFormat('d/m/Y', $data['aniversario']);
     $perfil->save();
     //Criando uma prettyUrl para o novo usuario (username_currentTimestamp)
     $prettyUrl = new PrettyUrl();
     $prettyUrl->url = str_replace(" ", "", $user->username) . '_' . Carbon::now()->getTimestamp();
     $prettyUrl->tipo = 'usuario';
     $perfil->prettyUrl()->save($prettyUrl);
     // Envia um email de boas vindas
     Mail::send('emails.bemvindo', ['user' => $user], function ($message) use($user) {
         $message->to($user->email, $user->username)->subject('Bem vindo à Vivalá');
         $message->from('*****@*****.**', 'Vivalá');
     });
     // Faz um post de criação de perfil numerado caso seja < 300
     // e não numerado (só com o welcome) caso seja > 300
     if ($user->genero == 'fb.female' || $user->genero == 'feminino') {
         $welcome = "Bem vinda!";
     } else {
         $welcome = "Bem vindo!";
     }
     $novoPost = new Post();
     if ($perfil->id <= 300) {
         $novoPost->descricao = "<h1><i class='fa fa-star'></i></h1>" . $perfil->apelido . " é a " . $perfil->id . "ª pessoa a se juntar à Vivalá. " . $welcome;
     } else {
         $novoPost->descricao = "<h1><i class='fa fa-star'></i></h1>" . $perfil->apelido . " se juntou à Vivalá. " . $welcome;
     }
     $novoPost->tipo_post = 'acontecimento';
     $novoPost->relevancia = 999;
     $novoPost->relevancia_rate = 10;
     //Salvando novoPost para entidadeAtiva
     $perfil->posts()->save($novoPost);
     return $user;
 }
示例#3
0
 /**
  * Estabele a relação de seguir um perfil
  * @param  String 	    $id 		Id do perfil a ser seguido
  * @return JSON     	Resultado da requisicao
  */
 public function getFollowperfil($id)
 {
     //$entidadeAtiva do usuario logado.
     $entidadeAtiva = Auth::user()->entidadeAtiva;
     $perfil = Perfil::findOrFail($id);
     //se ja nao seguir esse perfil
     if (!$entidadeAtiva->followPerfil->find($perfil->id)) {
         $entidadeAtiva->followPerfil()->attach($perfil->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 $perfil seguido como target
         $entidadeAtiva->fromNotificacoes()->save($novaNotificacao);
         $perfil->notificacoes()->save($novaNotificacao);
         $novaNotificacao->push();
     }
     $return['success'] = true;
     return json_encode($return);
 }
 /**
  * Retorna a sugestão de seguidores
  *
  * @param  [integer] id do post
  * @return
  */
 public function getViajantes($filtro = "amigo")
 {
     $user = Auth::user();
     $entidadeAtiva = $user->entidadeAtiva;
     $entidadeAtiva = $user->entidadeAtiva;
     $perfil = $entidadeAtiva;
     $follow = $perfil->followPerfil;
     $followedBy = $perfil->followedByPerfil;
     if ($filtro == "amigo") {
         $sugestoes = $entidadeAtiva->sugestaoByAmigosEmComum;
     } else {
         if ($filtro == "seguindo") {
             $sugestoes = $entidadeAtiva->sugestaoBySeguindoEmComum;
         } else {
             if ($filtro == "numseguidores") {
                 $sugestoes = Perfil::getMaisSeguidos($entidadeAtiva);
             }
         }
     }
     return view('conectar.sugestoes.index', compact('sugestoes', 'perfil', 'follow', 'followedBy', 'filtro', 'user', 'entidadeAtiva'));
 }
 /**
  * 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;
 }
示例#6
0
 /**
  * Acessor para pegar uma Collection de Perfil ordenados pela quantidade de seguindo em comum
  * @return Collection
  */
 public function getSugestaoBySeguindoEmComumAttribute()
 {
     //Collection com todos os perfils que eu nao sigo
     $colNaoSeguindo = Perfil::all()->diff($this->followPerfil)->diff([$this]);
     $seguindo = $this->followPerfil;
     foreach ($colNaoSeguindo as $key => $perfil) {
         //Se esse perfil seguir outras pessoas, checo so seguindo desse perfil
         $seguindoDessePerfil = $perfil->followPerfil;
         if ($seguindoDessePerfil) {
             $seguindoEmComum = $seguindoDessePerfil->intersect($seguindo);
         }
         //Adicionando o parametro quantidadeSeguidores em comum em cada perfil da collection
         $perfilRetorno = $colNaoSeguindo->find($perfil->id);
         if ($perfilRetorno) {
             $perfilRetorno->quantidadeSeguindoEmComum = count($seguindoEmComum);
         }
     }
     //Ordenando a collection
     $colNaoSeguindo = $colNaoSeguindo->sortBy(function ($item) {
         return $item->quantidadeSeguindoEmComum;
     })->reverse();
     return $colNaoSeguindo;
 }
 public function getSugestoesViajantes($view)
 {
     $sugestoesViajantes = Perfil::getMaisSeguidos(Auth::user()->entidadeAtiva);
     $view->with('sugestoesViajantes', $sugestoesViajantes);
 }
示例#8
0
 public function run()
 {
     DB::table('fotos')->delete();
     $zordPerfil = Perfil::find(2);
     $fotoZord = new Foto();
     $fotoZord->tipo = 'avatar';
     $fotoZord->path = 'https://avatars1.githubusercontent.com/u/9811888?v=3&s=400';
     $zordPerfil->fotos()->save($fotoZord);
 }
 /**
  * Se nao encontrar, cria um novo usuario e redireciona-o para o quiz
  * @return User | Redirect           	
  */
 private function findByEmailOrCreate($userData)
 {
     //Procura/Cria o usuário com base no email cadastrado no Fb
     $user = User::where('email', '=', $userData->email)->first();
     $this->criouNovoUsuario = $user == null;
     //Se for um novo usuario
     if ($this->criouNovoUsuario) {
         $user = User::firstOrCreate(['email' => $userData->email]);
         //Atualiza o usuário com os dados do Fb
         $user->username = $userData->name;
         //Usando do translate do Laravel.
         $user->genero = trans("fb." . $userData->{'user'}['gender']);
         $user->fb_token = $userData->token;
         $user->save();
         //criando perfil para usuario
         $perfil = new Perfil();
         $perfil->nome_completo = $userData->name;
         $perfil->genero = trans("fb." . $userData->{'user'}['gender']);
         $perfil->apelido = $userData->{'user'}['first_name'];
         $perfil->user_id = $user->id;
         $perfil->save();
         // Faz um post de criação de perfil numerado caso seja < 300
         // e não numerado (só com o welcome) caso seja > 300
         if ($user->genero == 'fb.female' || $user->genero == 'feminino') {
             $welcome = "Bem vinda!";
         } else {
             $welcome = "Bem vindo!";
         }
         $novoPost = new Post();
         if ($perfil->id <= 300) {
             $novoPost->descricao = "<h1><i class='fa fa-star'></i></h1>" . $perfil->apelido . " é a " . $perfil->id . "ª pessoa a se juntar à Vivalá. " . $welcome;
         } else {
             $novoPost->descricao = "<h1><i class='fa fa-star'></i></h1>" . $perfil->apelido . " se juntou à Vivalá. " . $welcome;
         }
         $novoPost->tipo_post = 'acontecimento';
         $novoPost->relevancia = 999;
         $novoPost->relevancia_rate = 10;
         //Salvando novoPost para entidadeAtiva
         $perfil->posts()->save($novoPost);
         /**
          * 
          * Criando uma prettyUrl para o novo usuario (username_currentTimestamp)
          */
         $prettyUrl = new PrettyUrl();
         $prettyUrl->url = $user->username . '_' . Carbon::now()->getTimestamp();
         $prettyUrl->tipo = 'usuario';
         $perfil->prettyUrl()->save($prettyUrl);
         // Envia um email de boas vindas
         Mail::send('emails.bemvindo', ['user' => $user], function ($message) use($user) {
             $message->to($user->email, $user->username)->subject('Bem vindo à Vivalá');
             $message->from('*****@*****.**', 'Vivalá');
         });
         $fotoPerfil = new Foto(['path' => $userData->avatar_original, 'tipo' => 'avatar']);
         $perfil->fotos()->save($fotoPerfil);
         //Caso o usuario ja exista, só ainda nao tinha feito login com o facebook
     } else {
         $perfil = $user->perfil;
     }
     //Atualiza a tabela de dados do Fb
     $facebookData = $user->facebookData ? $user->facebookData : new FacebookData();
     if (isset($userData->user_birthday)) {
         $facebookData->user_birthday = $userData->user_birthday;
     }
     if (isset($userData->user_hometown)) {
         $facebookData->user_hometown = $userData->user_hometown;
     }
     if (isset($userData->user_likes)) {
         $facebookData->user_likes = $userData->user_likes;
     }
     if (isset($userData->user_location)) {
         $facebookData->user_location = $userData->user_location;
     }
     $user->facebookData()->save($facebookData);
     return $user;
 }
示例#10
0
 /**
  * Retorna sugestoes de ongs que o usuario nao esteja seguindo.
  * @param  Perfil|Ong|Empresa        $entidadeAtiva 
  * @return Collection  Collection de ongs para sugestao
  */
 public static function getSugestoes($entidadeAtiva)
 {
     //ongs que nao sejam minhas
     $result = Ong::whereNotIn('user_id', [$entidadeAtiva->user->id])->whereNotIn('id', $entidadeAtiva->followOng()->lists('id'))->limit(3)->get();
     return $result;
 }
示例#11
0
 public function perfilDelete()
 {
     $perfil = Perfil::find(Input::get('Id'));
     $txtUsuario = $perfil->perfil;
     //cambio el campo status = 0
     $perfil->status = 0;
     if ($perfil->save()) {
         echo "Perfil " . $txtUsuario . " borrado.";
     } else {
         echo "Perfil " . $txtUsuario . " NO ha sido borrado.";
     }
 }
 /**
  * Show the form for creating a new resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function perfilView()
 {
     $perfiles = Perfil::all();
     return view('asignarPerfil')->with('perfiles', $perfiles);
 }
示例#13
0
 /**
  * Recebe por POST o $id do Perfil e faz update das informações do perfil
  */
 public function postContemais($id, QuizConteMaisRequest $request)
 {
     $perfil = Perfil::findOrFail($id);
     $perfil->update($request->all());
     $perfil->push();
 }
示例#14
0
 public function usuariosMain()
 {
     //control de sesion
     $admin = new adminController();
     if (!$admin->getControl()) {
         return redirect('admin')->with('login_errors', '<font color="#ff0000">La sesión a expirado. Vuelva a logearse..</font>');
     }
     $OK = $admin->opcion_perfiles('menuUsuario', Session::get('idPerfil'));
     if ($OK === true) {
         //listado de los usuarios actuales
         $arResult = Usuario::where('status', '=', '1')->get();
         //listado de empresas
         $listEmpresas = Empresa::all();
         //listado de los perfiles actuales
         $listPerfiles = Perfil::where('status', '=', '1')->get();
         return view('admin.usuariosMain')->with('arResult', $arResult)->with('listEmpresas', $listEmpresas)->with('listPerfiles', $listPerfiles);
     } else {
         return view('admin.main')->with('errores', 'Usted no tiene suficientes permisos para esta opción');
     }
 }
示例#15
0
 /**
  * Seta o like da entidadeAtiva atual para um post específico
  *
  * @param  [integer] id do post
  * @return
  */
 public function getSetapoiador($id)
 {
     $perfil = Perfil::findOrFail($id);
     if (Auth::user()->isAdmin()) {
         if ($perfil->apoiador == 'B') {
             $perfil->apoiador = null;
         } else {
             $perfil->apoiador = 'B';
         }
         $perfil->push();
     }
     return 'success';
 }
示例#16
0
 public function asigperfilesActualizar(Request $request)
 {
     //echo $request->op_1_2;die;
     //control de sesion
     $admin = new adminController();
     if (!$admin->getControl()) {
         return redirect('admin')->with('login_errors', '<font color="#ff0000">La sesión a expirado. Vuelva a logearse..</font>');
     }
     //listamos los perfiles
     $listPerfiles = Perfil::where('status', '=', '1')->get();
     //listamos las opciones de los perfiles
     $listOpciones = OpcionPerfiles::all();
     //recojo los datos del request
     // hago dos bucles, el externo recorre las opciones y el interno los perfiles
     //asi genero la tabla (array) de todas las opciones
     foreach ($listOpciones as $opcion) {
         $listPerfilesNuevos = "";
         foreach ($listPerfiles as $perfil) {
             $posicion = 'op_' . $opcion->id . '_' . $perfil->idPerfil;
             $valor = $request->{$posicion};
             //si viene "on" es = 1, si viene vacio es = 0
             if ($valor === 'on') {
                 $listPerfilesNuevos[] = $perfil->idPerfil;
             }
         }
         $listPerfilesNuevos = implode(',', $listPerfilesNuevos);
         //por utlimo actualizo esa linea de la tabla opciones_perfiles
         $datosOpcion = OpcionPerfiles::find($opcion->id);
         $datosOpcion->perfiles = $listPerfilesNuevos;
         $datosOpcion->save();
     }
     $ok = 'Se ha actualizado las asignaciones de las opciones.';
     return redirect('admin/asig_perfiles')->with('errors', $ok);
 }