getMessage(); } } } else if ($acaoAux == REMOVE_OPCAO) { if (empty($modeloPost)) { $mensagems[] = "Para \"Remover\" uma \"opção\" � necess�rio selecionar um \"Modelo\"!"; } else if (empty($opcaoSelecionada)) { $mensagems[] = "Selecione uma \"opção\" para realizar esta operação!"; } else { $query = "delete from pbx_contextos_opcoes_tmp where id_modelo = coalesce((select id from pbx_contextos_modelos_tmp where modelo = '$modeloPost'), 0)"; $result = pg_query($dbcon, $query); } } else if ($acao == INSERT) { if ($gravar) { @pg_query($dbcon, "begin"); try { if (empty($nome)) throw new Exception("Informe um nome para o contexto!"); if (!ExisteTroncoAcao($dbcon)) throw new Exception("Informe pelo menos um \"Modelo\"/\"Tronco\" ou \"Acao\"!"); $query = "INSERT INTO pbx_contextos (nome,recorte,acrescenta,opcao,acao,inclui_padrao, direcao_chamada) VALUES ('$nome','$recorte','$acrescenta','$opcao','$acao_opcao','$inclui_padrao', '$direcao_chamada')"; $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(1)Não foi possível realizar a operação!"); $query = "select max(id) as id from pbx_contextos"; $result = pg_query($dbcon, $query); if (!$result) throw new Exception("(2)Não foi possível realizar a operação!"); $dados = @pg_fetch_array($result); $idContexto = $dados['id']; GravaComplemento($dbcon, $idContexto); @pg_query($dbcon, "commit"); $mensagems[] = "Registro inserido com sucesso!"; $acoesCliente[] = "fecha_popup(0,'index.php?idProg=10027&pbxRequest=1$param&acao=$acao');"; gera_arquivos($dbcon, "CONTEXTOS"); } catch (Exception $e) { @pg_query($dbcon, "rollback"); $mensagems[] = $e->getMessage(); } } } else if ($acao == EDITAR) { if ($gravar) { @pg_query($dbcon, "begin"); try { $query = "UPDATE pbx_contextos SET nome = '$nome', recorte = '$recorte', acrescenta = '$acrescenta', opcao = '$opcao', acao = '$acao_opcao', inclui_padrao = '$inclui_padrao', direcao_chamada = '$direcao_chamada' WHERE id = $idContexto "; if (!ExisteTroncoAcao($dbcon)) throw new Exception("Informe pelo menos um \"Tronco\" ou \"Acao\" para cada modelo!"); $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(1)Não foi possível realizar a operação!"); /* * Grava informacoes sobre modelos, canais e opcoes * selecionadas pelo usuario durante a operação. */ GravaComplemento($dbcon, $idContexto); @pg_query($dbcon, "commit"); gera_arquivos($dbcon, "CONTEXTOS"); $mensagems[] = "Registro alterado com sucesso!"; $acoesCliente[] = "fecha_popup(0,'index.php?idProg=10027&pbxRequest=1$param&acao=$acao');"; } catch (Exception $e) { @pg_query($dbcon, "rollback"); $mensagems[] = $e->getMessage(); } }//fim gravar else if (!$isPostBack) { $query = "select id, nome, recorte, acrescenta, inclui_padrao, direcao_chamada from pbx_contextos WHERE id = '$idContexto' "; $result = @pg_query($dbcon, $query); if (!$result || !@pg_num_rows($result)) { $mensagems[] = "Não foi possível selecionar o \"Contexto\"!"; $acoesCliente[] = "fecha_popup(0,'index.php?idProg=10027&pbxRequest=1$param&acao=$acao');"; } $row = @pg_fetch_array($result); $idContexto = $row["id"]; $nome = $row["nome"]; //$recorte = $row["recorte"]; //$acrescenta = $row["acrescenta"]; $inclui_padrao = ($row["inclui_padrao"] == 'S') ? 'S' : 'N'; $direcao_chamada = trim($row["direcao_chamada"]); $modeloPost = GetModeloInicio($dbcon); } } $recorte2 = ""; $acrescenta2 = ""; $modelosSelecionados = __GetModelosSelecionados($dbcon, $acao, $modeloPost); $troncosDisponiveis = __GetTroncosDisponiveis($dbcon, $modeloPost); $troncosSelecionados = __GetTroncosSelecionados($dbcon, $modeloPost); GetOpcao($dbcon, $modeloPost, $opcao_modelo, $acao_modelo); /* * Fun��es auxiliares */ function FormataModeloDisp($modelo) { if (strtoupper(trim($modelo)) == 'S') $modelo = 's'; else $modelo = strtoupper($modelo); return $modelo; } function __GetModelosSelecionados($dbcon, $acao, $modelo) { $modelosSel = ""; $nome = ""; $query = "select id, modelo, recorte, acrescenta, portabilidade from pbx_contextos_modelos_tmp"; $result = pg_query($dbcon, $query); while ($dados = pg_fetch_array($result)) { $nome = $dados['modelo']; if (strtoupper($nome) == strtoupper($modelo)) { $sel = "selected"; } else $sel = ""; $modelosSel .= "\n"; } return $modelosSel; } function __GetTroncosDisponiveis($dbcon, $modelo) { $troncos = ""; $nome = ""; $query = "select id, nome, tipo from pbx_troncos where nome not in(select canal from pbx_contextos_canais_tmp where id_modelo = (select id from pbx_contextos_modelos_tmp where modelo = '$modelo'))"; $result = pg_query($dbcon, $query); while ($dados = pg_fetch_array($result)) { $nome = $dados['nome']; $troncos .= "\n"; } $query = "select id, modelo, recorte, acrescenta, portabilidade from pbx_contextos_modelos_tmp where modelo = '$modelo'"; $result = pg_query($dbcon, $query); $dados = pg_fetch_array($result); $GLOBALS['recorte2'] = $dados['recorte']; $GLOBALS['acrescenta2'] = $dados['acrescenta']; $GLOBALS['portabilidade2'] = $dados['portabilidade']; return $troncos; } function __GetTroncosSelecionados($dbcon, $modelo) { $troncos = ""; $nome = ""; $id = "0"; $query = "select id, canal from pbx_contextos_canais_tmp where id_modelo = (select id from pbx_contextos_modelos_tmp where modelo = '$modelo')"; $result = pg_query($dbcon, $query); while ($dados = pg_fetch_array($result)) { $nome = $dados['canal']; $id = $dados['id']; $troncos .= "\n"; } return $troncos; } function GetOpcao($dbcon, $modelo, &$opcao, &$acao) { $query = "select opcao, acao from pbx_contextos_opcoes_tmp where id_modelo = (select id from pbx_contextos_modelos_tmp where modelo = '$modelo')"; $result = pg_query($dbcon, $query); while ($dados = pg_fetch_array($result)) { $opcao = $dados['opcao']; $acao = $dados['acao']; } } function DeletaRegTemporario($dbcon, &$modelo = "") { $idDel = 0; if (!empty($modelo)) { $query = "select id from pbx_contextos_modelos_tmp where modelo = '$modelo'"; $result = pg_query($dbcon, $query); $row = pg_fetch_row($result); $idDel = $row[0]; //seleciona o primeiro modelo da lista $modelo = GetModeloInicio($dbcon); } if (($acaoAux == REMOVE_MODELO) && (!$idDel)) return; $query = "delete from pbx_contextos_opcoes_tmp " . ($idDel ? " where id_modelo = $idDel " : ""); pg_query($dbcon, $query); $query = "delete from pbx_contextos_canais_tmp " . ($idDel ? " where id_modelo = $idDel " : ""); pg_query($dbcon, $query); $query = "delete from pbx_contextos_modelos_tmp " . ($idDel ? " where id = $idDel " : ""); pg_query($dbcon, $query); } function CopiaRegParaTemporario($dbcon, $idTmp) { $query = "insert into pbx_contextos_modelos_tmp(id, id_contexto, modelo, recorte, acrescenta, portabilidade) select id, id_contexto, modelo, recorte, acrescenta, portabilidade from pbx_contextos_modelos where id_contexto = '$idTmp'"; pg_query($dbcon, $query); $query = "insert into pbx_contextos_canais_tmp(id, id_contexto, canal, id_modelo) select id, id_contexto, canal, id_modelo from pbx_contextos_canais where id_contexto = '$idTmp' "; pg_query($dbcon, $query); $query = "insert into pbx_contextos_opcoes_tmp(id, id_contexto, opcao, acao, id_modelo) select id, id_contexto, opcao, acao, id_modelo from pbx_contextos_opcoes where id_contexto = '$idTmp' "; pg_query($dbcon, $query); } function ExisteModelo($dbcon, $modelo) { $query = "select count(*) from pbx_contextos_modelos_tmp where modelo = '$modelo'"; $result = pg_query($dbcon, $query); $row = pg_fetch_row($result); return $row[0] > 0; } function GetModeloInicio($dbcon) { //seleciona o primeiro modelo da lista $query = "select modelo from pbx_contextos_modelos_tmp order by id limit 1"; $result = pg_query($dbcon, $query); $row = pg_fetch_row($result); return $row[0]; } function ExisteTroncoAcao($dbcon) { $query = "select id from pbx_contextos_modelos_tmp"; $result = pg_query($dbcon, $query); if (!$result) return false; if (pg_num_rows($result) == 0) return false; while ($row = pg_fetch_row($result)) { $idModelo = $row[0]; $query = "select count(*) from pbx_contextos_canais_tmp where id_modelo = '$idModelo'"; $result1 = @pg_query($dbcon, $query); $rowCont = @pg_fetch_row($result1); $query = "select count(*) from pbx_contextos_opcoes_tmp where id_modelo = '$idModelo'"; $result1 = @pg_query($dbcon, $query); $rowCont1 = @pg_fetch_row($result1); if (!$rowCont[0] && !$rowCont1[0]) return false; } return true; } function GravaComplemento($dbcon, $idContexto) { $query = "delete from pbx_contextos_canais where id_contexto = '$idContexto'"; $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(3)Não foi possível realizar a operação!"); $query = "delete from pbx_contextos_modelos where id_contexto = '$idContexto'"; $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(4)Não foi possível realizar a operação!"); $query = "delete from pbx_contextos_canais where id_contexto = '$idContexto'"; $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(5)Não foi possível realizar a operação!"); $query = "delete from pbx_contextos_opcoes where id_contexto = '$idContexto'"; $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(6)Não foi possível realizar a operação!"); $query = "select id, modelo, recorte, acrescenta, portabilidade from pbx_contextos_modelos_tmp"; $result = @pg_query($dbcon, $query); if (!$result) throw new Exception("(7)Não foi possível realizar a operação!"); while ($row = @pg_fetch_array($result)) { $modelo = $row["modelo"]; $idModeloTmp = $row["id"]; $rec = $row["recorte"]; $acresc = $row["acrescenta"]; $porta = $row["portabilidade"]; $query = "insert into pbx_contextos_modelos(id_contexto, modelo, recorte, acrescenta, portabilidade) values('$idContexto', '$modelo', '$rec', '$acresc', '$porta')"; $resultTmp = @pg_query($dbcon, $query); if (!$resultTmp) throw new Exception("(8)Não foi possível realizar a operação!"); // Ultimo modelo inserido $query = "select max(id) from pbx_contextos_modelos"; $resultTmp = @pg_query($dbcon, $query); if (!$resultTmp) throw new Exception("(9)Não foi possível realizar a operação!"); $row = @pg_fetch_row($resultTmp); $idModeloAtual = $row[0]; //insere canais $query = "insert into pbx_contextos_canais (id_contexto, canal, id_modelo) select '$idContexto', canal, '$idModeloAtual' from pbx_contextos_canais_tmp where id_modelo = '$idModeloTmp'"; $resultTmp = @pg_query($dbcon, $query); if (!$resultTmp) throw new Exception("(10)Não foi possível realizar a operação!"); //insere opcoes $query = "insert into pbx_contextos_opcoes (id_contexto, opcao, acao, id_modelo) select '$idContexto', opcao, acao, '$idModeloAtual' from pbx_contextos_opcoes_tmp where id_modelo = '$idModeloTmp'"; $resultTmp = @pg_query($dbcon, $query); if (!$resultTmp) throw new Exception("(11)Não foi possível realizar a operação!"); } } ?>
CADASTRO DE CONTEXTOS
Nome: onchange="RemoveSpace(this.name)"/>
Inclui Padrão : Sim /> Não />
Tipo Chamada: Entrada /> Saída />
MODELOS DE DISCAGEM:
Recorte: Acrescenta: Portabilidade
Sim Não
Modelos Disponíveis
Recorte: Acrescenta: Portabilidade
Sim disabled="disabled"/> Não disabled="disabled"/>
Modelos Disponíveis
CANAIS DE SAÍDA:
Troncos Disponíveis
 
Troncos Selecionados




 
AÇÕES:
Ações Disponíveis
 
Açoes Selecionados




\n"; echo "alert('$disp');\n"; foreach ($acoesCliente as $acaoExe) { echo $acaoExe . "\n"; } echo "\n"; } ?>