nmRede (teIpRede)) * @param int $acao * @return array */ public function getArrayChaveValorRedesPorAcao( $acao ) { // Monta a Consulta básica... $query = $this->createQueryBuilder('ar')->select('r.idRede', 'r.nmRede', 'r.teIpRede') ->innerJoin('ar.acao', 'a') ->innerJoin('ar.rede', 'r') ->where("a.idAcao IN (:idAcao)") ->setParameter('idAcao', array($acao)) ->orderBy('r.nmRede') ->groupBy('r'); $tmp = $query->getQuery()->execute(); $return = array(); foreach( $tmp as $rede ) { $return[$rede['idRede']] = "{$rede['nmRede']} ({$rede['teIpRede']})"; } return $return; } /** * * Atualiza as Redes (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 */ public function atualizarPorLocal( $acao, $local, $novasRedes ) { $em = $this->getEntityManager(); $redesLocal = $em->getRepository( 'CacicCommonBundle:Rede' )->getArrayChaveValorPorLocal( $local ); foreach ( $redesLocal as $idRede => $nmRede ) { $obj = $this->find( array( 'acao'=>$acao, 'rede'=>$idRede ) ); if ( $obj ) $em->remove( $obj ); } $em->flush(); foreach ( $novasRedes as $rede ) { $new = new AcaoRede(); $new->setAcao( $em->getRepository( 'CacicCommonBundle:Acao' )->find( $acao ) ); $new->setRede( $em->getRepository( 'CacicCommonBundle:Rede' )->find( $rede ) ); $em->persist( $new ); } $em->flush(); } /** * Habilita todas as ações para a Rede fornecida ou conjunto de redes fornecidas * * @param array $redes * */ public function atualizarPorRede ( $redes ) { $em = $this->getEntityManager(); $acoes = $em->getRepository( 'CacicCommonBundle:Acao' )->findAll(); foreach ($redes as $novaRede) { // Para cada rede, habilita as ações foreach ($acoes as $novaAcao){ // com excessão do módulo patrimonio, que inicialmente é desabilitado if ($novaAcao->getIdAcao() != "col_patr"){ $new = $this->find( array( 'acao' => $novaAcao->getIdAcao(), 'rede' => $novaRede->getIdRede() )); // Se não existir, cria a ação para a rede if ( empty($new) ) { $new = new AcaoRede(); } // Agora cria a ação $new->setAcao($novaAcao); $new->setRede($novaRede); $em->persist($new); // Grava as mudanças $em->flush(); } } } } }