nmRede (teIpRede)) * @param int $acao * @param int $rede * @return array */ public function getArrayChaveValorSoPorAcao( $acao, $rede = null ) { // Monta a Consulta básica... $query = $this->createQueryBuilder('aso')->select('so.idSo', 'so.teDescSo', 'so.sgSo', 'so.teSo') ->innerJoin('aso.so', 'so') ->innerJoin('aso.acao', 'a') ->where("a.idAcao = :idAcao") ->setParameter('idAcao', $acao) ->orderBy('so.teDescSo') ->groupBy('so'); if ( $rede !== null ) { // Se o filtro por rede for informado $query->innerJoin('aso.rede', 'r') ->andWhere('r.idRede = :idRede') ->setParameter('idRede', $rede); } $tmp = $query->getQuery()->execute(); $return = array(); foreach( $tmp as $so ) { $return[$so['idSo']] = "{$so['teDescSo']} ({$so['sgSo']} - {$so['teSo']})"; } return $return; } /** * * Atualiza os SOs (do local informado) associadas a determinada Ação * @param int|Cacic\CommonBundle\Entity\Acao $acao * @param int|Cacic\CommonBundle\Entity\Local $local * @param array $novasRedes * @param array $novosSO */ public function atualizarPorLocal( $acao, $local, $novasRedes, $novosSO ) { $em = $this->getEntityManager(); $apagaObj = $em->getRepository( 'CacicCommonBundle:AcaoSo' )->findAll(); foreach ( $apagaObj as $acaoObj){ if (!empty($acaoObj)) $em->remove($acaoObj); } $em->flush(); foreach( $novasRedes as $rede ) { foreach ( $novosSO as $so ) { $new = new AcaoSo(); $new->setAcao( $em->getRepository( 'CacicCommonBundle:Acao' )->find( $acao ) ); $new->setRede( $em->getRepository( 'CacicCommonBundle:Rede' )->find( $rede ) ); $new->setSo( $em->getRepository( 'CacicCommonBundle:So' )->find( $so ) ); $em->persist( $new ); } } $em->flush(); } }