function libCorpUnidadeOrgByUndDescenCategoria($noTipoUnidadeOrg) { try { $voTipoUnidade = TipoUnidadeOrgValueObject::factory()->setNoTipoUnidadeOrg($noTipoUnidadeOrg); $tmpResult = UnidadeOrgBusiness::factory(NULL, 'libcorp')->findUndDescentralizadaByCategoria($voTipoUnidade); $tmpTxt = '<result>'; foreach ($tmpResult as $result) { $tmpTxt .= $result->toXml(); } $tmpTxt .= '</result>'; return $tmpTxt; } catch (\Exception $excp) { throw new IOException($excp->getMessage()); } }
/** * Efetua a busca por UnidadeDescentralizada e por Categoria * Solicitacao via Ticket #459 * @param TipoUnidadeOrgValueObject $voTipoUnidade * @throws PersistException */ public function findUndDescentralizadaByCategoria(TipoUnidadeOrgValueObject $voTipoUnidade) { try { /* * SELECT [fields] * FROM tipo_unidade_org_hierarq vwTipo * JOIN unidade_org uniOrg ON (vwTipo.sq_tipo_unidade_org = uniOrg.sq_tipo_unidade) * INNER JOIN tipo_unidade_org tipoUnd ON (tipoUnd.sq_tipo_unidade_org = vwTipo.sq_tipo_unidade_org) * WHERE trilha_sigla ilike '%ud--%' AND tipoUnd.no_tipo_unidade_org ilike '%Esta%' */ # obtem a entidade com base na anotacao $eUnidadeOrg = $this->getEntity(array('unOrg' => $this->annotation()->load()->class)); # Busca pela View $eVwTipoUnidade = $this->getEntity(array('vwTipoUnidadeHierarq' => VwTipoUnidadeOrgHierarqValueObject::factory())); $eTipoUnidade = $this->getEntity(array('tipoUni' => TipoUnidadeOrgValueObject::factory())); $query = $this->getQuery($eVwTipoUnidade)->join($eUnidadeOrg, $eVwTipoUnidade->column('sqTipoUnidadeOrg')->equals($eUnidadeOrg->column('sqTipoUnidade')))->join($eTipoUnidade, $eUnidadeOrg->column('sqTipoUnidade')->equals($eTipoUnidade->column('sqTipoUnidadeOrg')))->where($eVwTipoUnidade->column('trilhaSigla')->ilike('%' . self::PAR_UNIDADE_DESCENTRALIZADA . '%'))->and($eTipoUnidade->column('noTipoUnidadeOrg')->ilike('%' . $voTipoUnidade->getNoTipoUnidadeOrg() . '%')); # executa query return $this->execute($query); } catch (IllegalArgumentException $iae) { throw new PersistException('Um ou mais paramentros informados para na montagem da query foi avaliado como inválido', 0, $iae); } catch (\Exception $exp) { throw new PersistException('Um erro inesperado ocorreu ao tentar executar a recuperação dos dados', 0, $exp); } }