forked from SimplesIP/pabx-app
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
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; |
|
} |
|
?>
|
|
|