/**
  * @Route("/updateUser/{id}", name="updateUser")
  * @Template()
  * @Security("has_role('ROLE_ADMIN')")
  */
 public function updateAction(Request $request, $id)
 {
     #Recuperando o serviço do container
     $userRN = $this->get('rn_user');
     $projetoRN = $this->get('rn_projeto');
     $perfilRN = $this->get('rn_perfil');
     $roleRN = $this->get('rn_role');
     #Recuperando os projetos e perfís
     $projetos = $projetoRN->all();
     $perfis = $perfilRN->all();
     #Recuperando o Usuário
     $user = $userRN->find($id);
     $oldPassword = $user->getPassword();
     $user->setPassword("");
     #Criando o formulário
     $form = $this->createForm(new UserType(), $user);
     #Verifica a existência da foto do usuário
     if ($user->getFoto()) {
         $documentoOld = $user->getFoto();
         $pathOld = $documentoOld->getAbsolutePath();
     }
     #Verficando se é uma submissão
     if ($request->getMethod() === "POST") {
         #Repasando a requisição
         $form->handleRequest($request);
         #Verifica se os dados são válidos
         if ($form->isValid()) {
             #Recuperando os dados
             $user = $form->getData();
             $user->clearRoles();
             $user->clearPerfis();
             #Trabalhando com a nova senha
             if ($user->getPassword() != "") {
                 $encoder = $this->container->get('security.password_encoder');
                 $encoded = $encoder->encodePassword($user, $user->getPassword());
                 $user->setPassword($encoded);
             } else {
                 $user->setPassword($oldPassword);
             }
             #Fazendo o upload da foto
             if (!is_null($user->getFoto()) && $user->getFoto()->getFile() !== null) {
                 if (isset($documentoOld)) {
                     $doctrine = $this->getDoctrine()->getManager();
                     $documentoOld->removeFile($pathOld);
                     $doctrine->remove($documentoOld);
                     $doctrine->flush();
                 }
                 #Criando um novo nome para o arquivo
                 $originalName = $user->getFoto()->getFile()->getClientOriginalName();
                 $arrayName = explode(".", $originalName);
                 $newName = md5(uniqid(null, true)) . "." . $arrayName[count($arrayName) - 1];
                 $user->getFoto()->upload($newName);
                 $user->getFoto()->setUser($user);
                 $doctrine = $this->getDoctrine()->getManager();
                 $doctrine->persist($user->getFoto());
                 $doctrine->flush();
             } else {
                 if (!isset($documentoOld)) {
                     $user->setFoto(null);
                 }
             }
             #Recuperando os perfís e permissões
             $permissoes = $request->request->get("permissao");
             $perfisRequest = $request->request->get("perfil");
             $permissoes = $permissoes == null ? array() : $permissoes;
             $perfisRequest = $perfisRequest == null ? array() : $perfisRequest;
             #Perfís
             foreach ($perfisRequest as $perfil) {
                 $objPerfil = $perfilRN->find($perfil);
                 if ($objPerfil) {
                     $user->addPerfi($objPerfil);
                 }
             }
             #Permissões
             foreach ($permissoes as $permissao) {
                 $role = $roleRN->findByRole($permissao);
                 if ($role) {
                     $user->addRole($role[0]);
                 } else {
                     $newRole = new \Serbinario\Bundles\SecurityBundle\Entity\Role();
                     $newRole->setNomeRole($permissao);
                     $user->addRole($newRole);
                 }
             }
             #Executando e recuperando o resultado
             $result = $userRN->update($user);
             if ($result) {
                 #Messagem de retorno
                 $this->get('session')->getFlashBag()->add('success', 'Dados cadastrado com sucesso');
             } else {
                 #Messagem de retorno
                 $this->get('session')->getFlashBag()->add('danger', 'Erro ao cadastrado Dados');
             }
             #Retorno
             return $this->redirectToRoute("gridUser");
         } else {
             #Messagem de retorno
             $this->get('session')->getFlashBag()->add('danger', (string) $form->getErrors());
         }
     }
     $rolesDoUser = array();
     foreach ($user->listRoles()->toArray() as $role) {
         $rolesDoUser[] = $role->getNomeRole();
     }
     $perfisDoUser = array();
     foreach ($user->getPerfis()->toArray() as $perfil) {
         $perfisDoUser[] = $perfil->getNomePerfil();
     }
     #Retorno
     return array("form" => $form->createView(), "perfis" => $perfis, "projetos" => $projetos, "perfisDoUser" => $perfisDoUser, "rolesDoUser" => $rolesDoUser, "logo" => $user->getFoto());
 }
 /**
  * @Route("updatePerfil/{id}", name="updatePerfil")
  * @Template()
  */
 public function updateAction(Request $request, $id)
 {
     #Recuperando o serviço do container
     $perfilRN = $this->get('rn_perfil');
     $projetoRN = $this->get('rn_projeto');
     $roleRN = $this->get('rn_role');
     #recuperando o perfil e os projetos
     $perfil = $perfilRN->find($id);
     $projetos = $projetoRN->all();
     #Criando o formulário
     $form = $this->createForm(new PerfilType(), $perfil);
     #Verficando se é uma submissão
     if ($request->getMethod() === "POST") {
         #Repasando a requisição
         $form->handleRequest($request);
         #Recuperando os perfís e permissões
         $permissoes = $request->request->get("permissao");
         #Verifica se os dados são válidos
         if ($form->isValid()) {
             #Recuperando os dados
             $perfil = $form->getData();
             $perfil->clearRoles();
             #Permissões
             foreach ($permissoes as $permissao) {
                 $role = $roleRN->findByRole($permissao);
                 if ($role) {
                     $perfil->addRole($role[0]);
                 } else {
                     $newRole = new \Serbinario\Bundles\SecurityBundle\Entity\Role();
                     $newRole->setNomeRole($permissao);
                     $perfil->addRole($newRole);
                 }
             }
             #Executando e recuperando o resultado
             $result = $perfilRN->update($perfil);
             if ($result) {
                 #Messagem de retorno
                 $this->get('session')->getFlashBag()->add('success', 'Dados cadastrado com sucesso');
             } else {
                 #Messagem de retorno
                 $this->get('session')->getFlashBag()->add('danger', 'Erro ao cadastrado Dados');
             }
             #Retorno
             return $this->redirectToRoute("gridPerfil");
         } else {
             #Messagem de retorno
             $this->get('session')->getFlashBag()->add('danger', (string) $form->getErrors());
         }
     }
     $rolesDoPerfil = array();
     foreach ($perfil->getRoles()->toArray() as $role) {
         $rolesDoPerfil[] = $role->getNomeRole();
     }
     #Retorno
     return array("form" => $form->createView(), "projetos" => $projetos, "rolesDoPerfil" => $rolesDoPerfil);
 }