/**
  * 
  * Cria as configurações locais à partir da configuração padrão do CACIC
  * @param Cacic\CommonBundle\Entity\Local $local
  */
 public function configurarLocalFromConfigPadrao($local)
 {
     $em = $this->getEntityManager();
     $padrao = $em->getRepository('CacicCommonBundle:ConfiguracaoPadrao')->findAll();
     // Recupera todas as Configurações-Padrão
     foreach ($padrao as $confPadrao) {
         $confLocal = new ConfiguracaoLocal();
         $confLocal->setIdLocal($local);
         $confLocal->setIdConfiguracao($confPadrao);
         $confLocal->setVlConfiguracao($confPadrao->getVlConfiguracao());
         $em->persist($confLocal);
     }
     $em->flush();
 }
 public function load(ObjectManager $manager)
 {
     $em = $this->container->get('doctrine')->getManager();
     $configuracoesPadrao = $em->getRepository('CacicCommonBundle:ConfiguracaoPadrao')->findAll();
     $local = $this->getReference('local');
     // Recupera o Local criado via data-fixture
     foreach ($configuracoesPadrao as $conf) {
         $configuracaoLocal = new ConfiguracaoLocal();
         $configuracaoLocal->setIdConfiguracao($conf);
         $configuracaoLocal->setIdLocal($local);
         $configuracaoLocal->setVlConfiguracao($conf->getVlConfiguracao());
         $manager->persist($configuracaoLocal);
     }
     $manager->flush();
 }
 /**
  * 
  * [AJAX] Salva a configuração padrão parametrizada via POST
  */
 public function salvarconfiguracaoAction(Request $request)
 {
     if (!$request->isXmlHttpRequest()) {
         throw $this->createNotFoundException('Página não encontrada');
     }
     $idConfiguracao = $request->get('idConfiguracao');
     if (empty($idConfiguracao)) {
         $this->get('session')->getFlashBag()->add('error', 'Erro na alteração da configuração.');
         throw $this->createNotFoundException('Configuração não encontrada');
     }
     $vlConfiguracao = $request->get('vlConfiguracao');
     $nmConfiguracao = $request->get('nmConfiguracao');
     $idLocal = $request->get('idLocal');
     $em = $this->getDoctrine()->getManager();
     if (!empty($idLocal)) {
         // No caso de ter sido parametrizado um Local, trata-se de edição do local informado
         /**
          * @todo Checar se o usuário tem privilégios para alterar o local parametrizado
          */
         $configuracao_local = $em->getRepository('CacicCommonBundle:ConfiguracaoLocal')->findOneBy(array('idConfiguracao' => $idConfiguracao, 'idLocal' => $idLocal));
         if (empty($configuracao_local)) {
             if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
                 $this->get('session')->getFlashBag()->add('error', 'Erro na alteração da configuração.');
                 throw $this->createNotFoundException('Configuração não encontrada');
             } else {
                 $configuracao = $em->getRepository('CacicCommonBundle:ConfiguracaoPadrao')->find($idConfiguracao);
                 if (empty($configuracao)) {
                     $configuracao = new ConfiguracaoPadrao();
                     $configuracao->setIdConfiguracao($idConfiguracao);
                     $configuracao->setVlConfiguracao($vlConfiguracao);
                     if (empty($nmConfiguracao)) {
                         $configuracao->setNmConfiguracao($idConfiguracao);
                     } else {
                         $configuracao->setNmConfiguracao($nmConfiguracao);
                     }
                     $em->persist($configuracao);
                 }
                 $local = $em->getRepository("CacicCommonBundle:Local")->find($idLocal);
                 $configuracao_local = new ConfiguracaoLocal();
                 $configuracao_local->setIdConfiguracao($idConfiguracao);
                 $configuracao_local->setIdLocal($local);
             }
         }
         $configuracao_local->setVlConfiguracao($vlConfiguracao);
         $em->persist($configuracao_local);
     } else {
         // ... do contrário, altera a configuração padrão
         $configuracao = $em->getRepository('CacicCommonBundle:ConfiguracaoPadrao')->find($idConfiguracao);
         if (empty($configuracao)) {
             if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
                 $this->get('session')->getFlashBag()->add('error', 'Erro na alteração da configuração.');
                 throw $this->createNotFoundException('Configuração não encontrada');
             } else {
                 $configuracao = new ConfiguracaoPadrao();
                 $configuracao->setIdConfiguracao($idConfiguracao);
                 if (empty($nmConfiguracao)) {
                     $configuracao->setNmConfiguracao($idConfiguracao);
                 } else {
                     $configuracao->setNmConfiguracao($nmConfiguracao);
                 }
             }
         }
         $configuracao->setVlConfiguracao($request->get('vlConfiguracao'));
         $em->persist($configuracao);
         // E atualiza o padrão para todos os locais
         $locais_list = $em->getRepository('CacicCommonBundle:Local')->findAll();
         foreach ($locais_list as $local) {
             $configuracao_local = $em->getRepository('CacicCommonBundle:ConfiguracaoLocal')->findOneBy(array('idConfiguracao' => $request->get('idConfiguracao'), 'idLocal' => $local->getIdLocal()));
             if (empty($configuracao_local)) {
                 $configuracao_local = new ConfiguracaoLocal();
                 $configuracao_local->setIdLocal($local);
                 $configuracao_local->setIdConfiguracao($configuracao);
             }
             $configuracao_local->setVlConfiguracao($vlConfiguracao);
             $em->persist($configuracao_local);
         }
     }
     $em->flush();
     $this->get('session')->getFlashBag()->add('success', 'Configuração alterada com sucesso.');
     $response = new Response(json_encode(array('status' => 'ok')));
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }