/**
  * Adiciona as permissões de acesso do perfil
  */
 public function setPermissaoPerfilAction()
 {
     $iCodigoPerfil = $this->getRequest()->getParam('perfil');
     $aAcoes = $this->getRequest()->getParam('acao');
     $oPerfil = Administrativo_Model_Perfil::getById($iCodigoPerfil);
     $oPerfil->limparAcoes();
     $aPerfilAcao = array();
     foreach ($aAcoes as $id => $sAcao) {
         if ($sAcao === 'on') {
             $oAcao = Administrativo_Model_Acao::getById($id);
             $aPerfilAcao[] = $oAcao;
         }
     }
     if ($aPerfilAcao !== null) {
         $oPerfil->adicionaAcoes($aPerfilAcao);
         $iCodigoPerfil = $oPerfil->getId();
     }
     $this->_helper->getHelper('FlashMessenger')->addMessage(array('notice' => 'Permissões modificadas para o Perfil.'));
     $this->_redirector->gotoSimple('editar', 'perfil', 'administrativo', array('id' => $oPerfil->getId()));
 }
 /**
  * Configura as permissões do perfil administrativo
  */
 public function setPermissaoAdmAction()
 {
     $usuario = $this->getRequest()->getParam('usuario');
     $usuario = Administrativo_Model_Usuario::getById($usuario);
     $acoes = $this->getRequest()->getParam('acao');
     $usuario->limparAcoes();
     $usuario_acao = array();
     foreach ($acoes as $id => $a) {
         if ($a == 'on') {
             $acao = Administrativo_Model_Acao::getById($id);
             $usuario_acao[] = $acao;
         }
     }
     $usuario->adicionaAcoes($usuario_acao);
     $this->_helper->getHelper('FlashMessenger')->addMessage(array('success' => $this->translate->_('Permissões modificadas com sucesso.')));
     $this->_redirector->gotoSimple('editar', 'usuario', 'administrativo', array('id' => $usuario->getId()));
 }
 /**
  * Metodo para remover uma acao
  */
 public function removeAction()
 {
     $iIdAcao = $this->getRequest()->getParam('id');
     $oAcao = Administrativo_Model_Acao::getById($iIdAcao);
     $oAcao->destroy();
     $this->_helper->getHelper('FlashMessenger')->addMessage(array('notice' => 'Ação removida.'));
     $this->_redirector->gotoSimple('index', 'modulo');
 }
 /**
  * Vincula vetor de acao ao UsuarioContribuinte
  * @param Administrativo_Model_Acao[] $acoes
  *
  * @throws Exception
  */
 public function adicionaAcoes(array $aAcoesNovasEnvio)
 {
     if (count($aAcoesNovasEnvio) <= 0) {
         throw new Exception('Parametro de ações não informado corretamente.');
     }
     $aContribuintesAcoes = $this->getEntity()->getUsuarioContribuinteAcoes();
     $aAcoesAntigas = array();
     $aAcoesNovas = array();
     if (count($aContribuintesAcoes) > 0) {
         foreach ($aContribuintesAcoes as $oAcao) {
             $aAcoesAntigas[$oAcao->getAcao()->getId()] = $oAcao->getAcao()->getId();
         }
     }
     foreach ($aAcoesNovasEnvio as $oAcaoNova) {
         $aAcoesNovas[$oAcaoNova->getId()] = $oAcaoNova->getId();
     }
     if (count($aAcoesAntigas) > 0) {
         $aAcoesAdicionar = array_diff($aAcoesNovas, $aAcoesAntigas);
     } else {
         $aAcoesAdicionar = $aAcoesNovas;
     }
     foreach ($aAcoesAdicionar as $iAcao) {
         $oAcaoAdicionar = Administrativo_Model_Acao::getById($iAcao);
         $oUsuarioContribuinte = new Administrativo_Model_UsuarioContribuinteAcao();
         $oUsuarioContribuinte->setUsuarioContribuinte($this->entity);
         $oUsuarioContribuinte->setAcao($oAcaoAdicionar->getEntity());
         $this->em->persist($oUsuarioContribuinte->getEntity());
     }
     $this->em->flush();
 }