Пример #1
0
 /**
  * método que retorna dados para da assinatura pela chave sqArtefato
  * @param \Core_Dto_Abstract $dto
  * @return \Doctrine\ORM\QueryBuilder
  */
 public function findAssinatura(\Core_Dto_Search $dto)
 {
     $query = mb_strtolower($dto->getQuery(), 'UTF-8');
     $queryBuilder = $this->getEntityManager()->createQueryBuilder()->select('
                 a.sqAssinatura,
                 a.dtAssinatura,
                 a.txMotivacao,
                 p.noPessoa
             ')->from('app:Assinatura', 'a')->leftjoin('a.sqPessoa', 'p')->andWhere('a.sqArtefato = :sqArtefato')->setParameter('sqArtefato', $dto->getSqArtefato());
     return $res = $queryBuilder->getQuery()->getOneOrNullResult();
 }
 /**
  * LISTA DE TIPO DE ASSUNTO DE SOLICITAÇÃO.
  *
  * @param \Core_Dto_Search $dto
  * @param string $sort
  * @param string $order
  * @return array
  */
 public function listTipoAssuntoSolicitacao($dto, $sort = 'a.noTipoAssuntoSolicitacao', $order = 'ASC')
 {
     $queryBuilder = $this->_em->createQueryBuilder()->select('a.sqTipoAssuntoSolicitacao, a.noTipoAssuntoSolicitacao, a.inTipoParaArtefato')->from('app:TipoAssuntoSolicitacao', 'a')->orderBy($sort, $order);
     if ($dto->getQuery() != "") {
         $search = mb_strtolower($dto->getQuery(), 'UTF-8');
         $noTipoAssuntoSolicitacao = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('a.noTipoAssuntoSolicitacao'));
         $queryBuilder->where($queryBuilder->expr()->like('clear_accentuation(' . $noTipoAssuntoSolicitacao . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%'))));
     }
     $inTipoParaArtefato = $dto->getInTipoParaArtefato();
     if (!is_null($inTipoParaArtefato)) {
         $paraArtefato = $dto->getInTipoParaArtefato() > 0 ? '1' : '0';
         $queryBuilder->andWhere("a.inTipoParaArtefato = :inTipoParaArtefato")->setParameter(":inTipoParaArtefato", $paraArtefato);
         if ($paraArtefato) {
             $arrAssuntoProcesso = array(\Core_Configuration::getSgdoceTipoAssuntoSolicitacaoComentario(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoDespacho(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoAlterarCadastro(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoVolumeDeProcesso(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoDesanexaProcesso(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoDesmembraPecas(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoRemoverPeca());
             $arrAssuntoDocumento = array(\Core_Configuration::getSgdoceTipoAssuntoSolicitacaoComentario(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoAlterarCadastro(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoDespacho(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoDesanexaDigital(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoExcluirImagem());
             $arrAssunto = $inTipoParaArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso() ? $arrAssuntoProcesso : $arrAssuntoDocumento;
             $queryBuilder->andWhere("a.sqTipoAssuntoSolicitacao IN(:sqTipoAssuntoSolicitacaoiIn)")->setParameter(":sqTipoAssuntoSolicitacaoiIn", $arrAssunto);
         }
     }
     $queryBuilder->andWhere("a.stRegistroAtivo = :stRegistroAtivo")->setParameter(":stRegistroAtivo", TRUE);
     return $queryBuilder->getQuery()->useResultCache(TRUE, NULL, __METHOD__)->execute();
 }
Пример #3
0
 /**
  * @param \Core_Dto_Search $dto
  */
 public function searchArtefato($dto)
 {
     $sqTipoArtefato = $dto->getSqTipoArtefato();
     $nuArtefato = "sgdoce.formata_numero_digital(art.nu_digital) ILIKE '%{$dto->getQuery()}%'";
     if ($sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
         $value = preg_replace('/[^0-9]/', '', $dto->getQuery());
         $withOR = "OR TRANSLATE(art.nu_artefato, './-', '') ILIKE '%{$value}%'";
         $nuArtefato = "sgdoce.formata_numero_artefato(art.nu_artefato, ap.co_ambito_processo) ILIKE '%{$value}%' {$withOR}";
     }
     $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em);
     $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer');
     $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string');
     $rsm->addScalarResult('nu_digital', 'nuDigital', 'string');
     $sql = sprintf('
               SELECT art.sq_artefato
                      ,formata_numero_artefato(art.nu_artefato, ap.co_ambito_processo) AS nu_artefato
                      ,formata_numero_digital(art.nu_digital) as nu_digital
                 FROM artefato art
                 JOIN artefato                   art_pai ON obter_vinculo_pai(art.sq_artefato) = art_pai.sq_artefato
                 JOIN sgdoce.tramite_artefato    uta ON art_pai.sq_artefato = uta.sq_artefato AND uta.st_ultimo_tramite
                 JOIN tipo_artefato_assunto      taa ON taa.sq_tipo_artefato_assunto = art.sq_tipo_artefato_assunto
            LEFT JOIN artefato_processo           ap ON art.sq_artefato = ap.sq_artefato
            LEFT JOIN artefato_vinculo            av ON av.sq_artefato_filho = art.sq_artefato and av.sq_tipo_vinculo_artefato NOT IN(%5$d,%6$d,%7$d)
            LEFT JOIN artefato_arquivo_setorial  aas ON art.sq_artefato = aas.sq_artefato and aas.dt_desarquivamento is null
                WHERE aas.sq_artefato IS NULL
                  AND uta.sq_pessoa_recebimento = %1$s
                  AND uta.sq_status_tramite <> %2$s
                  AND (%3$s)
                  AND taa.sq_tipo_artefato = %4$s', $dto->getSqPessoa(), \Core_Configuration::getSgdoceStatusTramiteTramitado(), $nuArtefato, $dto->getSqTipoArtefato(), \Core_Configuration::getSgdoceTipoVinculoArtefatoReferencia(), \Core_Configuration::getSgdoceTipoVinculoArtefatoApoio(), \Core_Configuration::getSgdoceTipoVinculoArtefatoDespacho());
     try {
         return $this->_em->createNativeQuery($sql, $rsm)->useResultCache(false)->getScalarResult();
     } catch (\Exception $ex) {
         $this->getMessaging()->addErrorMessage(\Core_Registry::getMessage()->translate('MN180'), 'User');
         $this->getMessaging()->dispatchPackets();
         return array();
     }
 }
Пример #4
0
 /**
  * método para pesquisa de unidades organizacinais para combo
  * @param array $params
  * @return array $out
  */
 public function sistemaAutoComplete(\Core_Dto_Search $dto, $entidade)
 {
     $queryBuilder = $this->_em->createQueryBuilder();
     $query = $queryBuilder->select('c')->from($entidade, 'c');
     if (!is_null($dto->hasQuery())) {
         $search = mb_strtolower($dto->getQuery(), 'UTF-8');
         $field = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('c.nome'));
         $query->andWhere($queryBuilder->expr()->like('clear_accentuation(' . $field . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%'))));
     }
     $query->setMaxResults(10);
     $res = $query->getQuery()->getArrayResult();
     $out = array();
     foreach ($res as $item) {
         $out[$item['codigo']] = $item['nome'];
     }
     return $out;
 }
Пример #5
0
 public function searchNomeCargo(\Core_Dto_Search $dto)
 {
     $search = mb_strtolower($dto->getQuery(), 'UTF-8');
     $queryBuilder = $this->_em->createQueryBuilder();
     $field1 = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('pa.noCargoEncaminhado'));
     $field2 = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('c.noCargo'));
     $sqlSgdoce = $this->getEntityManager()->createQueryBuilder()->select('pa.noCargoEncaminhado')->from('app:PessoaArtefato', 'pa')->andWhere($queryBuilder->expr()->like('clear_accentuation(' . $field1 . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%'))));
     $sqlCorporativo = $this->getEntityManager()->createQueryBuilder()->select('c.noCargo')->from('app:VwCargo', 'c')->andWhere($queryBuilder->expr()->like('clear_accentuation(' . $field2 . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%'))));
     $sqlUnion = "{$sqlSgdoce->getQuery()->getSQL()} UNION {$sqlCorporativo->getQuery()->getSQL()}";
     $resultUnion = $this->_em->getConnection()->fetchAll($sqlUnion);
     $out = array();
     if (count($resultUnion)) {
         foreach ($resultUnion as $item) {
             $out[$item['no_cargo_encaminhado0']] = $item['no_cargo_encaminhado0'];
         }
     }
     return $out;
 }
Пример #6
0
 /**
  *
  * @param \Core_Dto_Search $dto
  * @return array
  */
 public function searchDocumentsToFirstPiece(\Core_Dto_Search $dto, $isExterno = false, $isLegado = false)
 {
     $sqTipoArtefato = $dto->getSqTipoArtefato();
     $field = "at.nu_digital";
     if ($sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
         $field = $this->_em->createQueryBuilder()->expr()->lower("translate(at.nu_artefato::text, './-'::text, ''::text)")->__toString();
     }
     $inAbreProcesso = '';
     if (!$isExterno) {
         $inAbreProcesso = ' AND td.in_abre_processo';
     }
     if ($isLegado) {
         $inAbreProcesso = '';
     }
     $sql = "SELECT at.sq_artefato,\n                       at.nu_digital,\n                       at.nu_artefato\n                  FROM sgdoce.fn_show_area_trabalho(NULL, :sqTipoArtefato, :sqPessoaLogada, :sqUnidadeLogada, :search) at\n                  JOIN tipo_documento td\n                    ON td.sq_tipo_documento = at.sq_tipo_documento\n                 WHERE at.sq_status_tramite > :sqStatusTramite\n\n                   AND at.has_imagem\n                   AND NOT at.arquivado\n                   AND {$field} LIKE '{$dto->getQuery()}%'\n                   AND NOT at.has_solicitacao_aberta\n                   {$inAbreProcesso}\n                 ORDER BY at.nu_digital";
     $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em);
     $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer');
     $rsm->addScalarResult('nu_digital', 'nuDigital', 'string');
     $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string');
     $nq = $this->_em->createNativeQuery($sql, $rsm);
     $nq->setParameter('sqStatusTramite', \Core_Configuration::getSgdoceStatusTramiteTramitado())->setParameter('sqTipoArtefato', $dto->getSqTipoArtefato())->setParameter('sqUnidadeLogada', \Core_Integration_Sica_User::getUserUnit())->setParameter('sqPessoaLogada', \Core_Integration_Sica_User::getPersonId())->setParameter('search', $dto->getQuery());
     $nq->useResultCache(false);
     return $nq->getArrayResult();
 }
Пример #7
0
 /**
  * Método que pesquisa as pessoas vinculadas as funcionalidades de minuta
  * @param \Core_Dto_Search $dto
  * @return array
  */
 public function searchPessoas(\Core_Dto_Search $dto)
 {
     if ($dto->getQuery()) {
         return $repository = $this->getEntityManager()->getRepository('app:VwProfissional')->searchPessoas($dto);
     }
     return NULL;
 }
 /**
  * método que retorna dados para Vizualizar o Artefato
  * @param \Core_Dto_Abstract $dto
  * @return \Doctrine\ORM\QueryBuilder
  */
 public function countInteressadosArtefatoValido(\Core_Dto_Search $dto)
 {
     $query = mb_strtolower($dto->getQuery(), 'UTF-8');
     $queryBuilder = $this->getEntityManager()->createQueryBuilder()->select('count(ps.sqPessoaSgdoce) as nu_interessados')->from('app:Artefato', 'a')->innerJoin('a.sqPessoaInteressadaArtefato', 'pa')->innerJoin('pa.sqPessoaSgdoce', 'ps')->andWhere('a.sqArtefato = :sqArtefato')->andWhere('ps.sqPessoaCorporativo IS NOT NULL')->setParameter('sqArtefato', $dto->getSqArtefato());
     return $res = $queryBuilder->getQuery()->getSingleResult();
 }
Пример #9
0
 /**
  * Verifica se o usuário tem acesso a uma determinada rota
  * @param \Core_Dto_Search $dtoSearch
  *
  * @return Array[Object]
  */
 public function searchPessoaUnidade(\Core_Dto_Search $objDtoSearch, $limit = 10)
 {
     $strNoPessoa = mb_strtolower($objDtoSearch->getQuery(), 'UTF-8');
     $objQBuilder = $this->_em->createQueryBuilder();
     $objField = $objQBuilder->expr()->lower($objQBuilder->expr()->trim('p.noPessoa'));
     $objQBuilder->select("p.noPessoa, p.sqPessoa, IDENTITY(up.sqUnidadeOrgPessoa) AS sqUnidadeOrgPessoa")->distinct('p.noPessoa')->distinct('p.sqPessoa')->from('app:VwUsuarioPerfil', 'up')->join("up.sqUsuario", 'u')->join("u.sqPessoa", "p")->where($objQBuilder->expr()->like("clear_accentuation({$objField})", $objQBuilder->expr()->literal($this->removeAccent('%' . $strNoPessoa . '%'))));
     if ($objDtoSearch->getSqUnidadeOrg() != '') {
         $objQBuilder->andWhere("up.sqUnidadeOrgPessoa = :sqUnidadeOrgPessoa")->setParameter("sqUnidadeOrgPessoa", $objDtoSearch->getSqUnidadeOrg());
     }
     $objQBuilder->setMaxResults($limit);
     return $objQBuilder->getQuery()->execute();
 }
Пример #10
0
 /**
  * Obtém as unidades Org Icmbio
  * @return array
  */
 public function unidadeOrgIcmbio(\Core_Dto_Search $dto)
 {
     $search = mb_strtolower($dto->getQuery(), 'UTF-8');
     $queryBuilder = $this->_em->createQueryBuilder();
     $field = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('uo.noUnidadeOrg'));
     $query = $queryBuilder->select('uo.sqUnidadeOrg', 'uo.noUnidadeOrg')->from('app:VwUnidadeOrg', 'uo')->innerJoin('uo.sqTipoUnidade', 'tu')->where($queryBuilder->expr()->eq('tu.inEstrutura', ':inEstrutura'))->setParameter(':inEstrutura', 'TRUE')->andWhere($queryBuilder->expr()->like('clear_accentuation(' . $field . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%'))));
     $res = $query->getQuery()->getArrayResult();
     $out = array();
     foreach ($res as $item) {
         $out[$item['sqUnidadeOrg']] = $item['noUnidadeOrg'];
     }
     return $out;
 }