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, org_id) VALUES ('$nome','$recorte','$acrescenta','$opcao','$acao_opcao','$inclui_padrao', '$direcao_chamada', $org_id)"; $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 WHERE org_id = {$org_id};"; $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(); } } 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"]; $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); function FormataModeloDisp($modelo) { if (strtoupper(trim($modelo)) == 'S') { $modelo = 's'; } else { $modelo = strtoupper($modelo); } return $modelo; } function __GetModelosSelecionados($dbcon, $modelo) { $modelosSel = ""; $nome = ""; $org_id = GetOrganizacao(); $query = "SELECT id, modelo, recorte, acrescenta, portabilidade FROM pbx_contextos_modelos_tmp WHERE org_id = {$org_id}"; $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 = ""; $org_id = GetOrganizacao(); $query = "SELECT id, nome, tipo FROM pbx_troncos WHERE org_id = {$org_id} AND 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' AND org_id = {$org_id}"; $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]; $modelo = GetModeloInicio($dbcon); } if (!$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, org_id) 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, org_id) 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, org_id) 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!"); } $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"; } ?>