public function store(Request $request)
 {
     $regras = array('email' => 'required|string', 'name' => 'required', 'perfis' => 'required|min:1');
     $mensagens = array('required' => 'O campo :attribute deve ser preenchido.', 'perfis.min' => 'O campo perfil deve ser selecionado.');
     $validator = Validator::make($request->all(), $regras, $mensagens);
     if ($validator->fails()) {
         return redirect('Usuario/cadastrar')->withErrors($validator)->withInput();
     }
     $perfil = PerfilUsuario::where('id', '=', $request['perfis'])->first();
     $usuarioLogado = Auth::User()->load('Vendedor');
     if (Gate::allows('AcessoVendedor') && $perfil->tipo == 'Vendedor') {
         DB::beginTransaction();
         try {
             $senha = rand(100000, 999999);
             $usuario = User::create(['name' => $request['name'], 'email' => $request['email'], 'password' => Hash::make($request['password']), 'idPerfilUsuario' => $request['perfis']]);
             Mail::send('Usuario.EmailTemplate', ['email' => $usuario->email, 'password' => $senha], function ($message) use($usuario) {
                 $message->to($usuario->email, $usuario->name)->subject('BrasilSpot Login');
             });
             if ($perfil->tipo == 'Vendedor') {
                 $regras = array('tiposVendedores' => 'required|min:1', 'metas' => 'required|min:1');
                 $mensagens = array('tiposVendedores.required' => 'O campo Tipos De Vendedores deve ser selecionado.', 'tiposVendedores.min' => 'O campo Tipos De Vendedores deve ser selecionado.', 'metas.required' => 'O campo Metas deve ser selecionado.', 'metas.min' => 'O campo Metas deve ser selecionado.');
                 $validator = Validator::make($request->all(), $regras, $mensagens);
                 $vendedor = Vendedor::create(['idUsuario' => $usuario->id, 'idTipo' => $request['tiposVendedores'], 'idMeta' => $request['metas'], 'idVendedorPai' => $usuarioLogado->id]);
             }
         } catch (Exception $exception) {
             DB::rollBack();
             $errors = $validator->getMessageBag();
             $errors->add('ErroException', 'Não foi possivel cadastrar o usuario.');
             return redirect()->back();
         }
         DB::commit();
         Session::flash('flash_message', 'Usuário adicionada com sucesso!');
         return redirect()->back();
     } else {
         if (Gate::allows('AcessoVendedor') && $perfil->tipo == 'Comerciante') {
             DB::beginTransaction();
             try {
                 $senha = rand(100000, 999999);
                 $usuario = User::create(['name' => $request['name'], 'email' => $request['email'], 'password' => Hash::make($senha), 'idPerfilUsuario' => $request['perfis']]);
                 Comerciante::create(['idVendedor' => $usuarioLogado->Vendedor->id, 'idUsuario' => $usuario->id]);
                 Mail::send('Usuario.EmailTemplate', ['email' => $usuario->email, 'password' => $senha], function ($message) use($usuario) {
                     $message->to($usuario->email, $usuario->name)->subject('BrasilSpot Login');
                 });
             } catch (Exception $exception) {
                 DB::rollBack();
                 $errors = $validator->getMessageBag();
                 $errors->add('ErroException', 'Não foi possivel cadastrar o usuario.');
                 return redirect()->back()->withErrors($errors);
             }
             DB::commit();
             Session::flash('flash_message', 'Usuário adicionada com sucesso!');
             return redirect()->back();
         }
     }
     return redirect()->back();
 }
 public function store(Request $request)
 {
     $regras = array('nome' => 'required|string', 'email' => 'required');
     $mensagens = array('required' => 'O campo :attribute deve ser preenchido.');
     $validator = Validator::make($request->all(), $regras, $mensagens);
     if ($validator->fails()) {
         return redirect('comerciantes/cadastrar')->withErrors($validator)->withInput();
     }
     $qtdComerciante = User::where('email', $request['email'])->count();
     if ($qtdComerciante == 0) {
         $senha = rand(100000, 999999);
         $usuario = User::create(['name' => $request['nome'], 'email' => $request['email'], 'password' => Hash::make($senha), 'idPerfilUsuario' => 3]);
         Comerciante::create(['idVendedor' => 1, 'idUsuario' => $usuario->id]);
         Mail::send('Usuario.EmailTemplate', ['email' => $usuario->email, 'password' => $senha], function ($message) use($usuario) {
             $message->to($usuario->email, $usuario->name)->subject('BrasilSpot Login');
         });
         Session::flash('flash_message', 'Comerciante adicionado com sucesso!');
         return redirect()->back();
     } else {
         $validator->errors()->add('email', 'Já existe um usuário cadastrado para o e-mail informado!');
         return redirect('comerciantes/cadastrar')->withErrors($validator)->withInput();
     }
 }