/**
  * Cadastro de usuário
  */
 public function novoAction()
 {
     $this->view->form = $this->formUsuario();
     if ($this->getRequest()->isPost()) {
         $aDados = $this->getRequest()->getPost();
         if ($this->view->form->isValid($aDados)) {
             $oUsuario = new Administrativo_Model_Usuario();
             $aCheckUsuario = Administrativo_Model_Usuario::getByAttribute('login', $aDados['login']);
             if ($aCheckUsuario !== NULL) {
                 $this->view->messages[] = array('error' => $this->translate->_('O Login já está em uso no sistema.'));
                 return FALSE;
             }
             $oUsuarioEmail = Administrativo_Model_Usuario::getByAttribute('email', $aDados['email']);
             if (!empty($oUsuarioEmail)) {
                 $this->view->messages[] = array('error' => $this->translate->_('Email já está cadastrado no sistema.'));
                 return FALSE;
             }
             $oPerfil = Administrativo_Model_Perfil::getByAttribute('id', $aDados['perfil']);
             $iTipoPerfil = $oPerfil->getEntity()->getTipo();
             $iTipoUsuario = isset($aDados['tipo']) ? $aDados['tipo'] : $this->view->user->getTipo();
             if ($iTipoUsuario != $iTipoPerfil) {
                 $this->view->messages[] = array('error' => $this->translate->_('Perfil incorreto para o tipo selecionado.'));
                 return FALSE;
             }
             $aDados['principal'] = $this->view->user->getAdministrativo() && $iTipoUsuario == 1 ? 'true' : 'false';
             $oUsuario->setTipo($this->view->user->getTipo());
             $oUsuario->setCnpj($this->view->user->getCnpj());
             $oUsuario->setHabilitado(TRUE);
             $oUsuario->persist($aDados);
             Administrativo_Model_Usuario::enviarEmailSenha($oUsuario);
             $aMensagem = array('success' => $this->translate->_('Usuário cadastrado com sucesso.'));
             $this->_helper->getHelper('FlashMessenger')->addMessage($aMensagem);
             $this->_redirector->gotoSimple('editar', 'usuario', 'administrativo', array('id' => $oUsuario->getId()));
         }
     }
 }
 /**
  * Envia ao usuário um email contendo as informações necessárias para a recuperação da sua senha de acesso.
  * @throws Exception
  */
 public function esqueciMinhaSenhaPostAction()
 {
     $aDados = $this->getRequest()->getParams();
     $oForm = new Auth_Form_EsqueciMinhaSenha();
     $aRetornoJson = array();
     $aRetornoJson['status'] = TRUE;
     $aRetornoJson['message'] = '';
     try {
         if (!$oForm->isValid($aDados)) {
             throw new Exception($this->translate->_('Email informado não é válido.'));
         }
         /**
          * Buscamos o usuário pelo email
          */
         $oQueryAtivos = Administrativo_Model_Usuario::getQuery();
         $oQueryAtivos->select('e');
         $oQueryAtivos->from('\\Administrativo\\Usuario', 'e');
         $oQueryAtivos->where("e.email = '{$oForm->email->getValue()}' and e.habilitado = true");
         $aEntitiesUsuarios = $oQueryAtivos->getQuery()->getResult();
         if (count($aEntitiesUsuarios) != 1) {
             throw new Exception($this->translate->_('Email informado não é um cadastro válido.'));
         }
         $oUsuario = new Administrativo_Model_Usuario($aEntitiesUsuarios[0]);
         Administrativo_Model_Usuario::enviarEmailSenha($oUsuario);
         $aRetornoJson['success'] = $this->translate->_('Um email foi enviado para a sua conta com instruções.');
         $aRetornoJson['url'] = $this->view->baseUrl('/auth/login');
     } catch (Exception $eErro) {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['error'][] = $eErro->getMessage();
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }