Esempio n. 1
0
 public function store(\Illuminate\Http\Request $request)
 {
     /*Validação de campos - request*/
     $this->validate($request, ['name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|confirmed|min:6', 'empresa' => 'required', 'grupo' => 'required']);
     $image = $request->file('caminhologo');
     //Pega imagem
     $input = $request->except(array('_token', 'ativo'));
     //não levar o token
     //----------------------Grava novo usuario (Tabela USERS)
     $dados = new users();
     $dados->name = $input['name'];
     $dados->email = $input['email'];
     $dados->confirmed = 1;
     //Se for criado usuario pelo usuario.
     $dados->password = bcrypt($input['password']);
     if ($image) {
         $dados->path_foto = $image->getClientOriginalName();
     }
     $dados->save();
     //----------------------FIM - Grava novo usuario (Tabela USERS)
     //-----------------Pega dados do usuarios admin (id da empresa e cliente cloud)
     $usuario_master = usuario::find(Auth::user()->id);
     //-----------------Cria registro na tabela usuarios para associar com a tabela users
     $usuarios = new usuario();
     $usuarios->id = $dados->id;
     //id recem cadastrado na tabela users
     $usuarios->empresas_id = $input['empresa'];
     //$usuarios->confirmed                              = 1; //Se for criado usuario pelo usuario.
     $usuarios->empresas_clientes_cloud_id = $usuario_master['empresas_clientes_cloud_id'];
     if ($input['sera_admin'] == 1) {
         //Se este for de outra empresa, cria como MASTER
         //if ($input['empresa']!=$this->dados_login->empresas_id)
         //{
         //    $usuarios->master = 1; //MASTER tem acesso total e nao pode ser excluido
         //} else
         //{
         //   $usuarios->master = 0;
         // }
     } else {
         $usuarios->master = 0;
     }
     $usuarios->admin = $input['sera_admin'];
     $usuarios->save();
     //-----------------FIM - Cria registro na tabela usuarios para associar com a tabela users
     //Se usuário master estiver criando um admin para outras igrejas/instituições, cria um usuario como admin.
     if ($input['sera_admin'] == 1) {
         //Cria o novo grupo somente se o usuário for pertencer a outra empresa
         //Caso seja da mesma empresa associa ao grupo existente
         if ($input['empresa'] != $this->dados_login->empresas_id) {
             //----------------------------------Cria grupo padrão Administrador (Se já não existir)
             //A tabela grupos, dispara a triiger de INSERT e chama a  spCriarPermissoesPadrao(NEW.id) que cria as permissoes padrao para o Administrador
             $grupo_padrao = \App\Models\grupos::firstOrCreate(['nome' => 'Administrador', 'empresas_id' => $input['empresa'], 'empresas_clientes_cloud_id' => $usuario_master['empresas_clientes_cloud_id'], 'default' => '1']);
             //----------------------------------FIM - Cria grupo padrão Administrador
             //------------------------------------Grava usuario e grupo
             //Usuario Admin com grupo padrão admin (com todas permissões)
             $usuarios_grupo = new \App\Models\usuarios_grupo();
             $usuarios_grupo->usuarios_id = $dados->id;
             $usuarios_grupo->usuarios_empresas_id = $input['empresa'];
             $usuarios_grupo->usuarios_empresas_clientes_cloud_id = $usuario_master['empresas_clientes_cloud_id'];
             $usuarios_grupo->grupos_id = $grupo_padrao->id;
             $usuarios_grupo->save();
             //------------------------------------FIM Grava usuario e grupo
         } else {
             //Grava Grupo que o usuário iŕa pertencer
             $grupo_usuario = new \App\Models\usuarios_grupo();
             $grupo_usuario->usuarios_id = $dados->id;
             $grupo_usuario->usuarios_empresas_id = $input['empresa'];
             $grupo_usuario->usuarios_empresas_clientes_cloud_id = $usuario_master['empresas_clientes_cloud_id'];
             $grupo_usuario->grupos_id = $input['grupo'];
             $grupo_usuario->save();
         }
     } else {
         //Grava Grupo que o usuário iŕa pertencer
         $grupo_usuario = new \App\Models\usuarios_grupo();
         $grupo_usuario->usuarios_id = $dados->id;
         $grupo_usuario->usuarios_empresas_id = $input['empresa'];
         $grupo_usuario->usuarios_empresas_clientes_cloud_id = $usuario_master['empresas_clientes_cloud_id'];
         $grupo_usuario->grupos_id = $input['grupo'];
         $grupo_usuario->save();
     }
     //----------------------------------Foto do usuário
     if ($image) {
         /*Regras validação imagem*/
         $rules = array('image' => 'image', 'image' => array('mimes:jpeg,jpg,png', 'max:200px'));
         // Validar regras
         $validator = Validator::make([$image], $rules);
         // Check to see if validation fails or passes
         if ($validator->fails()) {
             dd($validator);
         } else {
             $destinationPath = base_path() . '/public/images/users';
             //caminho onde será gravado
             if (!$image->move($destinationPath, $image->getClientOriginalName())) {
                 return $this->errors(['message' => 'Erro ao salvar imagem.', 'code' => 400]);
             }
         }
     }
     //----------------------------------FIM - Foto do usuário
     \Session::flash('flash_message', 'Dados Atualizados com Sucesso!!!');
     return redirect('usuarios');
 }