/** * 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(); }
/** * @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(); } }
/** * 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; }
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; }
/** * * @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(); }
/** * 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(); }
/** * 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(); }
/** * 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; }