Browse Source

Correcoes e mais features, commit apos a implementacao do ramal secretaria

dev
Matheo Bonucia 8 months ago
parent
commit
1b1467c434
  1. 71
      admin/cadAutomatico.php
  2. 302
      admin/cadRamais.php

71
admin/cadAutomatico.php

@ -17,13 +17,26 @@ function gerarFormulario($__prog, $configuracao, $titulo, $acao, $param, $id = n
// Iteração sobre as configurações // Iteração sobre as configurações
foreach ($configuracao as $grupo) { foreach ($configuracao as $grupo) {
// Caso tenha estilo igual a collapse, irá adicionar a propriedade // Caso tenha estilo igual a collapse, irá adicionar a propriedade
if ($grupo['estilo'] === 'collapse-abre') { if ($grupo['collapse'] === 'collapse-abre') {
$formulario .= '<div class="collapse-config-advanced"> $formulario .= '<div class="collapse-config-advanced">
<button id="' . $grupo['botao-collapse-id'] . ' "class="collapse-btn" onclick="toggleCollapse(\'' . $grupo['div-collapse-id'] . '\')" type="button">' . $grupo['botao-collapse-nome'] . '</button> <button id="' . $grupo['botao-collapse-id'] . ' "class="collapse-btn" onclick="toggleCollapse(\'' . $grupo['div-collapse-id'] . '\')" type="button">' . $grupo['botao-collapse-nome'] . '</button>
<div class="collapse-config-advanced-content" id="' . $grupo['div-collapse-id'] . '">'; <div class="collapse-config-advanced-content" id="' . $grupo['div-collapse-id'] . '">';
} }
// Abre a div row // Abre a div row
$formulario .= '<div class="row">'; switch ($grupo['estilo']) {
case 'tabela-head':
$formulario .= '<div class="row head-tabela">';
break;
case 'tabela-content':
$formulario .= '<div class="row content-tabela">';
break;
default:
$formulario .= '<div class="row">';
break;
}
// Verifica se há elementos para esse grupo // Verifica se há elementos para esse grupo
if (isset($grupo['conteudo']) && is_array($grupo['conteudo'])) { if (isset($grupo['conteudo']) && is_array($grupo['conteudo'])) {
@ -34,19 +47,25 @@ function gerarFormulario($__prog, $configuracao, $titulo, $acao, $param, $id = n
list($divInicial, $divContent) = gerarDivInicial($elemento); list($divInicial, $divContent) = gerarDivInicial($elemento);
$formulario .= $divInicial; $formulario .= $divInicial;
if ($elemento['titulo'] != null) {
$formulario .= '<div class="coluna-titulo">' . '<h1>' . $elemento['titulo'] . '</h1>' . '</div>'; $formulario .= '<div class="coluna-titulo">' . '<h1>' . $elemento['titulo'] . '</h1>' . '</div>';
$formulario .= '<div class="' . $divContent . '">' . } else {
gerarElemento($elemento) . $formulario .= '';
'</div>'; }
if ($divContent != null) {
$formulario .= '<div class="' . $divContent . '">' .
gerarElemento($elemento) .
'</div>';
} else {
$formulario .= '';
}
$formulario .= '</div>'; $formulario .= '</div>';
} }
} }
// Fecha a div row // Fecha a div row
$formulario .= '</div>'; $formulario .= '</div>';
if ($grupo['estilo'] === 'collapse-fecha') { if ($grupo['collapse'] === 'collapse-fecha') {
$formulario .= '</div> $formulario .= '</div>
</div>'; </div>';
} }
@ -79,12 +98,14 @@ function gerarDivInicial($elemento)
{ {
$tipo = isset($elemento['tipo']) ? $elemento['tipo'] : 'coluna-content'; $tipo = isset($elemento['tipo']) ? $elemento['tipo'] : 'coluna-content';
$classes = isset($elemento['classes']) ? $elemento['classes'] : 'coluna'; $classes = isset($elemento['classes']) ? $elemento['classes'] : 'coluna';
$divContent = '';
switch ($classes) { switch ($classes) {
case 'toggle': case 'toggle':
$classes = 'coluna-toggle'; $classes = 'coluna-toggle';
break; break;
case '':
$classes = null;
break;
default: default:
$classes = 'coluna'; $classes = 'coluna';
break; break;
@ -96,12 +117,18 @@ function gerarDivInicial($elemento)
case 'codecs': case 'codecs':
$divContent = 'codecs-content'; $divContent = 'codecs-content';
break; break;
case '':
$divContent = null;
break;
default: default:
$divContent = 'coluna-content'; $divContent = 'coluna-content';
break; break;
} }
if ($classes != null) {
$divInicial = '<div class="' . $classes . '">'; $divInicial = '<div class="' . $classes . '">';
} else {
$divInicial = '';
}
return array($divInicial, $divContent); return array($divInicial, $divContent);
} }
@ -134,6 +161,8 @@ function gerarElemento($elemento)
return gerarSelect($props[0]); return gerarSelect($props[0]);
} elseif ($formato == 'textarea') { } elseif ($formato == 'textarea') {
return gerarTextarea($props[0]); return gerarTextarea($props[0]);
} elseif ($formato == 'botaoSelect') {
return gerarBotaoSelect($props);
} }
if (count($props) > 1) { if (count($props) > 1) {
$inputs = ''; $inputs = '';
@ -197,3 +226,21 @@ function gerarTextarea($props)
return $textareaHtml; return $textareaHtml;
} }
function gerarBotaoSelect($props)
{
$attributesAdd = gerarAtributos($props[0]);
$attributesRemove = gerarAtributos($props[1]);
$botaoSelect = '<div class="select-bn">
<div ' . $attributesAdd . '>
<h3> > </h3>
</div>
<div ' . $attributesRemove . '>
<h3>
< </h3>
</div>
</div>';
return $botaoSelect;
}

