PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

282 lines
12 KiB

<?php
$idAtiva = isset($_POST['itgm_id']) ? $_POST['itgm_id'] : $_GET['idAtiva'];
$tpLayout = 1;
$formAction = isset($_POST["formAction"]) ? $_POST["formAction"] : (isset($_GET["formAction"]) ? $_GET["formAction"] : 0);
$janW = 590;
$janH = 482;
$nomeJanela = "IntegAtvMetodoParam";
$itgc_id = isset($_GET['itgc_id']) ? $_GET['itgc_id'] : $_POST['itgc_id'];
$itgm_id = isset($_GET['itgm_id']) ? $_GET['itgm_id'] : $_POST['itgm_id'];
$itgm_id_pai = isset($_FORMS['itgm_id_pai']) ? $_FORMS['itgm_id_pai'] : 0;
$org_id = GetOrganizacao();
if (($formAction > 0) && ($formAction <= FORM_SAVE)) {
$jsPage[] = "admin/js/pbxAjax.js";
$fieldsForm = array(
'itgm_id' => '1', 'formAction' => '1', 'itgm_nome' => '1', 'itgm_tipo' => '1',
'itgm_comando' => '1', 'itgm_retorno' => '1', 'evento' => '0', 'evento_descricao' => '1', 'opcao' => '0', 'opcao_descricao' => '1',
'acao' => '0', 'acao_descricao' => '1', 'stored_params' => '1', 'stored_params_desc' => '1'
);
$fields = array('itgm_id' => '0', 'formAction' => '0', 'itgm_nome' => '', 'itgm_tipo' => '0', 'itgm_comando' => '', 'itgm_retorno' => '0', 'evento' => '0', 'opcao' => '0', 'stored_params' => '');
$nomeTpl = "cadastros/integAtiva/integAtivaMetodoCad.tpl";
if (IsPostBack()) {
GetDadosPost($fields, $_POST);
}
if ($formAction == FORM_NEW) {
$fields['formAction'] = FORM_INSERT;
}
if ($formAction == FORM_INSERT) {
$valRetorno = $fields['itgm_retorno'] ? '1' : '0';
$opcao = trim($fields['opcao']);
$evento = trim($fields['evento']);
$msg = '';
if (!$fields['itgm_nome']) {
$msg = 'Informe o nome do parametro!';
} else if (!$fields['itgm_comando']) {
$msg = 'Informe o comando!';
} else if (($valRetorno) && (!$opcao)) {
$msg = 'Quando o comando retorna um "Retorna ResultSet" é necessário informar uma "Opção"';
} else if ((!$valRetorno) && ($opcao)) {
$msg = 'Quando o comando tem uma Opção" deve retornar um "Retorna ResultSet"';
} else if (($valRetorno) && ($evento)) {
$msg = 'Quando o comando estiver associado a um "Evento" não pode retornar um "Retorna ResultSet"!';
} else {
$opcao = IsNullQuoted($opcao);
$evento = IsNullQuoted($evento);
$storedParams = IsNullQuoted($fields['stored_params']);
$result = pg_query($dbcon, 'begin');
$query = "INSERT INTO pbx_integracao_metodo(itgc_id, itgm_nome, itgm_comando, itgm_retorno, opcao, evento, stored_params, org_id) values(%s,%s,%s,%s,%s,%s,%s,%s)";
$query = sprintf($query, QuotedStr($itgc_id), QuotedStr($fields['itgm_nome']), QuotedStr($fields['itgm_comando']), QuotedStr($valRetorno), $opcao, $evento, $storedParams, $org_id);
$result = $result && pg_query($dbcon, $query);
if (!$itgm_id_pai) {
/*
* Cria eventos Abandonada e Atendida para o método criado.
*/
$itgm_id = GetItgmId($dbcon);
$query = "INSERT INTO pbx_integracao_metodo(itgc_id, itgm_nome, itgm_comando, itgm_retorno, opcao, evento, stored_params, itgm_id_pai, org_id) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)";
$query = sprintf($query, QuotedStr($itgc_id), QuotedStr('NOEXEC'), QuotedStr('NOEXEC'), '0', 'null', 3, 'null', $itgm_id, $org_id);
$result = $result && pg_query($dbcon, $query);
$query = "INSERT INTO pbx_integracao_metodo(itgc_id, itgm_nome, itgm_comando, itgm_retorno, opcao, evento, stored_params, itgm_id_pai, org_id) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)";
$query = sprintf($query, QuotedStr($itgc_id), QuotedStr('NOEXEC'), QuotedStr('NOEXEC'), '0', 'null', 2, 'null', $itgm_id, $org_id);
$result = $result && pg_query($dbcon, $query);
}
if ($result) {
pg_query($dbcon, 'commit');
if ($itgm_id_pai) {
$itgm_id = GetItgmId($dbcon);
}
$msg = 'Registro inserido com sucesso!';
$jsStartup[] = "window.opener.ResetForm();";
$jsJQuery[] = "window.close();";
} else {
pg_query($dbcon, 'rollback');
$msg = 'Não foi possível realizar a operação!';
}
}
}
if ($formAction == FORM_UPDATE) {
$fields['formAction'] = FORM_SAVE;
$query = "SELECT * FROM pbx_integracao_metodo WHERE itgm_id = $itgm_id";
$query = sprintf($query, QuotedStr($itgm_id));
$result = pg_query($dbcon, $query);
$dados = pg_fetch_array($result);
foreach ($dados as $key => $values) {
if (!is_numeric($key)) {
$fields[$key] = $values;
}
}
}
if ($formAction == FORM_SAVE) {
$valRetorno = $fields['itgm_retorno'] ? '1' : '0';
$opcao = trim($fields['opcao']);
$evento = trim($fields['evento']);
$msg = '';
if (!$fields['itgm_nome']) {
$msg = 'Informe o nome do parametro!';
} else if (!$fields['itgm_comando']) {
$msg = 'Informe o comando!';
} else if (($valRetorno) && (!$opcao)) {
$msg = 'Quando o comando retorna um "Retorna ResultSet" é necessário informar uma "Opção"';
} else if ((!$valRetorno) && ($opcao)) {
$msg = 'Quando o comando tem uma Opção" deve retornar um "Retorna ResultSet"';
} else if (($valRetorno) && ($evento)) {
$msg = 'Quando o comando estiver associado a um "Evento" não pode retornar um "Retorna ResultSet"!';
} else {
$opcao = IsNullQuoted($opcao);
$evento = IsNullQuoted($evento);
$storedParams = IsNullQuoted($fields['stored_params']);
$query = "UPDATE pbx_integracao_metodo SET itgm_nome = %s, itgm_comando = %s, itgm_retorno = %s, opcao = %s, stored_params = %s WHERE itgm_id = %s";
$query = sprintf($query, QuotedStr($fields['itgm_nome']), QuotedStr($fields['itgm_comando']), QuotedStr($valRetorno), $opcao, $storedParams, QuotedStr($itgm_id));
$result = pg_query($dbcon, $query);
if ($result) {
$msg = 'Registro atualizado com sucesso!';
$jsStartup[] = "window.opener.ResetForm();";
$jsJQuery[] = "window.close();";
} else {
$msg = 'Não foi possível realizar a operação!';
}
}
}
$fields['evento_descricao'] = GetItegEvento($fields['evento']);
$fields['opcao_descricao'] = GetOpcaoAlt($dbcon, $fields['opcao']);
$fields['stored_params_desc'] = GetParamFromCmd($fields['stored_params']);
foreach ($fields as $key => $value) {
if ($fieldsForm[$key]) {
$smarty->assign($key, $value);
}
}
$smarty->assign("itgc_id", $itgc_id);
$smarty->assign("itgm_id", $itgm_id);
$smarty->assign("itgm_id_pai", $itgm_id_pai);
$smarty->assign("evento", $fields['evento']);
GetTemplate($smarty, $nomeTpl);
if ($msg) {
$jsStartup[] = "alert('$msg');";
}
$jsJQuery[] = "\n$('#evento').change( function(){\$$('opcao').selectedIndex = 0; \$$('itgm_retorno').checked = false;})";
$jsJQuery[] = "\n$('#itgp_param_disponiveis').change(
function ()
{
if ($('#itgp_param_disponiveis').val() != 5)
{
$('#itgp_default').attr('disabled', true);
$('#itgp_default').val('');
}
else
{
$('#itgp_default').attr('disabled', false);
}
}
)";
} else {
if ($formAction == FORM_DELETE) {
$idDel = $_GET["id"];
/*
* Recupera o id da configuração antes de apagar o metodo
*/
$query = "SELECT itgc_id FROM pbx_integracao_metodo WHERE itgm_id = '$idDel'";
$result = pg_query($dbcon, $query);
$row = @pg_fetch_array($result);
$itgc_id = $row[0];
$result = pg_query($dbcon, 'begin');
if ($itgm_id_pai) {
$query = "UPDATE pbx_integracao_metodo SET itgm_nome = 'NOEXEC', itgm_comando = 'NOEXEC', stored_params = '' WHERE itgm_id = '$idDel' and coalesce(itgm_id_pai, 0) <> 0";
$result = $result && pg_query($dbcon, $query);
} else {
$query = "DELETE FROM pbx_integracao_metodo WHERE itgm_id_pai = '$idDel'";
$result = $result && pg_query($dbcon, $query);
$query = "DELETE FROM pbx_integracao_metodo WHERE itgm_id = '$idDel'";
$result = $result && pg_query($dbcon, $query);
}
if ($result) {
pg_query($dbcon, 'commit');
$jsJQuery[] = $result ? "alert('Registro apagado com sucesso!');" : "alert('Erro ao tentar remover registro!');";
} else {
pg_query($dbcon, 'rollback');
//$erros = error_get_last();
$msg = 'A operação não pode ser realizada!'; // Erro: ' . $erros['message'];
$jsJQuery[] = "alert('$msg');";
}
}
$colspan = 6;
$linha = ' <tr>
<td align="right">%s</td>
<td align="left" nowrap>%s</td>
<td width="30" align="center">%s</td>
<td width="35" align="center">%s</td>
<td width="35" align="center">%s</td>
%s
</tr>';
$linhaEmpty = "<tr><td align=\"center\" colspan=\"$colspan\">%s</td></tr>";
$insert = $itgm_id_pai ? '' : GetLinkFormInsert($nomeJanela, $imagem = "", $addParam = "&itgc_id=$itgc_id&itgm_id=0", "Novo Registro");
$query = "SELECT itgm_id, itgc_id, itgm_nome, itgm_tipo, itgm_comando, itgm_retorno, itgm_status, evento FROM pbx_integracao_metodo WHERE itgc_id=$itgc_id and coalesce(itgm_id_pai,0) = $itgm_id_pai order by itgm_id";
//if(IsAdmin()) echo $query;
$result = pg_query($dbcon, $query);
$linhas = '';
$update = '';
$delete = '';
$retorno = '';
$inc = 0;
while ($dados = pg_fetch_array($result)) {
$id = $dados['itgm_id'];
$retorno = sprintf('<img src="imgSite/%s" align="absmiddle" border="0"/>', $dados['itgm_retorno'] ? 'button_ok16.png' : 'fecha16.png');
$update = GetLinkFormUpdate("&itgc_id=$itgc_id&itgm_id=$id&itgm_id_pai=$itgm_id_pai", $nomeJanela);
$idDelete = "$id|$itgm_id_pai";
$delete = GetLinkFormDelete($idDelete, 'DeletaIntegAtivaMetodo');
$imgEvt = '<img src="imgSite/evento.png" align="absmiddle" border="0"/>';
$evtLink = sprintf("javaScript:NovaJanela('index.php?idProg=191&formAction=0&itgc_id=%s&itgm_id_pai=%s', 'IntegAtivaMetodo', '500', '340', 'resizable=NO,scrollbars=NO');", $itgc_id, $id);
$evtLink = $itgm_id_pai ? '' : sprintf('<td width="35" align="center">%s</td>', sprintf('<a href="%s">%s</a>', $evtLink, $imgEvt));
$nomeEvt = '';
if ($itgm_id_pai) {
$nomeEvt = '-';
$nomeEvt .= ($dados['evento'] == 3) ? "Atendimento" : "Encerramento";
}
$linhas .= sprintf($linha, $id, $dados['itgm_nome'] . $nomeEvt, $retorno, $update, $delete, $evtLink);
$inc++;
}
if (!$inc) {
$linhas = sprintf($linhaEmpty, "Nenhum parametro cadastrado! " . $insert);
}
$nomeTpl = "cadastros/integAtiva/integAtivaMetodo.tpl";
$smarty->assign("linhas", $linhas);
$smarty->assign("itgc_id", $itgc_id);
$smarty->assign("itgm_id_pai", $itgm_id_pai);
$smarty->assign("itgm_colspan", $itgm_id_pai ? 3 : 4);
$smarty->assign("itgm_new", $insert);
GetTemplate($smarty, $nomeTpl);
}
function GetParamFromCmd($cmd)
{
$params = explode('@', $cmd);
$ret = "";
$sel = 'selected="selected"';
$ini = '';
foreach ($params as $param) {
$paramValue = explode('|', $param);
if (!$ini) {
$ini = $param;
}
$nome = $paramValue[2];
$ret .= sprintf('<option value="%s" $sel>%s</option>%s', $param, $nome, "\n");
$sel = '';
}
$GLOBALS['jsStartup'][] = "SetParamInteg('$ini')";
return $ret;
}
function GetItgmId($dbcon)
{
$query = "SELECT currval('pbx_integracao_metodo_itgm_id_seq')";
$result = pg_query($dbcon, $query);
$row = @pg_fetch_row($result);
return $row[0];
}