public function editAction()
 {
     $usuarioSession = new Container('Login');
     $usuario_id = $usuarioSession->iduser;
     $em = $this->getEntityManager();
     $pessoaDao = new PessoaDao($em);
     $findPessoa = $pessoaDao->findByUserId($usuario_id);
     $clienteParam = $em->find('Register\\Entity\\Cliente', $findPessoa['id']);
     $usuarioParam = $em->find('Dataware\\Entity\\UserAccount', $usuario_id);
     $formCliente = $this->getFormCliente($clienteParam);
     $formUsuario = $this->getFormUsuario($usuarioParam);
     $request = $this->getRequest();
     $queryData = $this->params()->fromQuery();
     if (!empty($queryData)) {
         $formCliente->setData($queryData);
         $formUsuario->setData($queryData);
     }
     $this->adjustOfSpecialElements($formCliente);
     $args = array("formCliente" => $formCliente, "formUsuario" => $formUsuario, "action" => $this->getEvent()->getRouteMatch()->getParam('action', 'add'));
     if ($request->isPost()) {
         $postData = $request->getPost()->toArray();
         $formCliente->setData($postData);
         $formUsuario->setData($postData);
         $formUsuario->setValidationGroup("login");
         // Ao atualizar, somente valida o login, senha não precisa.
         $formClienteIsValid = $formCliente->isValid();
         $formUsuarioIsValid = $formUsuario->isValid();
         if ($formClienteIsValid && $formUsuarioIsValid) {
             $cliente = new Cliente();
             $cliente->setId($clienteParam->getId());
             $cliente->setNome($request->getPost("nome"));
             $cliente->setRg($request->getPost("rg"));
             $cliente->setCpf($request->getPost("cpf"));
             $cliente->setDataNascimento($request->getPost("dataNascimento"));
             $cliente->setSexo($request->getPost("sexo"));
             $cliente->setObservacao($request->getPost("observacao"));
             $cliente->setCep($request->getPost("cep"));
             $cliente->setBairro($request->getPost("bairro"));
             $cliente->setEndereco($request->getPost("endereco"));
             $cliente->setNumero($request->getPost("numero"));
             $cliente->setComplemento($request->getPost("complemento"));
             $cliente->setEmail($request->getPost("email"));
             $cliente->setTelefoneCelular($request->getPost("telefoneCelular"));
             $cliente->setTelefoneResidencial($request->getPost("telefoneResidencial"));
             $cliente->setTelefoneTrabalho($request->getPost("telefoneTrabalho"));
             $usuarioRep = $em->getRepository('Dataware\\Entity\\UserAccount');
             $usuario = $usuarioRep->findOneBy(array('id' => $usuarioParam->getId()));
             $usuario->setPassword($request->getPost("password"));
             $usuario->setName($request->getPost("nome"));
             $cliente->setUsuario($usuario);
             $cidadeRep = $em->getRepository('Register\\Entity\\Cidade');
             $cidade = $cidadeRep->findOneBy(array('id' => $request->getPost("cidade")));
             $cliente->setCidade($cidade);
             $em->merge($cliente);
             $em->flush();
             $this->flashMessenger()->addSuccessMessage("Perfil atualizado com sucesso!");
             $this->redirect()->toRoute("cliente", $args, array("query" => $postData));
         } else {
             $formClienteMsgs = $formCliente->getMessages();
             $formUsuarioMsgs = $formUsuario->getMessages();
             $formMessages = array_merge_recursive($formClienteMsgs, $formUsuarioMsgs);
             $this->displayErrorMessages($formMessages, $args, array('query' => $postData));
         }
     }
     return new ViewModel($args);
 }
 /**
  * {@inheritDoc}
  */
 public function setUsuario($usuario)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUsuario', array($usuario));
     return parent::setUsuario($usuario);
 }