302
admin/cadRamais.php

@ -664,6 +664,102 @@ if ($renderizar) { ?>
$pager = trim($dados2["pager"]); $pager = trim($dados2["pager"]);
} }
//Pesquisas as rotas disponiveis para os ramais e retorna nas variaveis
if ($acao == 'edita') {
$query = "SELECT DISTINCT a.id as id_rota, a.nome as nome_rota, coalesce(b.ramal, '$nome') as ramal,
coalesce(b.tipo_acesso, 0) as tipo_acesso
FROM pbx_rotas_saida a
LEFT OUTER JOIN pbx_rotas_saida_ramais b ON b.id_rota = a.id AND b.ramal = '$nome'
WHERE a.tipo = 'E'
AND a.org_id = {$org_id}
ORDER BY 1 ";
} else {
$query = "SELECT id AS id_rota, nome as nome_rota, 0 as tipo_acesso
FROM pbx_rotas_saida WHERE tipo = 'E'
AND org_id = {$org_id}
ORDER BY id_rota";
}
$resultRotas = pg_query($dbcon, $query);
$numRowsRotas = pg_num_rows($resultRotas);
$count = 0;
while ($dadosRota = pg_fetch_array($resultRotas)) {
$tipoAcesso = $dadosRota["tipo_acesso"];
$idRota = $dadosRota["id_rota"];
$nomeRota = $dadosRota["nome_rota"];
$rotasEncontradas[] = [
'estilo' => 'tabela-content',
'conteudo' => [
[
'titulo' => $nomeRota,
'classes' => 'normal',
'tipo' => '',
],
[
'titulo' => '',
'classes' => 'normal',
'tipo' => 'normal',
'props' => [
[
'type' => 'radio',
'name' => 'tipoRota[' . [$idRota] . ']',
'class' => 'tipoRotaSim',
'value' => '1;' . $idRota,
'checked' => ($tipoAcesso == 1) ? true : false,
]
]
],
[
'titulo' => '',
'classes' => 'normal',
'tipo' => 'normal',
'props' => [
[
'type' => 'radio',
'name' => 'tipoRota[' . [$idRota] . ']',
'class' => 'tipoRotaNao',
'value' => '0;' . $idRota,
'checked' => ($tipoAcesso == 0) ? true : false,
]
]
],
[
'titulo' => '',
'classes' => 'normal',
'tipo' => 'normal',
'props' => [
[
'type' => 'radio',
'name' => 'tipoRota[' . [$idRota] . ']',
'class' => 'tipoRotaSenha',
'value' => '2;' . $idRota,
'checked' => ($tipoAcesso == 2) ? true : false,
]
]
],
[
'titulo' => '',
'classes' => 'normal',
'tipo' => 'normal',
'props' => [
[
'type' => 'radio',
'name' => 'tipoRota[' . [$idRota] . ']',
'class' => 'tipoRotaAgente',
'value' => '3;' . $idRota,
'checked' => ($tipoAcesso == 3) ? true : false,
]
]
],
],
];
if ($count === $numRowsRotas - 1) {
$rotasEncontradas[$numRowsRotas]['collapse'] = 'collapse-fecha';
}
$count++;
}
// Define um valor default para os troncos pbx // Define um valor default para os troncos pbx
$optionsTroncoPbx = [ $optionsTroncoPbx = [
@ -728,6 +824,19 @@ if ($renderizar) { ?>
]; ];
} }
// Faz uma consulta no banco e retorna as chefes secretarias daquela organizacao
$query5 = "SELECT * FROM pbx_chefe_secretaria WHERE org_id = {$org_id} AND numero = '$nome'";
$result5 = pg_query($dbcon, $query5);
$optionsChefeSecretaria = [];
while ($dados5 = pg_fetch_array($result5)) {
$excecao = $dados5[0];
$optionsChefeSecretaria[$excecao] = [
'label' => $excecao,
'attributes' => [],
];
}
// Funca que busca os codecs e gera eles para apresentar no formulario // Funca que busca os codecs e gera eles para apresentar no formulario
function gerarOptionsCodecs($allow) function gerarOptionsCodecs($allow)
{ {
@ -816,7 +925,6 @@ if ($renderizar) { ?>
], ],
], ],
], ],
// linha 2 // linha 2
[ [
'estilo' => 'row', 'estilo' => 'row',
@ -991,8 +1099,9 @@ if ($renderizar) { ?>
], ],
// linha 5 // linha 5
[ [
//Essa linha vai ser a primeira a abrir o menu collapse, logo 'estilo' => 'collapse-abre' //Essa linha vai ser a primeira a abrir o menu collapse, logo 'collapse' => 'collapse-abre'
'estilo' => 'collapse-abre', 'estilo' => 'row',
'collapse' => 'collapse-abre',
'botao-collapse-id' => 'config-advanced', 'botao-collapse-id' => 'config-advanced',
'botao-collapse-nome' => 'Configurações Avançadas', 'botao-collapse-nome' => 'Configurações Avançadas',
'div-collapse-id' => 'collapse-advanced-content', 'div-collapse-id' => 'collapse-advanced-content',
@ -1442,9 +1551,10 @@ if ($renderizar) { ?>
], ],
] ]
], ],
// linha 13 - essa é a ultima linha do collapse, portanto o estilo é 'estilo' => 'collapse-fecha' // linha 13 - essa é a ultima linha do collapse, portanto o estilo é 'collapse' => 'collapse-fecha'
[ [
'estilo' => 'collapse-fecha', 'collapse' => 'collapse-fecha',
'estilo' => 'row',
'conteudo' => [ 'conteudo' => [
[ [
'titulo' => 'Redes Permitidas para Autenticação de Ramais', 'titulo' => 'Redes Permitidas para Autenticação de Ramais',
@ -1465,7 +1575,8 @@ if ($renderizar) { ?>
], ],
// linha 14 // linha 14
[ [
'estilo' => 'collapse-abre', 'estilo' => 'row',
'collapse' => 'collapse-abre',
'botao-collapse-id' => 'bn-voicemail', 'botao-collapse-id' => 'bn-voicemail',
'botao-collapse-nome' => 'Voicemail', 'botao-collapse-nome' => 'Voicemail',
'div-collapse-id' => 'collapseVoicemail', 'div-collapse-id' => 'collapseVoicemail',
@ -1569,7 +1680,8 @@ if ($renderizar) { ?>
], ],
// linha 16 // linha 16
[ [
'estilo' => 'collapse-fecha', 'estilo' => 'row',
'collapse' => 'collapse-fecha',
'conteudo' => [ 'conteudo' => [
[ [
'titulo' => 'Reproduzir identificação', 'titulo' => 'Reproduzir identificação',
@ -1601,27 +1713,165 @@ if ($renderizar) { ?>
], ],
] ]
], ],
// linha 17 // linha 17
// [ [
// 'estilo' => 'collapse-abre', 'collapse' => 'collapse-abre',
// 'botao-collapse-id' => 'bn-rotas', 'estilo' => 'tabela-head',
// 'botao-collapse-nome' => 'Rotas', 'botao-collapse-id' => 'bn-rotas',
// 'div-collapse-id' => 'collapseRotas', 'botao-collapse-nome' => 'Rotas',
// 'conteudo' => [ 'div-collapse-id' => 'collapseRotas',
// [ 'conteudo' => [
// 'titulo' => 'Rota', [
// 'tipo' => 'tabela-head' 'titulo' => 'Rota',
// ], 'tipo' => 'normal',
// ] 'classes' => 'toggle',
// ], 'props' => [
// [ [
// 'estilo' => 'collapse-fecha', 'style' => 'display: none',
// 'conteudo' => [ ]
// [], ],
// ] ],
// ] [
'titulo' => 'Sim',
'classes' => 'toggle',
'tipo' => 'normal',
'props' => [
[
'name' => 'opcao-rota',
'type' => 'radio',
'id' => 'simCheck',
'title' => 'Clique para marcar todos!',
'style' => 'cursor: pointer',
]
]
],
[
'titulo' => 'Não',
'classes' => 'toggle',
'tipo' => 'normal',
'props' => [
[
'name' => 'opcao-rota',
'type' => 'radio',
'id' => 'naoCheck',
'title' => 'Clique para marcar todos!',
'style' => 'cursor: pointer',
]
]
],
[
'titulo' => 'Conta/Senha',
'classes' => 'toggle',
'tipo' => 'normal',
'props' => [
[
'name' => 'opcao-rota',
'type' => 'radio',
'id' => 'senhaCheck',
'title' => 'Clique para marcar todos!',
'style' => 'cursor: pointer',
]
]
],
[
'titulo' => 'Agente',
'classes' => 'toggle',
'tipo' => 'normal',
'props' => [
[
'name' => 'opcao-rota',
'type' => 'radio',
'id' => 'agenteCheck',
'title' => 'Clique para marcar todos!',
'style' => 'cursor: pointer',
]
]
],
]
],
// linha 18 - Sera inserido pelo splice as rotas aqui apos consultar no banco
//linha 19
[
'collapse' => 'collapse-abre',
'estilo' => 'row',
'botao-collapse-id' => 'bn-chefeSecretaria',
'botao-collapse-nome' => 'Chefe Secretária',
'div-collapse-id' => 'collapseChefeSec',
'conteudo' => [
[
'titulo' => 'Ramal Secretária',
'tipo' => 'normal',
'classes' => 'toggle',
'props' => [
[
'name' => 'ramalSecretaria',
'type' => 'text',
'id' => 'ramalSecretaria',
'value' => ($acao == 'edita') ? $ramalSecretaria : null,
]
]
],
[
'titulo' => 'Exeções',
'classes' => 'toggle',
'tipo' => 'normal',
'props' => [
[
'type' => 'text',
'name' => 'ramalSecretariaExcessao',
'id' => 'ramalSecretariaExcessao',
]
]
],
[
'titulo' => '',
'classes' => 'toggle',
'tipo' => 'normal',
'formato' => 'botaoSelect',
'props' => [
[
'name' => 'btIncluirRamalExecao',
'onClick' => 'incExcecao();',
'style' => 'cursor:pointer',
],
[
'name' => 'btExcluirExcessao',
'onClick' => 'remExcecao();',
'style' => 'cursor:pointer',
]
]
],
[
'tipo' => 'normal',
'classes' => 'toggle',
'formato' => 'select',
'titulo' => '',
'props' => [
[
'name' => 'ramalSecExcecoesInc[]',
'size' => '6',
'multiple' => 'multiple',
'id' => 'ramalSecExcecoesInc',
'style' => 'width:170px',
'options' => $optionsChefeSecretaria,
]
]
]
]
],
]; ];
// Cria um array temporário para armazenar os elementos na ordem desejada
$tempArray = [];
// Itera sobre cada para adicionar as rotas
foreach ($rotasEncontradas as $v) {
// Adiciona o conteúdo de $v ao array temporário
$tempArray[] = $v;
}
// Insere o array temporário na posição desejada em $configuracao
array_splice($configuracao, 18, 0, $tempArray);
$titulo = 'Cadastro de Ramais SIP'; $titulo = 'Cadastro de Ramais SIP';
echo gerarFormulario($idProg, $configuracao, $titulo, $acao, $param, $id); echo gerarFormulario($idProg, $configuracao, $titulo, $acao, $param, $id);

Loading…
Cancel
Save