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.
 
 
 
 
 
 

187 lines
7.9 KiB

<?php
require('funcoesFormulario.php');
$templateName = 'seguranca/grupos/gruposUraRamal.htm';
$tpLayout = 1;
$upload = 1;
$fieldsForm = array();
$fieldsForm = IsPostBack() ? $_POST : $_GET;
$_SESSION['SSIdUraRamal'] = $_GET['id_ura'] ? $_GET['id_ura'] : $_SESSION['SSIdUraRamal'];
$fieldsForm['erro'] = "";
if (isset($fieldsForm['btInclui'])) {
if (empty($fieldsForm['listaRamaisDisponiveis'])) {
$fieldsForm['erro'] = fmtMsg('Selecione um ramal!');
} else {
try {
$result = pg_query($dbcon, 'begin');
if ($result) {
$cont = 0;
foreach ($fieldsForm['listaRamaisDisponiveis'] as $ramal) {
$query = "insert into pbx_grupo_ura_ramal(id_ura, id_ramal)values(%s, %s)";
$query = sprintf($query, $_SESSION['SSIdUraRamal'], $ramal);
$result = pg_query($dbcon, $query);
CadastraRamalDestino($dbcon, $_SESSION['SSIdUraRamal'], $ramal);
if (!$result)
break;
$cont++;
}
}
$result = $result && pg_query($dbcon, 'commit');
if (!$result) {
throw new Exception('A operação não pode ser realizada!');
}
$fieldsForm['erro'] = $cont > 1 ? fmtMsg('Ramais incluidos com sucesso!') : fmtMsg('Ramal incluido com sucesso!');
} catch (Exception $e) {
pg_query($dbcon, 'rollback');
fmtErro($e->getMessage(), pg_last_error($dbcon));
}
}
}
if (isset($fieldsForm['btRemove'])) {
if (empty($fieldsForm['listaRamaisIncluidos'])) {
$fieldsForm['erro'] = fmtMsg('Selecione um ramal!');
} else {
try {
$result = pg_query($dbcon, 'begin');
if ($result) {
$userAdmin = IsAdmin() ? 1 : 0;
$cont = 0;
foreach ($fieldsForm['listaRamaisIncluidos'] as $ramal) {
$query = "delete from pbx_grupo_ura_ramal where id_ura = '%s' and id_ramal = '%s'";
$query = sprintf($query, $_SESSION['SSIdUraRamal'], $ramal);
$result = pg_query($dbcon, $query);
DeleteRamalDestino($dbcon, $_SESSION['SSIdUraRamal'], $ramal);
if (!$result)
break;
$cont++;
}
}
$result = $result && pg_query($dbcon, 'commit');
if (!$result) {
throw new Exception('A operação não pode ser realizada!');
}
$fieldsForm['erro'] = $cont > 1 ? fmtMsg('Ramais removidos com sucesso!') : fmtMsg('Ramal removido com sucesso!');
} catch (Exception $e) {
pg_query($dbcon, 'rollback');
fmtErro($e->getMessage(), pg_last_error($dbcon));
}
}
}
$fieldsForm['listaRamaisDisponiveis'] = GetRamaisDisponiveis($dbcon, $_SESSION['SSIdUraRamal'], 0);
$fieldsForm['listaRamaisIncluidos'] = GetRamaisIncluidos($dbcon, $_SESSION['SSIdUraRamal'], 0);
/*
* Atualiza templates templates
*/
foreach ($fieldsForm as $key => $value) {
$smarty->assign($key, $value);
}
GetTemplate($smarty, $templateName);
############################################################################
############# QUERYS BANCO DE DADOS #############
############################################################################
function GetRamaisDisponiveis($dbcon, $id_ura, $codSel) {
$gp_id = implode(",", GetGrupoId($dbcon));
$multiple = true;
$tamPx = '300';
$size = 8;
$query = "SELECT DISTINCT a.id, a.nome
FROM pbx_ramais a
WHERE
NOT EXISTS(SELECT '' FROM pbx_grupo_ura_ramal WHERE a.id = id_ramal and id_ura = '{$id_ura}')
AND NOT EXISTS(SELECT '' FROM pbx_grupo_audio_ramal WHERE a.nome = nome and gp_id IN ({$gp_id}))
ORDER BY a.nome ";
$result = pg_query($dbcon, $query);
$cont = 0;
$sel = "";
$lista = '<select name="%s%s" id="%s" size="%s" style="width:%spx;" %s>%s';
$lista = sprintf($lista, 'listaRamaisDisponiveis', ($multiple ? "[]" : ""), 'listaRamaisDisponiveis', $size, $tamPx, ($multiple ? 'multiple="multiple"' : ''), "\n");
while (($row = @pg_fetch_array($result))) {
$cod = $row["id"];
$sel = ($codSel == $cod) ? " selected" : "";
$desc = $row["nome"];
$lista .= "<option value=\"$cod\"$sel>$desc</option>\n";
$cont++;
}
$lista .= "</select>\n";
return $lista;
}
function GetRamaisIncluidos($dbcon, $id_ura,$codSel) {
$gp_id = implode(",", GetGrupoId($dbcon));
$multiple = true;
$tamPx = '300';
$size = 8;
$query = "SELECT DISTINCT a.id, a.nome
FROM pbx_ramais a
INNER JOIN pbx_grupo_ura_ramal b ON a.id = b.id_ramal
WHERE
EXISTS(SELECT '' FROM pbx_grupo_ura_ramal WHERE a.id = id_ramal and id_ura = '{$id_ura}')
AND NOT EXISTS(SELECT '' FROM pbx_grupo_audio_ramal WHERE a.nome = nome and gp_id IN ({$gp_id}))
ORDER BY a.nome ";
$result = pg_query($dbcon, $query);
$cont = 0;
$sel = "";
$lista = '<select name="%s%s" id="%s" size="%s" style="width:%spx;" %s>%s';
$lista = sprintf($lista, 'listaRamaisIncluidos', ($multiple ? "[]" : ""), 'listaRamaisIncluidos', $size, $tamPx, ($multiple ? 'multiple="multiple"' : ''), "\n");
while (($row = @pg_fetch_array($result))) {
$cod = $row["id"];
$sel = ($codSel == $cod) ? " selected" : "";
$desc = $row["nome"];
$lista .= "<option value=\"$cod\"$sel>$desc</option>\n";
$cont++;
}
$lista .= "</select>\n";
return $lista;
}
function CadastraRamalDestino($dbcon, $id_ura, $id_ramal) {
$data = VerificaRamal($dbcon, $id_ura, $id_ramal);
if (!$data) {
$ramal = GetRamal($dbcon, $id_ramal);
$query = "INSERT INTO pbx_ura_destino (id_ura, numero, tipo, comando, sequencia,nome_comando, visible) "
. "VALUES({$id_ura},'{$ramal}','ramal','{$ramal}',{$ramal},'{$ramal}', 'N')";
pg_query($dbcon, $query);
}
}
function DeleteRamalDestino($dbcon, $id_ura, $id_ramal){
$ramal = GetRamal($dbcon, $id_ramal);
$query = "DELETE FROM pbx_ura_destino WHERE id_ura = {$id_ura} AND numero = '{$ramal}' AND visible = 'N'";
pg_query($dbcon, $query);
}
function VerificaRamal($dbcon, $id_ura, $id_ramal) {
$query = "SELECT * FROM pbx_ura_destino a
INNER JOIN pbx_ramais b ON a.comando = b.nome
INNER JOIN pbx_grupo_ura_ramal c ON c.id_ramal = b.id
WHERE c.id_ramal = {$id_ramal} AND a.id_ura = {$id_ura} AND a.visible = 'N'";
$result = pg_query($dbcon, $query);
return pg_fetch_assoc($result);
}
function GetSequencia($dbcon, $id_ura) {
$query = "SELECT (MAX(sequencia)+1) AS sequencia FROM pbx_ura_destino WHERE id_ura = {$id_ura}";
$result = pg_query($dbcon, $query);
return pg_fetch_assoc($result)['sequencia'];
}
function GetRamal($dbcon, $id_ramal){
$query = "SELECT nome FROM pbx_ramais WHERE id = {$id_ramal};";
$result = pg_query($dbcon, $query);
$ramal = pg_fetch_assoc($result)['nome'];
return $ramal;
}
?>