/**
  * Tela inicial
  */
 public function indexAction()
 {
     $sBusca = $this->getRequest()->getParam('busca');
     $oPaginatorAdapter = new DBSeller_Controller_Paginator(Administrativo_Model_Usuario::getQuery(), 'Administrativo_Model_Usuario', 'Administrativo\\Usuario');
     $sWhere = ' 1 = 1 ';
     if ($sBusca != '') {
         $sBuscaLower = mb_strtolower($sBusca, 'UTF-8');
         $sWhere .= " AND ( ";
         $sWhere .= "   LOWER(e.nome)  LIKE '%{$sBuscaLower}%' OR ";
         $sWhere .= "   LOWER(e.login) LIKE '%{$sBuscaLower}%' OR ";
         $sWhere .= "   LOWER(e.email) LIKE '%{$sBuscaLower}%'  ";
         $sWhere .= " ) ";
     }
     $oUsuario = $this->view->user;
     // Se usuario nao for administrador
     if (!$oUsuario->getAdministrativo()) {
         // Se não for do tipo Fiscal e com perfil de Fiscal ou Tomador
         if ($oUsuario->getTipo() != 3 && !in_array($this->view->user->getPerfil()->getId(), array(4, 5))) {
             $sWhere .= " AND e.cnpj = '{$this->view->user->getCnpj()}'";
         } else {
             if ($this->view->user->getPerfil()->getId() == 4) {
                 // Se não for usuário de perfil Tomador
                 $sWhere .= " AND e.id = '{$this->view->user->getId()}'";
             } else {
                 // Se for usuário de perfil Fiscal
                 $sWhere .= " AND (e.administrativo IS NULL OR e.administrativo = false)";
             }
         }
     }
     $oPaginatorAdapter->where($sWhere);
     $oUsuarios = new Zend_Paginator($oPaginatorAdapter);
     $oUsuarios->setItemCountPerPage(10);
     $oUsuarios->setCurrentPageNumber($this->getRequest()->getParam('page'));
     $this->view->usuarios = $oUsuarios;
     $this->view->formBusca = $this->formBusca($sBusca);
     $this->view->busca = $this->getRequest()->getParam('busca');
 }
 /**
  * Cria a Senha e Atualiza o os dados dado usuário
  */
 public function recuperarSenhaPostAction()
 {
     $oRequest = $this->getRequest();
     $aRetornoJson = array();
     $aRetornoJson['status'] = TRUE;
     $aRetornoJson['message'] = '';
     $oDoctrine = Zend_Registry::get('em');
     try {
         $oDoctrine->getConnection()->beginTransaction();
         if ($oRequest->isPost() || $oRequest->isGet()) {
             $oForm = new Auth_Form_RecuperarSenha();
             if ($oRequest->senha != $oRequest->senharepetida) {
                 $aRetornoJson['fields'] = array('senha', 'senharepetida');
                 throw new Exception($this->translate->_('As senhas informadas não correspondem.'));
             }
             if (!$oForm->isValid($oRequest->getParams())) {
                 $aRetornoJson['fields'] = array_keys($oForm->getMessages());
                 throw new Exception($this->translate->_('Preencha os dados corretamente.'));
             }
             /**
              * 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]);
             /**
              * Recriamos o hash do usuario. caso nao seja o mesmo enviado, negamos a troca de senha
              */
             $sHashUsuario = $oUsuario->criarHash();
             if ($sHashUsuario != $oRequest->getParam('hash')) {
                 throw new Exception($this->translate->_('Código de verificação informado é inválido.'));
             }
             $oUsuario->setSenha($oRequest->getParam('senha'));
             $oUsuario->persist();
             $oDoctrine->getConnection()->commit();
             $aRetornoJson['success'] = $this->translate->_('Senha alterada com sucesso.');
             $aRetornoJson['login'] = $oUsuario->getLogin();
             $aRetornoJson['url'] = $this->view->baseUrl('/auth/login');
         }
     } catch (Exception $eErro) {
         $oDoctrine->getConnection()->rollback();
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['error'][] = $eErro->getMessage();
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }