public function editarAcao(Acao $acao) { try { $this->getDb()->beginTransaction(); $sql = 'UPDATE acao set modulo=:modulo,controle=:controle,metodo=:metodo,titulo_modulo=:titulo_modulo,titulo_metodo=:titulo_metodo,privado=:privado WHERE pk_acao=:pk_acao'; $prepare = $this->getDb()->prepare($sql); $prepare->bindParam(':pk_acao', $acao->get_pk_acao(), PDO::PARAM_INT); $prepare->bindParam(':modulo', $acao->get_modulo(), PDO::PARAM_STR, 50); $prepare->bindParam(':controle', $acao->get_controle(), PDO::PARAM_STR, 50); $prepare->bindParam(':metodo', $acao->get_metodo(), PDO::PARAM_STR, 50); $prepare->bindParam(':titulo_modulo', $acao->get_titulo_modulo(), PDO::PARAM_STR, 255); $prepare->bindParam(':titulo_metodo', $acao->get_titulo_metodo(), PDO::PARAM_STR, 255); $prepare->bindParam(':privado', $acao->get_privado(), PDO::PARAM_INT); $prepare->execute(); $idAcao = $prepare->fetch(); $sql = 'DELETE FROM acao_tipo_usuario_vin WHERE fk_acao=:fk_acao'; $prepare = $this->getDb()->prepare($sql); $prepare->bindParam(':fk_acao', $acao->get_pk_acao(), PDO::PARAM_INT); $prepare->execute(); if (is_array($acao->get_tipo_usuario())) { foreach ($acao->get_tipo_usuario() as $tipo) { $sql = 'insert into acao_tipo_usuario_vin(fk_acao,fk_tipo_usuario,visualizar,cadastrar,editar,excluir) values (:fk_acao,:fk_tipo_usuario,:visualizar,:cadastrar,:editar,:excluir)'; $prepare = $this->getDb()->prepare($sql); $tipoPermissao = $tipo->get_permissao(); $prepare->bindParam(':fk_acao', $acao->get_pk_acao(), PDO::PARAM_INT); $prepare->bindParam(':fk_tipo_usuario', $tipo->get_idTipoUsuario(), PDO::PARAM_INT); $prepare->bindParam(':visualizar', $tipoPermissao['visualizar'], PDO::PARAM_INT); $prepare->bindParam(':cadastrar', $tipoPermissao['cadastrar'], PDO::PARAM_INT); $prepare->bindParam(':editar', $tipoPermissao['editar'], PDO::PARAM_INT); $prepare->bindParam(':excluir', $tipoPermissao['excluir'], PDO::PARAM_INT); $prepare->execute(); } } $this->getDb()->commit(); } catch (Exception $e) { $this->getDb()->rollBack(); throw new Exception($e->getMessage()); } }