public function findDataInstitucional($codigo) { if (NULL === $codigo) { return array('sqPessoa' => NULL, 'noPessoa' => NULL, 'nuCpf' => NULL, 'nuDdd' => NULL, 'nuTelefone' => NULL, 'txEmail' => NULL); } $query = $this->_em->createQueryBuilder(); $tipoTelefoneInstituicional = \Core_Configuration::getCorpTipoTelefoneInstitucional(); $tipoEmailInstituicional = \Core_Configuration::getCorpTipoEmailInstitucional(); $query->select('p.sqPessoa', 'p.noPessoa', 'pf.nuCpf', 't.nuDdd, t.nuTelefone', 'e.txEmail')->from('app:PessoaFisica', 'pf')->innerJoin('pf.sqPessoa', 'p')->leftJoin('p.telefone', 't', 'WITH', $query->expr()->eq('t.sqTipoTelefone', ':tipoTelefone'))->leftJoin('p.email', 'e', 'WITH', $query->expr()->eq('e.sqTipoEmail', ':tipoEmail'))->where($query->expr()->eq('p.sqPessoa', ':sqPessoa'))->andWhere($query->expr()->eq('pf.sqPessoa', ':sqPessoa'))->setParameter('tipoTelefone', $tipoTelefoneInstituicional, 'integer')->setParameter('tipoEmail', $tipoEmailInstituicional, 'integer')->setParameter('sqPessoa', $codigo, 'integer'); $data = $query->getQuery()->execute(array(), \Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY); if (!$data) { return array('sqPessoa' => NULL, 'noPessoa' => NULL, 'nuCpf' => NULL, 'nuDdd' => NULL, 'nuTelefone' => NULL, 'txEmail' => NULL); } return $data[0]; }
/** * @param integer $sqSolicitacao */ public function getStatusPorTipo($sqSolicitacao, $sqTipoStatusSolicitacao) { $sql = "SELECT row_number() over() as rownum,\n s.sq_solicitacao,\n ss.sq_pessoa_triagem,\n ss.sq_pessoa_responsavel,\n ss.tx_comentario,\n to_char(ss.dt_operacao, 'DD/MM/YYYY') as dt_operacao,\n pt.no_pessoa as no_pessoa_triagem,\n pr.no_pessoa as no_pessoa_responsavel,\n ps.no_pessoa as no_pessoa_solicitacao,\n ss.sq_tipo_status_solicitacao,\n em.tx_email\n FROM sgdoce.solicitacao s\n JOIN sgdoce.status_solicitacao ss USING(sq_solicitacao)\n JOIN corporativo.vw_pessoa ps ON s.sq_pessoa = ps.sq_pessoa\n LEFT JOIN corporativo.vw_pessoa pt ON ss.sq_pessoa_triagem = pt.sq_pessoa\n LEFT JOIN corporativo.vw_pessoa pr ON ss.sq_pessoa_responsavel = pr.sq_pessoa\n LEFT JOIN corporativo.vw_email em\n ON em.sq_pessoa = s.sq_pessoa AND em.sq_tipo_email = " . \Core_Configuration::getCorpTipoEmailInstitucional() . "\n WHERE ss.sq_solicitacao = :sqSolicitacao AND ss.sq_tipo_status_solicitacao = :sqTipoStatusSolicitacao\n ORDER BY ss.dt_operacao DESC, rownum ASC"; $rsm = new \Doctrine\ORM\Query\ResultSetMapping(); $rsm->addScalarResult('rownum', 'rownum'); $rsm->addScalarResult('sq_solicitacao', 'sqSolicitacao'); $rsm->addScalarResult('sq_pessoa_triagem', 'sqPessoaTriagem'); $rsm->addScalarResult('sq_pessoa_responsavel', 'sqPessoaResponsavel'); $rsm->addScalarResult('tx_comentario', 'txComentario'); $rsm->addScalarResult('dt_operacao', 'dtOperacao'); $rsm->addScalarResult('no_pessoa_triagem', 'noPessoaTriagem'); $rsm->addScalarResult('no_pessoa_responsavel', 'noPessoaResponsavel'); $rsm->addScalarResult('no_pessoa_solicitacao', 'noPessoaSolicitacao'); $rsm->addScalarResult('tx_email', 'txEmail'); $query = $this->_em->createNativeQuery($sql, $rsm); $query->setParameter('sqSolicitacao', $sqSolicitacao)->setParameter('sqTipoStatusSolicitacao', $sqTipoStatusSolicitacao); return $query->getScalarResult(); }
/** * @return */ public function addSolicitacaoMigracao($dtoSearch) { $entArtefato = $this->_getRepository('app:Artefato')->find($dtoSearch->getSqArtefato()); if (!$entArtefato->isProcesso()) { $entSolicitacao = $this->_getRepository('app:SolicitacaoMigracaoImagem')->findRequest($dtoSearch); $entImagemArtefato = $this->_getRepository('app:VwUltimaImagemArtefato')->find($dtoSearch->getSqArtefato()); if (!$entImagemArtefato && !$entSolicitacao && $this->getServiceLocator()->getService("Artefato")->isMigracao($dtoSearch) && $this->getServiceLocator()->getService("Artefato")->isInconsistent($dtoSearch, true)) { $entSolicMigracaoImagem = $this->_newEntity('app:SolicitacaoMigracaoImagem'); $entArtefato = $this->getEntityManager()->getPartialReference('app:Artefato', $dtoSearch->getSqArtefato()); $entVwUnidOrg = $this->getEntityManager()->getPartialReference('app:VwUnidadeOrg', $dtoSearch->getSqUnidadeOrg()); $entVwPessoa = $this->getEntityManager()->getPartialReference('app:VwPessoa', $dtoSearch->getSqPessoa()); $objZendDate = new \Zend_Date(); $entEmail = $this->_getRepository('app:VwEmail')->findOneBy(array('sqPessoa' => $dtoSearch->getSqPessoa(), 'sqTipoEmail' => \Core_Configuration::getCorpTipoEmailInstitucional())); $entSolicMigracaoImagem->setSqArtefato($entArtefato); $entSolicMigracaoImagem->setSqPessoa($entVwPessoa); $entSolicMigracaoImagem->setSqUnidadeOrg($entVwUnidOrg); $entSolicMigracaoImagem->setDtSolicitacao($objZendDate); $entSolicMigracaoImagem->setStProcessado(0); $entSolicMigracaoImagem->setInTentativa(0); $entSolicMigracaoImagem->setTxEmail(trim($entEmail->getTxEmail())); $this->getEntityManager()->getUnitOfWork()->detach($entSolicMigracaoImagem); $this->getEntityManager()->persist($entSolicMigracaoImagem); $this->getEntityManager()->flush(); } } }
private function _getEmailCorporativo($sqPessoa) { $entEmail = $this->_getRepository('app:VwEmail')->findOneBy(array('sqPessoa' => $sqPessoa, 'sqTipoEmail' => \Core_Configuration::getCorpTipoEmailInstitucional())); if (!$entEmail) { return NULL; } return $entEmail->getTxEmail(); }
/** * tenta recuperar o email institucional caso nao encontra recupera o primeiro da lista * * @param \Sgdoce\Model\Entity\Solicitacao $entSolicitacao * @return \Sgdoce\Model\Entity\VwEmail */ private function _emailSolicitante(\Sgdoce\Model\Entity\Solicitacao $entSolicitacao) { $arrEmailSolicitante = $entSolicitacao->getSqPessoa()->getSqEmail(); if (count($arrEmailSolicitante) > 0) { $hasEmailInstitucional = false; //verifica se tem email institucional foreach ($arrEmailSolicitante as $key => $entVwEmail) { if ($entVwEmail->getSqTipoEmail()->getSqTipoEmail() == Core_Configuration::getCorpTipoEmailInstitucional()) { $hasEmailInstitucional = true; $entVwEmailSolicitante = $entVwEmail; break; } } //se não tem pega o primeiro email if (!$hasEmailInstitucional) { $entVwEmailSolicitante = $arrEmailSolicitante[0]; } } else { $entVwEmailSolicitante = new \Sgdoce\Model\Entity\VwEmail(); } return $this->view->entVwEmailSolicitante = $entVwEmailSolicitante; }
protected function _queryFull($query) { $tipoTelefoneInstituicional = \Core_Configuration::getCorpTipoTelefoneInstitucional(); $tipoEmailInstituicional = \Core_Configuration::getCorpTipoEmailInstitucional(); $query->add('select', 'pf.nuCpf, t.nuDdd, t.nuTelefone, e.txEmail' . ', s.txUrl, s.txDescricao, s.txUrlHelp, s.txEnderecoImagem, l.noLeiaute', TRUE); $query->innerJoin('s.sqLeiaute', 'l')->leftJoin('r.telefone', 't', 'WITH', $query->expr()->eq('t.sqTipoTelefone', ':tipoTelefone'))->leftJoin('r.email', 'e', 'WITH', $query->expr()->eq('e.sqTipoEmail', ':tipoEmail'))->setParameter('tipoTelefone', $tipoTelefoneInstituicional, 'integer')->setParameter('tipoEmail', $tipoEmailInstituicional, 'integer'); return $query; }
/** * @return */ public function listGrid(\Core_Dto_Search $dto) { $listCondition = array('getSqPessoaAbertura' => array("=" => array("AND" => 's.sq_pessoa')), 'getSqUnidadeOrgAbertura' => array("=" => array("AND" => 's.sq_unidade_org')), 'getSqTipoAssuntoSolicitacao' => array("=" => array("AND" => 'tas.sq_tipo_assunto_solicitacao')), 'getSqTipoStatusSolicitacao' => array("=" => array("AND" => 'uss.sq_tipo_status_solicitacao')), 'getSqTipoStatusSolicitacaoNot' => array("<>" => array("AND" => 'uss.sq_tipo_status_solicitacao')), 'getSqPessoaResponsavel' => array("=" => array("AND" => 'uss.sq_pessoa_responsavel')), 'getSqPessoaResponsavelIsNull' => array("IS" => array("AND" => 'uss.sq_pessoa_responsavel')), 'getSqPessoaResponsavelNot' => array("<>" => array("AND" => 'uss.sq_pessoa_responsavel')), 'getSearch' => array("ilike" => array('OR' => array('tas.no_tipo_assunto_solicitacao', 's.ds_solicitacao', 'pes_atendimento.no_pessoa', 'und_abertura.sg_unidade_org', 'pes_abertura.no_pessoa', 'at.nu_artefato', 'formata_numero_digital(at.nu_digital)', 'cast(s.sq_solicitacao as text)', 'tx_email')))); $operationTypeArtefato = 'IS NULL'; if (in_array($dto->getSqTipoArtefato(), array(1, 2))) { $operationTypeArtefato = '='; } $listCondition['getSqTipoArtefato'] = array($operationTypeArtefato => array("AND" => 'taa.sq_tipo_artefato')); if ($dto->getNuArtefato() != '' && $dto->getSqTipoArtefato()) { if ($dto->getSqTipoArtefato() == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $listCondition['getNuArtefato'] = array("ilike" => array("OR" => array("formata_numero_artefato(at.nu_artefato, ap.co_ambito_processo)", 'at.nu_artefato'))); } else { $listCondition['getNuArtefato'] = array("ilike" => array("AND" => "formata_numero_digital(at.nu_digital)")); } } $period = null; if ($dto->getDtSolicitacao() != "") { $period = "s.dt_solicitacao"; } $where = $this->getEntityManager()->getRepository('app:Artefato')->getCriteriaText($listCondition, $dto, $period); $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('sq_solicitacao', 'sqSolicitacao', 'integer'); $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer'); $rsm->addScalarResult('no_tipo_assunto_solicitacao', 'noTipoAssuntoSolicitacao', 'string'); $rsm->addScalarResult('ds_solicitacao', 'dsSolicitacao', 'string'); $rsm->addScalarResult('sq_pessoa_abertura', 'sqPessoaAbertura', 'integer'); $rsm->addScalarResult('no_pessoa_abertura', 'noPessoaAbertura', 'string'); $rsm->addScalarResult('sq_unidade_abertura', 'sqUnidadeAbertura', 'integer'); $rsm->addScalarResult('no_unidade_abertura', 'noUnidadeAbertura', 'string'); $rsm->addScalarResult('sq_tipo_status_solicitacao', 'sqTipoStatusSolicitacao', 'integer'); $rsm->addScalarResult('no_tipo_status_solicitacao', 'noTipoStatusSolicitacao', 'string'); $rsm->addScalarResult('sq_tipo_assunto_solicitacao', 'sqTipoAssuntoSolicitacao', 'integer'); $rsm->addScalarResult('sq_pessoa_responsavel', 'sqPessoaResponsavel', 'integer'); $rsm->addScalarResult('has_image', 'hasImage', 'boolean'); $rsm->addScalarResult('no_pessoa_atendimento', 'noPessoaAtendimento', 'string'); $rsm->addScalarResult('dt_operacao', 'dtOperacao', 'string'); $rsm->addScalarResult('dt_solicitacao', 'dtSolicitacao', 'string'); $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string'); $rsm->addScalarResult('nu_digital', 'nuDigital', 'string'); $rsm->addScalarResult('sq_tipo_artefato', 'sqTipoArtefato', 'string'); $rsm->addScalarResult('tx_email', 'txEmail', 'string'); $rsm->addScalarResult('total_record', 'totalRecord', 'integer'); $sql = "SELECT COUNT(s.sq_solicitacao) OVER() AS total_record,\n s.sq_solicitacao,\n s.sq_artefato,\n tas.no_tipo_assunto_solicitacao,\n s.ds_solicitacao,\n s.sq_pessoa as sq_pessoa_abertura,\n s.dt_solicitacao,\n pes_abertura.no_pessoa || (COALESCE('<br>(' || tel.nu_ddd || ') ' || tel.nu_telefone, '')) as no_pessoa_abertura,\n s.sq_unidade_org as sq_unidade_abertura,\n und_abertura.sg_unidade_org as no_unidade_abertura,\n uss.sq_tipo_status_solicitacao,\n uss.no_tipo_status_solicitacao,\n tas.sq_tipo_assunto_solicitacao,\n uss.sq_pessoa_responsavel,\n pes_atendimento.no_pessoa as no_pessoa_atendimento,\n uss.dt_operacao,\n CASE\n WHEN at.nu_digital IS NOT NULL THEN\n sgdoce.formata_numero_digital(at.nu_digital)\n ELSE\n sgdoce.formata_numero_artefato(at.nu_artefato, ap.co_ambito_processo)\n END AS nu_artefato,\n sgdoce.formata_numero_digital(at.nu_digital) as nu_digital,\n taa.sq_tipo_artefato,\n EXISTS\n (\n SELECT\n uia.sq_artefato\n FROM\n sgdoce.vw_ultima_imagem_artefato uia\n WHERE\n uia.sq_artefato = at.sq_artefato AND\n taa.sq_tipo_artefato = " . \Core_Configuration::getSgdoceTipoArtefatoDocumento() . "\n UNION\n SELECT\n artv.sq_artefato_filho\n FROM\n sgdoce.artefato_vinculo artv\n JOIN sgdoce.artefato_imagem uia ON uia.st_ativo and artv.sq_artefato_filho = uia.sq_artefato\n AND artv.sq_tipo_vinculo_artefato = " . \Core_Configuration::getSgdoceTipoVinculoArtefatoAutuacao() . "\n WHERE\n artv.sq_artefato_pai = at.sq_artefato AND\n taa.sq_tipo_artefato = " . \Core_Configuration::getSgdoceTipoArtefatoProcesso() . "\n ) has_image,\n em.tx_email\n FROM sgdoce.solicitacao s\n JOIN sgdoce.tipo_assunto_solicitacao AS tas USING(sq_tipo_assunto_solicitacao)\n LEFT JOIN\n (\n sgdoce.artefato AS at\n INNER JOIN sgdoce.tipo_artefato_assunto AS taa\n ON at.sq_tipo_artefato_assunto = taa.sq_tipo_artefato_assunto\n ) ON s.sq_artefato = at.sq_artefato\n LEFT JOIN sgdoce.artefato_processo AS ap ON at.sq_artefato = ap.sq_artefato\n JOIN corporativo.vw_pessoa AS pes_abertura ON s.sq_pessoa = pes_abertura.sq_pessoa\n LEFT JOIN corporativo.vw_telefone AS tel ON (tel.sq_pessoa = pes_abertura.sq_pessoa AND tel.sq_tipo_telefone = " . \Core_Configuration::getCorpTipoTelefoneInstitucional() . ")\n JOIN corporativo.vw_unidade_org AS und_abertura ON s.sq_unidade_org = und_abertura.sq_pessoa\n JOIN sgdoce.vw_ultimo_status_solicitacao AS uss ON s.sq_solicitacao = uss.sq_solicitacao\n LEFT JOIN corporativo.vw_pessoa AS pes_atendimento ON uss.sq_pessoa_responsavel = pes_atendimento.sq_pessoa\n LEFT JOIN corporativo.vw_email AS em ON em.sq_pessoa = s.sq_pessoa AND em.sq_tipo_email = " . \Core_Configuration::getCorpTipoEmailInstitucional() . "\n %s\n ORDER BY s.dt_solicitacao DESC"; if ($where != "") { $sql = sprintf($sql, "WHERE {$where}"); } else { $sql = sprintf($sql, ""); } return $this->_em->createNativeQuery($sql, $rsm)->useResultCache(false); }
/** * Salva dados de endereço, telefone e email vindos do infoconv quando for cadastro de nova PJ * * @param integer $sqPessoa * @param \Core_Dto_Mapping $dto * @return \Principal\Service\PessoaJuridica */ private function _processAddressPhoneEmail($sqPessoa, \Core_Dto_Mapping $dto) { $infoconvAddress = $dto->getAddress_infoconv(); $infoconvPhone = $dto->getPhone_infoconv(); $infoconvEmail = $dto->getEmail_infoconv(); if ($infoconvAddress) { $infoconvAddress = json_decode(str_replace('\\', '', $infoconvAddress)); $addressMethod = 'libCorpSaveEndereco'; $addressRepository = 'app:Endereco'; $addressFilters = array('sqCep' => 'Digits'); $arrAddressValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoEndereco', 'value' => \Core_Configuration::getCorpTipoEnderecoInstitucional())); $fnCropString = function ($str, $length) { if (mb_strlen($str, 'UTF-8') > $length) { $str = mb_substr($str, 0, $length, 'UTF-8'); } return $str; }; foreach ($infoconvAddress as $key => $value) { switch ($key) { case 'sqEstado': //infoconv retorno a sigla do estado if (!is_numeric($value)) { $arrEntEstado = $this->_getRepository('app:Estado')->findBySgEstado(trim($value)); if ($arrEntEstado) { $value = current($arrEntEstado)->getSqEstado(); } } break; case 'txComplemento': case 'noBairro': $value = $fnCropString($value, 100); break; case 'txEndereco': $value = $fnCropString($value, 200); break; case 'nuEndereco': $value = $fnCropString($value, 6); break; default: break; } $arrAddressValues[] = array('name' => $key, 'value' => $value); } //endforeach; //salva os dados do endereco $resultAddress = $this->saveFormWebService($addressRepository, $addressMethod, $arrAddressValues, $addressFilters); } if ($infoconvPhone) { $infoconvPhone = json_decode(str_replace('\\', '', $infoconvPhone)); $phoneMethod = 'libCorpSaveTelefone'; $phoneRepository = 'app:Telefone'; $phoneFilters = array('nuDdd' => 'Digits', 'nuTelefone' => 'Digits'); $arrPhoneValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoTelefone', 'value' => \Core_Configuration::getCorpTipoTelefoneInstitucional())); foreach ($infoconvPhone as $key => $value) { $arrPhoneValues[] = array('name' => $key, 'value' => $value); } //endforeach; //salva os dados do telefone $resultPhone = $this->saveFormWebService($phoneRepository, $phoneMethod, $arrPhoneValues, $phoneFilters); } if ($infoconvEmail) { $infoconvEmail = json_decode(str_replace('\\', '', $infoconvEmail)); $emailMethod = 'libCorpSaveEmail'; $emailRepository = 'app:Email'; $arrEmailValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoEmail', 'value' => \Core_Configuration::getCorpTipoEmailInstitucional())); $arrEmailValues[] = array('name' => 'txEmail', 'value' => $infoconvEmail); //salva os dados do email $resultEmail = $this->saveFormWebService($emailRepository, $emailMethod, $arrEmailValues); } return $this; }
public function getDataMail(\Core_Dto_Mapping $mapping, $perfis) { $tipoEmailInstituicional = \Core_Configuration::getCorpTipoEmailInstitucional(); $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('p.noPessoa, e.txEmail')->from($this->_entityName, 'u')->innerJoin('u.sqPessoa', 'p')->innerJoin('p.email', 'e', 'WITH', $queryBuilder->expr()->eq('e.sqTipoEmail', ':tipoEmail'))->where($queryBuilder->expr()->eq('u.sqUsuario', ':usuario'))->setParameter('usuario', $mapping->getUsuario())->setParameter('tipoEmail', $tipoEmailInstituicional, 'integer'); $data['usuario'] = $queryBuilder->getQuery()->getSingleResult(); $queryBuilder = $this->_em->createQueryBuilder(); $arrPerfil = array(); foreach ($perfis as $value) { $arrPerfil[] = $value->getSqPerfil(); } $queryBuilder->select('p.noPerfil, s.sgSistema, s.noSistema')->from('app:UsuarioPerfil', 'up')->innerJoin('up.sqPerfil', 'p')->innerJoin('p.sqSistema', 's')->innerJoin('up.sqUnidadeOrgPessoa', 'u')->where($queryBuilder->expr()->eq('up.sqUsuario', ':usuario'))->setParameter('usuario', $mapping->getUsuario())->andWhere('u.sqUnidadeOrgPessoa = :sqUnidadeOrgPessoa')->setParameter('sqUnidadeOrgPessoa', $mapping->getUnidade())->andWhere($queryBuilder->expr()->in('p.sqPerfil', $arrPerfil)); $data['perfis'] = $queryBuilder->getQuery()->getArrayResult(); return $data; }