|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
|
|
<html> |
|
|
|
|
|
<head> |
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
|
|
<link rel="stylesheet" href="admin/css/validationEngine.jquery.css" type="text/css" media="screen" title="no title" charset="ISO-8859-1" /> |
|
|
<script type="text/javascript" src="admin/js/jquery-1.4.js"></script> |
|
|
<script type="text/javascript" src="admin/js/jquery.blockUI.js?v2.29"></script> |
|
|
<script src="admin/js/jquery.min.js" type="text/javascript"></script> |
|
|
<script src="admin/js/jquery.validationEngine.js" type="text/javascript"></script> |
|
|
<script src="admin/js/jquery.validationEngine-en.js" type="text/javascript"></script> |
|
|
<script src="admin/js/pbxAjax.js" type="text/javascript"></script> |
|
|
|
|
|
<?php |
|
|
include_once("admin/opcoes.php"); |
|
|
|
|
|
$org_id = GetOrganizacao(); |
|
|
$acao2 = $_GET["acao2"]; |
|
|
$param = sprintf('&numRamal=%s&pgn=%s&bloco=%s&pg=%s', $_REQUEST['numRamal'], $_REQUEST['pgn'], $_REQUEST['bloco'], $_REQUEST['pg']); |
|
|
|
|
|
define("INSERT", "inseri"); |
|
|
define("EDITAR", "edita"); |
|
|
define("INSERE_MODELO", "insereModelo"); |
|
|
define("REMOVE_MODELO", "removeModelo"); |
|
|
define("INSERE_CANAL", "insereCanal"); |
|
|
define("REMOVE_CANAL", "removeCanal"); |
|
|
define("INSERE_OPCAO", "insereOpcao"); |
|
|
define("REMOVE_OPCAO", "RemoveOpcao"); |
|
|
|
|
|
$acao = isset($_GET["acao"]) ? $_GET["acao"] : $_POST["acao"]; |
|
|
$gravar = isset($_POST["bt_salvar"]) ? 1 : 0; |
|
|
$isPostBack = isset($_POST["acao"]); |
|
|
$acaoAux = ""; |
|
|
$mensagems = array(); |
|
|
$acoesCliente[] = array(); |
|
|
|
|
|
if (isset($_POST["btInsereModelo"]) || (isset($_POST["modelo_disp"]) && !empty($_POST["modelo_disp"]) && !$gravar)) { |
|
|
$acaoAux = INSERE_MODELO; |
|
|
} else if (isset($_POST["btRemoveModelo"])) { |
|
|
$acaoAux = REMOVE_MODELO; |
|
|
} else if (isset($_POST["btInsereCanais"])) { |
|
|
$acaoAux = INSERE_CANAL; |
|
|
} else if (isset($_POST["btRemoveCanais"])) { |
|
|
$acaoAux = REMOVE_CANAL; |
|
|
} else if (isset($_POST["btInsereOpcao"])) { |
|
|
$acaoAux = INSERE_OPCAO; |
|
|
} else if (isset($_POST["btRemoveOpcao"])) { |
|
|
$acaoAux = REMOVE_OPCAO; |
|
|
} |
|
|
|
|
|
$idContexto = isset($_GET["id"]) ? $_GET["id"] : $_POST["id"]; |
|
|
|
|
|
$nome = RemoveEspaco(RemoveAcentos($_POST["nome"], true)); |
|
|
$recorte = isset($_POST["recorte"]) ? trim($_POST["recorte"]) : ""; |
|
|
$acrescenta = isset($_POST["acrescenta"]) ? trim($_POST["acrescenta"]) : ""; |
|
|
$opcao = trim($_POST["opcao"]); |
|
|
$acao_opcao = trim($_POST["acao_opcao"]) == "S" ? "s" : trim($_POST["acao_opcao"]); |
|
|
$inclui_padrao = trim($_POST["inclui_padrao"]); |
|
|
$direcao_chamada = trim($_POST["direcao_chamada"]); |
|
|
$modeloPost = !empty($_POST["numeros"]) ? trim(FormataModeloDisp($_POST["numeros"])) : trim(FormataModeloDisp($_POST["modelo_disp"])); |
|
|
$modeloPost = empty($modeloPost) ? $_POST["relacao"] : $modeloPost; |
|
|
$troncoDisponivel = $_POST["disponiveis"]; |
|
|
$troncoSelecionado = $_POST["ramais"]; |
|
|
$opcaoSelecionada = $_POST["opcao_modelo"]; |
|
|
$portabilidade = isset($_POST["portabilidade"]) ? trim($_POST["portabilidade"]) : ""; |
|
|
|
|
|
/* |
|
|
* Apaga registros gravados temporariamente |
|
|
* durante a opracao do usuario para escolher |
|
|
* modelos, canais e opcoes |
|
|
*/ |
|
|
if (!$isPostBack) { |
|
|
DeletaRegTemporario($dbcon); |
|
|
} |
|
|
|
|
|
/* |
|
|
* Alimenta as tebelas temporarias com informa<EFBFBD><EFBFBD>es |
|
|
* armazenadas para o contexto corrente. Os dados |
|
|
* s<EFBFBD>o utilizados para auxiliar o usuario na composi<EFBFBD><EFBFBD>o |
|
|
* do contexto |
|
|
*/ |
|
|
if ((!$isPostBack) && ($acao == EDITAR)) { |
|
|
CopiaRegParaTemporario($dbcon, $idContexto); |
|
|
} |
|
|
|
|
|
if ($acaoAux == INSERE_MODELO) { |
|
|
//Modelo setado na pagina |
|
|
if (!empty($modeloPost)) { |
|
|
if (ExisteModelo($dbcon, $modeloPost)) { |
|
|
$mensagems[] = "Modelo j<EFBFBD> Cadastrado!"; |
|
|
} else { |
|
|
$query = "INSERT INTO pbx_contextos_modelos_tmp(modelo, id_contexto, recorte, acrescenta, portabilidade, org_id) |
|
|
values('$modeloPost', 0, '$recorte', '$acrescenta', '$portabilidade', $org_id)"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
$recorte = ""; |
|
|
$acrescenta = ""; |
|
|
} |
|
|
} else { |
|
|
$mensagems[] = "Digite um modelo para realizar esta opera<EFBFBD><EFBFBD>o!"; |
|
|
} |
|
|
} else if ($acaoAux == REMOVE_MODELO) { |
|
|
//Modelo setado na pagina |
|
|
if (!empty($modeloPost)) { |
|
|
DeletaRegTemporario($dbcon, $modeloPost); |
|
|
} |
|
|
} else if ($acaoAux == INSERE_CANAL) { |
|
|
if (empty($modeloPost)) { |
|
|
$mensagems[] = "Para \"Inserir\" um novo tronco e necess<EFBFBD>rio selecionar um \"Modelo\"!"; |
|
|
} else if (empty($troncoDisponivel)) { |
|
|
$mensagems[] = "Selecione um \"Tronco\" para realizar esta opera<EFBFBD><EFBFBD>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); |
|
|
|
|
|
//insere canais |
|
|
$query = "INSERT INTO pbx_contextos_canais_tmp (id_contexto, canal, id_modelo, org_id) |
|
|
values('0', '$troncoDisponivel',coalesce((select id from pbx_contextos_modelos_tmp WHERE modelo = '$modeloPost'),0), $org_id)"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
|
|
|
$opcao = ""; |
|
|
$acao_opcao = ""; |
|
|
} |
|
|
} else if ($acaoAux == REMOVE_CANAL) { |
|
|
if (empty($modeloPost)) { |
|
|
$mensagems[] = "Para \"Remover\" um tronco <EFBFBD> necess<EFBFBD>rio selecionar um \"Modelo\"!"; |
|
|
} else if (empty($troncoSelecionado)) { |
|
|
$mensagems[] = "Selecione um \"Tronco\" para realizar esta opera<EFBFBD><EFBFBD>o!"; |
|
|
} else { |
|
|
$query = "DELETE FROM pbx_contextos_canais_tmp WHERE id = '$troncoSelecionado' and id_modelo = coalesce((select id from pbx_contextos_modelos_tmp WHERE modelo = '$modeloPost'), 0)"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
} |
|
|
} else if ($acaoAux == INSERE_OPCAO) { |
|
|
if (empty($modeloPost)) { |
|
|
$mensagems[] = "Para \"Inserir\" uma op<EFBFBD><EFBFBD>o <EFBFBD> necess<EFBFBD>io selecionar um \"Modelo\"!"; |
|
|
} else if (empty($opcao)) { |
|
|
$mensagems[] = "Selecione uma \"op<EFBFBD><EFBFBD>o\" para realizar esta opera<EFBFBD><EFBFBD>o!"; |
|
|
} else { |
|
|
$result = pg_query($dbcon, "begin"); |
|
|
try { |
|
|
$query = "DELETE FROM pbx_contextos_canais_tmp WHERE id_modelo = coalesce((select id from pbx_contextos_modelos_tmp WHERE modelo = '$modeloPost'), 0)"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
if (!$result) { |
|
|
throw new Exception("N<EFBFBD>o foi poss<EFBFBD>vel deletar os \"Troncos\" existentes!"); |
|
|
} |
|
|
|
|
|
$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); |
|
|
if (!$result) { |
|
|
throw new Exception("N<EFBFBD>o foi poss<EFBFBD>vel deletar a \"A<EFBFBD><EFBFBD>o\" existente!"); |
|
|
} |
|
|
|
|
|
//insere opcoes |
|
|
$query = "INSERT INTO pbx_contextos_opcoes_tmp (id_contexto, opcao, acao, id_modelo, org_id) |
|
|
VALUES('0', '$opcao', '$acao_opcao' ,coalesce((SELECT id FROM pbx_contextos_modelos_tmp WHERE modelo = '$modeloPost'),0), $org_id)"; |
|
|
|
|
|
$result = pg_query($dbcon, $query); |
|
|
if (!$result) { |
|
|
throw new Exception("N<EFBFBD>o foi poss<EFBFBD>vel inserir uma nova \"op<EFBFBD><EFBFBD>o\"!"); |
|
|
} |
|
|
pg_query($dbcon, "commit"); |
|
|
$opcao = ''; |
|
|
$acao_opcao = ''; |
|
|
} catch (Exception $e) { |
|
|
$result = pg_query($dbcon, "rollback"); |
|
|
$mensagems[] = $e->getMessage(); |
|
|
} |
|
|
} |
|
|
} else if ($acaoAux == REMOVE_OPCAO) { |
|
|
if (empty($modeloPost)) { |
|
|
$mensagems[] = "Para \"Remover\" uma \"op<EFBFBD><EFBFBD>o\" <EFBFBD> necess<EFBFBD>rio selecionar um \"Modelo\"!"; |
|
|
} else if (empty($opcaoSelecionada)) { |
|
|
$mensagems[] = "Selecione uma \"op<EFBFBD><EFBFBD>o\" para realizar esta opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
/* |
|
|
* Grava informacoes sobre modelos, canais e opcoes |
|
|
* selecionadas pelo usuario durante a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>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 .= "<option value=\"$nome\" $sel>$nome</option>\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 .= "<option value=\"$nome\">$nome</option>\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 .= "<option value=\"$id\" >$nome</option>\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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
|
|
|
$query = "DELETE FROM pbx_contextos_modelos WHERE id_contexto = '$idContexto'"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
if (!$result) { |
|
|
throw new Exception("(4)N<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
|
|
|
$query = "DELETE FROM pbx_contextos_canais WHERE id_contexto = '$idContexto'"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
if (!$result) |
|
|
throw new Exception("(5)N<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>o!"); |
|
|
|
|
|
$query = "DELETE FROM pbx_contextos_opcoes WHERE id_contexto = '$idContexto'"; |
|
|
$result = pg_query($dbcon, $query); |
|
|
if (!$result) { |
|
|
throw new Exception("(6)N<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
|
|
|
// Ultimo modelo inserido |
|
|
$query = "SELECT max(id) FROM pbx_contextos_modelos"; |
|
|
$resultTmp = pg_query($dbcon, $query); |
|
|
if (!$resultTmp) { |
|
|
throw new Exception("(9)N<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>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<EFBFBD>o foi poss<EFBFBD>vel realizar a opera<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
} |
|
|
} |
|
|
?> |
|
|
|
|
|
<script> |
|
|
var verificaForm = false; |
|
|
var mensagemInsere; |
|
|
var acao = ""; |
|
|
|
|
|
function SetAcao(acaoExe) { |
|
|
acao = acaoExe; |
|
|
} |
|
|
|
|
|
function Verify() { |
|
|
if (this.acao == 'INSERE_CANAL') { |
|
|
if (document.getElementById("relacao").selectedIndex < 0) { |
|
|
alert('Selecione um "Modelo"!'); |
|
|
return false; |
|
|
} else if (document.getElementById("disponiveis").selectedIndex < 0) { |
|
|
alert('Selecione um "Tronco"!'); |
|
|
return false; |
|
|
} else if (document.getElementById("opcao_modelo").value) { |
|
|
return confirm('Se prosseguir com a opera<EFBFBD><EFBFBD>o as "A<EFBFBD><EFBFBD>es Selecionadas" ser<EFBFBD>o apagadas! Deseja continuar?'); |
|
|
} |
|
|
} else if (this.acao == 'REMOVE_CANAL') { |
|
|
if (document.getElementById("ramais").selectedIndex < 0) { |
|
|
alert('Selecione um "Tronco"!'); |
|
|
return false; |
|
|
} |
|
|
return confirm('Se prosseguir com a opera<EFBFBD><EFBFBD>o o "Tronco Selecionado" ser<EFBFBD>o apagados! Deseja continuar?'); |
|
|
} else if (this.acao == 'INSERE_OPCAO') { |
|
|
if (document.getElementById("relacao").selectedIndex < 0) { |
|
|
alert('Selecione um "Modelo"!'); |
|
|
return false; |
|
|
} else if (!document.getElementById("opcao").value || !document.getElementById("acao_opcao").value) { |
|
|
alert('Selecione uma "op<EFBFBD><EFBFBD>o"!'); |
|
|
return false; |
|
|
} else if (document.getElementById("ramais").length > 0) { |
|
|
return confirm('Se prosseguir com a opera<EFBFBD><EFBFBD>o os "Troncos Selecionados" ser<EFBFBD>o apagados! Deseja continuar?'); |
|
|
} |
|
|
} else if (this.acao == 'REMOVE_OPCAO') { |
|
|
if (!document.getElementById("opcao_modelo").value) { |
|
|
return false; |
|
|
} |
|
|
} else if (this.acao == 'GRAVAR') { |
|
|
if (!document.getElementById("nome").value) { |
|
|
alert("Inorfome o \"Nome\" do \"Contexto\"!"); |
|
|
return false; |
|
|
} |
|
|
} |
|
|
return true; |
|
|
} |
|
|
|
|
|
function Copia(value) { |
|
|
document.getElementById("numeros").value = value; //document.getElementById("modelo_disp").value; |
|
|
} |
|
|
</script> |
|
|
<link href="admin/css/forms.css" rel="stylesheet" type="text/css"> |
|
|
</head> |
|
|
|
|
|
<body> |
|
|
<form name="form1" method="post" onsubmit="return Verify();" action="index.php?idProg=11027&pbxRequest=1&acao=<?= $acao; ?>&acao2=salva<?= $param; ?>" id="form1"> |
|
|
<table border="0" align="center" cellpadding="3" cellspacing="0" class="tabela"> |
|
|
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA" class="labels" background="img/button03.gif"> |
|
|
<td class="cabecalho"> |
|
|
<div align="center">CADASTRO DE CONTEXTOS |
|
|
<input name="id" type="hidden" id="id2" value="<?= $idContexto; ?>" /> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
|
|
|
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA"> |
|
|
<td bgcolor="#EAEAEA" class="labels"> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0"> |
|
|
<tr> |
|
|
<td> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0"> |
|
|
<tr> |
|
|
<td width="50%"> |
|
|
<fieldset> |
|
|
<legend class="labels">Nome:</legend> |
|
|
<input name="nome" type="text" class="caixas" id="nome" value="<?= $nome; ?>" size="30" maxlength="50" <?= ($acao == 'edita') ? "readonly" : null; ?> onchange="RemoveSpace(this.name)" /> |
|
|
<input name="acao" type="hidden" id="acao" value="<?= $acao; ?>"> |
|
|
</fieldset> |
|
|
</td> |
|
|
<td> |
|
|
<fieldset> |
|
|
<legend class="labels">Inclui Padrão :</legend> |
|
|
Sim <input name="inclui_padrao" type="radio" value="S" <?= ($inclui_padrao == 'S') ? "checked" : null; ?> /> |
|
|
Não <input name="inclui_padrao" type="radio" value="N" <?= (!$inclui_padrao || ($inclui_padrao == 'N')) ? "checked" : null; ?> /> |
|
|
</fieldset> |
|
|
</td> |
|
|
<td> |
|
|
<fieldset> |
|
|
<legend class="labels">Tipo Chamada:</legend> |
|
|
Entrada <input name="direcao_chamada" type="radio" value="E" <?= ((!$direcao_chamada) || ($direcao_chamada == 'E')) ? "checked" : null; ?> /> |
|
|
Sa<EFBFBD>da <input name="direcao_chamada" type="radio" value="S" <?= ($direcao_chamada == 'S') ? "checked" : null; ?> /> |
|
|
</fieldset> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
</tr> |
|
|
|
|
|
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA"> |
|
|
<td valign="top" class="labels"> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0"> |
|
|
<tr> |
|
|
<td> |
|
|
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="tabela"> |
|
|
<tr> |
|
|
<td colspan="3"> |
|
|
<div align="center">MODELOS DE DISCAGEM: </div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td width="45%" valign="top"> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="2"> |
|
|
<tr> |
|
|
<td width="30%" align="left"> |
|
|
<legend class="labels">Recorte:</legend> |
|
|
</td> |
|
|
<td width="30%" align="left"> |
|
|
<legend class="labels">Acrescenta:</legend> |
|
|
</td> |
|
|
<td align="left">Portabilidade</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
<input name="recorte" type="text" class="validate[optional,custom[onlyNumber]] caixas" id="recorte_prefixo" value="<?= $recorte; ?>" size="6" maxlength="10" /> |
|
|
</td> |
|
|
<td> |
|
|
<input name="acrescenta" type="text" class="validate[optional,custom[onlyNumber]] caixas" id="acrescenta" value="<?= $acrescenta; ?>" size="6" maxlength="10" /> |
|
|
</td> |
|
|
<td nowrap="nowrap">Sim |
|
|
<input name="portabilidade" type="radio" id="portabilidade" value="1" /> |
|
|
Não |
|
|
<input name="portabilidade" type="radio" id="portabilidade" value="0" checked="checked" /> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td colspan="3" align="center"> |
|
|
Modelos Disponíveis |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td colspan="3"> |
|
|
<select name="modelo_disp" class="caixas" id="select" onchange="Copia(this.value)" style="width:250px"> |
|
|
<?= GetMascara(); ?> |
|
|
</select> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td colspan="3" align="left"><input name="numeros" type="text" class="caixas" id="numeros" /></td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
<td width="10%"> |
|
|
<div align="center"> |
|
|
<input name="btInsereModelo" type="submit" class="caixas" id="btInsereModelo" onclick="SetAcao('NONE');" value=">" /> |
|
|
<input name="btRemoveModelo" type="submit" class="caixas" id="btRemoveModelo" onclick="SetAcao('NONE');" value="<" /> |
|
|
</div> |
|
|
</td> |
|
|
<td width="47%"> |
|
|
<div align="center"> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="2"> |
|
|
<tr> |
|
|
<td width="30%" align="left"> |
|
|
<legend class="labels">Recorte:</legend> |
|
|
</td> |
|
|
<td width="30%" align="left"> |
|
|
<legend class="labels">Acrescenta:</legend> |
|
|
</td> |
|
|
<td align="left">Portabilidade: </td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
<input name="recorte2" type="text" class="validate[optional,custom[onlyNumber]] caixas" id="recorte" value="<?= $recorte2; ?>" size="6" maxlength="10" disabled="disabled" /> |
|
|
</td> |
|
|
<td> |
|
|
<input name="acrescenta2" type="text" class="validate[optional,custom[onlyNumber]] caixas" id="acrescenta2" value="<?= $acrescenta2; ?>" size="6" maxlength="10" disabled="disabled" /> |
|
|
</td> |
|
|
<td nowrap="nowrap">Sim |
|
|
<input name="portabilidade2" type="radio" id="portabilidade2" value="1" <?= ($portabilidade2) ? "checked" : null; ?> disabled="disabled" /> |
|
|
Não |
|
|
<input name="portabilidade2" type="radio" id="portabilidade2" value="0" <?= (!$portabilidade2) ? "checked" : null; ?> disabled="disabled" /> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td colspan="3" align="center">Modelos Disponíveis</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td colspan="3" align="center"> |
|
|
<select name="relacao" size="5" class="caixas" id="relacao"> |
|
|
<?= $modelosSelecionados; ?> |
|
|
</select> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabela"> |
|
|
<tr> |
|
|
<td colspan="3"> |
|
|
<div align="center">CANAIS DE SAÍDA: </div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td width="45%"> |
|
|
<div align="center">Troncos Disponíveis</div> |
|
|
</td> |
|
|
<td width="10%"> </td> |
|
|
<td width="47%"> |
|
|
<div align="center">Troncos Selecionados</div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td width="45%"> |
|
|
<div align="center"> |
|
|
<select name="disponiveis" size="5" class="caixas" id="disponiveis"> |
|
|
<?= $troncosDisponiveis; ?> |
|
|
</select> |
|
|
</div> |
|
|
</td> |
|
|
<td width="10%"> |
|
|
<div align="center"> |
|
|
<br /> |
|
|
<input name="btInsereCanais" type="submit" class="caixas" id="btInsereCanais" value=">" onclick="SetAcao('INSERE_CANAL');" /> |
|
|
<br /> |
|
|
<input name="btRemoveCanais" type="submit" class="caixas" id="btRemoveCanais" value="<" onclick="SetAcao('REMOVE_CANAL');" /> |
|
|
<br /> |
|
|
<br /> |
|
|
</div> |
|
|
</td> |
|
|
<td width="47%"> |
|
|
<div align="center"> |
|
|
<select name="ramais" size="5" class="validate[optional] caixas" id="ramais"> |
|
|
<?= $troncosSelecionados; ?> |
|
|
</select> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
</tr> |
|
|
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA"> |
|
|
<td class="labels"> </td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td class="labels"> |
|
|
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabela"> |
|
|
<tr> |
|
|
<td colspan="3"> |
|
|
<div align="center">AÇÕES: </div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td width="45%"> |
|
|
<div align="center">Ações Disponíveis</div> |
|
|
</td> |
|
|
<td width="10%"> </td> |
|
|
<td width="47%"> |
|
|
<div align="center">Açoes Selecionados</div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td width="45%"> |
|
|
<div align="center"> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="3"> |
|
|
<tr> |
|
|
<td> |
|
|
<select name="opcao" class="validate[optional] caixas" id="opcao" onChange="ajaxComboBox('admin/popula.php?id=<?= $acao_opcao; ?>', 'acao_opcao', 'opcao', '<?= $acao_opcao; ?>');"> |
|
|
<?= _GetOpcoes($dbcon, $opcao); ?> |
|
|
</select> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
<select name="acao_opcao" class="validate[optional] caixas" id="acao_opcao"></select> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</div> |
|
|
</td> |
|
|
<td width="10%"> |
|
|
<div align="center"> |
|
|
<br /> |
|
|
<input name="btInsereOpcao" type="submit" class="caixas" id="btInsereOpcao" value=">" onclick="SetAcao('INSERE_OPCAO');" /> |
|
|
<br /> |
|
|
<input name="btRemoveOpcao" type="submit" class="caixas" id="btRemoveOpcao" value="<" onclick="SetAcao('REMOVE_OPCAO');" /> |
|
|
<br /> |
|
|
<br /> |
|
|
</div> |
|
|
</td> |
|
|
<td width="47%"> |
|
|
<div align="center"> |
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="3"> |
|
|
<tr> |
|
|
<td> |
|
|
<input name="opcao_modelo" type="text" id="opcao_modelo" value="<?= $opcao_modelo; ?>" readonly="readonly" /> |
|
|
<input name="opcValue" type="hidden" id="opcValue" /> |
|
|
<input name="opcaoText" type="hidden" id="opcaoText" /> |
|
|
</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td> |
|
|
<input name="acao_modelo" type="text" id="acao_modelo" value="<?= $acao_modelo; ?>" readonly="readonly"> |
|
|
<input name="acaoValue" type="hidden" id="acaoValue" /> |
|
|
<input name="acaoText" type="hidden" id="acaoText" /> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</td> |
|
|
</tr> |
|
|
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA"> |
|
|
<td> |
|
|
<div align="center"> |
|
|
<span class="style1"></span> |
|
|
<span class="style1"></span> |
|
|
<span class="style1"></span> |
|
|
<span class="style1"> |
|
|
<input name="Submit2" type="button" class="labels" value="Fechar" id="Submit2" onClick="fecha_popup();" /> |
|
|
<input name="bt_salvar" type="submit" class="labels" id="bt_salvar" onclick="SetAcao('GRAVA');" value="Salvar" /> |
|
|
</span> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
</table> |
|
|
</form> |
|
|
|
|
|
<?php if ($acao == 'edita' || $acao == 'inseri') { ?> |
|
|
<script type="text/javascript"> |
|
|
ajaxComboBox('admin/popula.php?id=<?= $acao_opcao; ?>', 'acao_opcao', 'opcao', '<?= $acao_opcao; ?>'); |
|
|
</script> |
|
|
<?php } ?> |
|
|
|
|
|
<?php |
|
|
if (count($mensagems)) { |
|
|
foreach ($mensagems as $msg) { |
|
|
$disp .= $msg; |
|
|
} |
|
|
echo "<script type=\"text/javascript\">\n"; |
|
|
echo "alert('$disp');\n"; |
|
|
foreach ($acoesCliente as $acaoExe) { |
|
|
echo $acaoExe . "\n"; |
|
|
} |
|
|
echo "</script>\n"; |
|
|
} |
|
|
?> |
|
|
</body> |
|
|
|
|
|
</html>
|