public function canEditArtefact(\Core_Dto_Search $dto, $isProcesso = FALSE) { $repoUTA = $this->_getRepository('app:VwUltimoTramiteArtefato'); $isChild = $this->_getRepository('app:ArtefatoVinculo')->isChild($dto); $isAllowedAlter = in_array(\Core_Integration_Sica_User::getUserProfile(), $this->getUsersAllowedAlterArtefact()); $listTipoAssuntoSolicitacao = array(\Core_Configuration::getSgdoceTipoAssuntoSolicitacaoAlterarCadastro()); $dtoSolicitacao = \Core_Dto::factoryFromData(array('sqArtefato' => $dto->getSqArtefato()), 'search'); $hasDemandaAlteracaoDados = $this->getServiceLocator()->getService('Solicitacao')->hasDemandaAbertaByAssuntoPessoaResponsavel($dtoSolicitacao, $listTipoAssuntoSolicitacao); // Se processo, verifica se existe vinculo além do tipo de autuação $hasProcessoVinculo = false; if ($isProcesso) { $rsVinculosProcesso = $this->_getRepository('app:ArtefatoVinculo')->findByNot(array('sqArtefatoPai' => $dto->getSqArtefato()), array('sqTipoVinculoArtefato' => \Core_Configuration::getSgdoceTipoVinculoArtefatoAutuacao())); $hasProcessoVinculo = count($rsVinculosProcesso); } //se $areaTrabalho, logo, esta na area da pessoa logada //caso contrario retorna NULL $areaTrabalho = $this->_getRepository()->findArtefato($dto); //SGI pode alterar o documento se houver demanda de suporte do tipo alterar dados ou alterar grau ou se estiver na minha da area de trabalho dele. if ($isAllowedAlter && $hasDemandaAlteracaoDados || $isAllowedAlter && $areaTrabalho) { return TRUE; } if ($areaTrabalho && $repoUTA->isFirstTramite($dto) && (!$areaTrabalho->getHasVinculo() || !$hasProcessoVinculo) && !$areaTrabalho->getArquivado() && !$areaTrabalho->getHasSolicitacaoAberta() && !$isChild) { return TRUE; } return FALSE; }
/** * 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(); }
public function getTipoAssuntoSolcOnlyConsistent() { return array(\Core_Configuration::getSgdoceTipoAssuntoSolicitacaoAlterarCadastro(), \Core_Configuration::getSgdoceTipoAssuntoSolicitacaoVolumeDeProcesso()); }