/**
  * retorna os dados de Pessoa por Nome (Ilike)
  * @param PessoaValueObject $voPessoa
  * @throws PersistException
  */
 public function findByNome(PessoaValueObject $voPessoa, $limit = 10, $offSet = 0)
 {
     try {
         /*
          *       SELECT pess.sq_pessoa,
          *              pess.sq_tipo_pessoa,
          *              pess.no_pessoa
          *       FROM   corporativo.pessoa pess
          *       WHERE  pess.no_pessoa ilike $voPessoa->getNoPessoa()
          **/
         # obtem a entidade com base na anotacao
         $ePessoa = $this->getEntity(array('pess' => $this->annotation()->load()->class));
         # cria objeto de consulta baseando-se em email
         $query = $this->getQuery($ePessoa)->where($ePessoa->column('noPessoa')->ilike('%' . $voPessoa->getNoPessoa() . '%'));
         # filtro de tipo pessoa
         if ($voPessoa->getSqTipoPessoa()) {
             $query->and($ePessoa->column('sqTipoPessoa')->equals($voPessoa->getSqTipoPessoa()->getSqTipoPessoa()));
         }
         /* limit query */
         $query->limit((int) $limit, (int) $offSet);
         # executa query
         return $this->execute($query);
     } catch (IllegalArgumentException $iae) {
         throw new PersistException(self::INVALID_PARAMETER);
     } catch (\Exception $exp) {
         throw new PersistException(self::UNEXPECTED_EXCEPTION);
     }
 }
 private function _validatePessoa(PessoaValueObject $voPessoa)
 {
     try {
         BusinessException::throwsExceptionIfParamIsNull(trim($voPessoa->getNoPessoa()), self::NAME_REQUIRED);
     } catch (ModelException $mExcp) {
         throw new BusinessException($mExcp->getMessage(), $mExcp->getCode());
     }
 }
 /**
  * @param PessoaValueObject $filterPessoa
  * @param integer $limit
  * @return br\gov\sial\core\persist\ResultSet
  * @throws PersistException
  */
 public function findUnidadeConservacao(PessoaValueObject $filterPessoa, $limit = NULL)
 {
     try {
         $sql = "select\n                        p.*\n                    from\n                        corporativo.unidade_org uo\n                    inner join\n                        corporativo.pessoa p on p.sq_pessoa = uo.sq_pessoa \n                    inner join\n                        corporativo.tipo_unidade_org_hierarq tp on \n                            uo.sq_tipo_unidade = tp.sq_tipo_unidade_org and \n                            tp.trilha_sigla ilike '%-->uc-->%' ";
         $this->_query = $sql;
         $ePessoa = $this->getEntity(array('p' => $filterPessoa));
         $condicional = array(array('entity' => $ePessoa, 'field' => 'noPessoa', 'value' => '%' . $filterPessoa->getNoPessoa()));
         $this->buildWhere($condicional);
         if ($limit) {
             $this->_query .= " limit {$limit}";
         }
         return $this->execute($this->_query, $this->_params);
     } catch (\Exception $exp) {
         throw new PersistException($exp->getMessage(), $exp->getCode(), $exp);
     }
 }