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
foreach ($configuracao as $grupo) {
// 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">
<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'] . '">';
}
// 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
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);
$formulario .= $divInicial;
$formulario .= '<div class="coluna-titulo">' . '<h1>' . $elemento['titulo'] . '</h1>' . '</div>';
$formulario .= '<div class="' . $divContent . '">' .
gerarElemento($elemento) .
'</div>';
if ($elemento['titulo'] != null) {
$formulario .= '<div class="coluna-titulo">' . '<h1>' . $elemento['titulo'] . '</h1>' . '</div>';
} else {
$formulario .= '';
}
if ($divContent != null) {
$formulario .= '<div class="' . $divContent . '">' .
gerarElemento($elemento) .
'</div>';
} else {
$formulario .= '';
}
$formulario .= '</div>';
}
}
// Fecha a div row
$formulario .= '</div>';
if ($grupo['estilo'] === 'collapse-fecha') {
if ($grupo['collapse'] === 'collapse-fecha') {
$formulario .= '</div>
</div>';
}
@ -79,12 +98,14 @@ function gerarDivInicial($elemento)
{
$tipo = isset($elemento['tipo']) ? $elemento['tipo'] : 'coluna-content';
$classes = isset($elemento['classes']) ? $elemento['classes'] : 'coluna';
$divContent = '';
switch ($classes) {
case 'toggle':
$classes = 'coluna-toggle';
break;
case '':
$classes = null;
break;
default:
$classes = 'coluna';
break;
@ -96,12 +117,18 @@ function gerarDivInicial($elemento)
case 'codecs':
$divContent = 'codecs-content';
break;
case '':
$divContent = null;
break;
default:
$divContent = 'coluna-content';
break;
}
$divInicial = '<div class="' . $classes . '">';
if ($classes != null) {
$divInicial = '<div class="' . $classes . '">';
} else {
$divInicial = '';
}
return array($divInicial, $divContent);
}
@ -134,6 +161,8 @@ function gerarElemento($elemento)
return gerarSelect($props[0]);
} elseif ($formato == 'textarea') {
return gerarTextarea($props[0]);
} elseif ($formato == 'botaoSelect') {
return gerarBotaoSelect($props);
}
if (count($props) > 1) {
$inputs = '';
@ -197,3 +226,21 @@ function gerarTextarea($props)
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"]);
}
//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
$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
function gerarOptionsCodecs($allow)
{
@ -816,7 +925,6 @@ if ($renderizar) { ?>
],
],
],
// linha 2
[
'estilo' => 'row',
@ -991,8 +1099,9 @@ if ($renderizar) { ?>
],
// linha 5
[
//Essa linha vai ser a primeira a abrir o menu collapse, logo 'estilo' => 'collapse-abre'
'estilo' => 'collapse-abre',
//Essa linha vai ser a primeira a abrir o menu collapse, logo 'collapse' => 'collapse-abre'
'estilo' => 'row',
'collapse' => 'collapse-abre',
'botao-collapse-id' => 'config-advanced',
'botao-collapse-nome' => 'Configurações Avançadas',
'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' => [
[
'titulo' => 'Redes Permitidas para Autenticação de Ramais',
@ -1465,7 +1575,8 @@ if ($renderizar) { ?>
],
// linha 14
[
'estilo' => 'collapse-abre',
'estilo' => 'row',
'collapse' => 'collapse-abre',
'botao-collapse-id' => 'bn-voicemail',
'botao-collapse-nome' => 'Voicemail',
'div-collapse-id' => 'collapseVoicemail',
@ -1569,7 +1680,8 @@ if ($renderizar) { ?>
],
// linha 16
[
'estilo' => 'collapse-fecha',
'estilo' => 'row',
'collapse' => 'collapse-fecha',
'conteudo' => [
[
'titulo' => 'Reproduzir identificação',
@ -1601,27 +1713,165 @@ if ($renderizar) { ?>
],
]
],
// linha 17
// [
// 'estilo' => 'collapse-abre',
// 'botao-collapse-id' => 'bn-rotas',
// 'botao-collapse-nome' => 'Rotas',
// 'div-collapse-id' => 'collapseRotas',
// 'conteudo' => [
// [
// 'titulo' => 'Rota',
// 'tipo' => 'tabela-head'
// ],
// ]
// ],
// [
// 'estilo' => 'collapse-fecha',
// 'conteudo' => [
// [],
// ]
// ]
// linha 17
[
'collapse' => 'collapse-abre',
'estilo' => 'tabela-head',
'botao-collapse-id' => 'bn-rotas',
'botao-collapse-nome' => 'Rotas',
'div-collapse-id' => 'collapseRotas',
'conteudo' => [
[
'titulo' => 'Rota',
'tipo' => 'normal',
'classes' => 'toggle',
'props' => [
[
'style' => 'display: none',
]
],
],
[
'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';
echo gerarFormulario($idProg, $configuracao, $titulo, $acao, $param, $id);

Loading…
Cancel
Save