Browse Source

Inserção da nova feature de escolher entre supervisor e agente no cadastro de usuario e atualização dos valores de org_id ao iniciar um banco, definindo 1 para a empresa master. Criação da grupos padrões para cada organização.

1.9
Matheo Bonucia 2 months ago
parent
commit
f0431b8243
  1. 41
      cadastros/organizacao/cadOrganizacao.php
  2. 2
      projeto/base/sql/versao-1.9.0.sql
  3. 49
      seguranca/usuarioCad.php
  4. 7
      templates/seguranca/usuario.tpl

41
cadastros/organizacao/cadOrganizacao.php

@ -133,8 +133,13 @@ function importIdTables($dbcon, $organizacao)
return true;
}
function criarGruposDefault($dbcon, $org_id)
{
function criarGruposDefault($dbcon, $org_id) {
try {
// Iniciar uma transação
if (!pg_query($dbcon, 'BEGIN')) {
throw new Exception("Erro ao iniciar transação: " . pg_last_error($dbcon));
}
$query = "INSERT INTO pbx_grupo (gp_nome, gp_status, gp_user, gp_system, org_id)
SELECT gp_nome, gp_status, gp_user, gp_system, $org_id
FROM pbx_grupo
@ -142,19 +147,39 @@ function criarGruposDefault($dbcon, $org_id)
AND gp_system = 0
AND org_id = 1
RETURNING gp_id, gp_nome";
$result = pg_query($dbcon, $query);
$gps = pg_fetch_all($result);
foreach ($gps as $g) {
if ($result) {
$grupos = pg_fetch_all($result);
foreach ($grupos as $grupo) {
$sql = "INSERT INTO pbx_grupo_funcoes (gp_id, fun_id, org_id)
SELECT {$g['gp_id']} AS gp_id, fun_id, {$org_id} AS org_id
SELECT {$grupo['gp_id']} AS gp_id, fun_id, {$org_id} AS org_id
FROM pbx_grupo_funcoes
WHERE gp_id = (SELECT gp_id FROM pbx_grupo WHERE org_id = (SELECT min(id) FROM pbx_organizacao)
AND gp_nome = '{$g['gp_nome']}' AND gp_system = 0)";
pg_query($dbcon, $sql);
WHERE gp_id = (SELECT gp_id FROM pbx_grupo WHERE org_id = 1
AND gp_nome = '{$grupo['gp_nome']}' AND gp_system = 0)";
if (!pg_query($dbcon, $sql)) {
throw new Exception("Erro ao inserir em pbx_grupo_funcoes: " . pg_last_error($dbcon));
}
}
if (!pg_query($dbcon, "COMMIT")) {
throw new Exception("Erro ao confirmar a transação: " . pg_last_error($dbcon));
}
} else {
throw new Exception("Erro ao criar os grupos de usuário ao instânciar nova organização: " . pg_last_error($dbcon));
}
} catch (Exception $error) {
pg_query($dbcon, "ROLLBACK");
throw new Exception("Erro ao processar requisição no BD: " . $error);
}
}
function addUserOrganizacaoGrupo($dbcon, $org_id)
{
$iduser = $_SESSION["SSidUser"];

2
projeto/base/sql/versao-1.9.0.sql

@ -332,4 +332,6 @@ Alter table pbx_rotas_saida
Alter table pbx_horarios_itens
ADD COLUMN acao_asterisk varchar(115);
--Sempre que iniciar um banco, sera setado o org_id como 1 para master
UPDATE pbx_grupo SET org_id = 1 WHERE gp_id IN (28, 29, 30);

49
seguranca/usuarioCad.php

@ -39,6 +39,9 @@ if (isset($_GET["idUser"]) && $_GET["idUser"] == 0) {
$penalidade = $dados["penalidade"];
$dacAgente = GetIdDacPadrao($dbcon, $idUser);
$dacPadrao = GetDacs($dbcon, $dacAgente, "", 0, 1);
$userSuper = $dados["supervisor"];
$userAgente = $dados["agente"];
} else if ((isset($_POST["btGravar"]))) {
$msg = "";
if (empty($_POST["userNome"])) {
@ -113,7 +116,7 @@ if (isset($_GET["idUser"]) && $_GET["idUser"] == 0) {
* Inclui usuario como grupo.
*/
$query = sprintf("INSERT INTO pbx_grupo(gp_nome, gp_status, user_id, gp_user, org_id)
SELECT apelido, 1, id, id, $org_id FROM pbx_usuarios WHERE apelido = %s", QuotedStr($userLogin));
SELECT apelido, 1, id, id, $org_id FROM pbx_usuarios WHERE id = %s", $user['id']);
$result2 = $result && pg_query($dbcon, $query);
/*
@ -132,6 +135,13 @@ if (isset($_GET["idUser"]) && $_GET["idUser"] == 0) {
$result4 = $result && pg_query($dbcon, $query);
}
/*
* Insere o usuario no grupo (agente/supervisor) que foi escolhido.
*/
$grupo = $userSuper === 'TRUE' ? 'SUPERVISOR' : 'AGENTE';
$query = sprintf("INSERT INTO pbx_grupo_usuario(user_id, gp_id, org_id) SELECT %d, gp_id, org_id FROM pbx_grupo WHERE gp_nome = '%s' AND org_id = $org_id", $user['id'],$grupo);
$result5 = $result && pg_query($dbcon, $query);
/*
* Finaliza a transacao.
*/
@ -198,6 +208,11 @@ if (isset($_GET["idUser"]) && $_GET["idUser"] == 0) {
$result = $result && pg_query($dbcon, $query);
}
if($result) {
$grupo = $userSuper === 'TRUE' ? 'SUPERVISOR' : 'AGENTE';
updateGrupoUser($dbcon,$grupo,$org_id,$idUser);
}
if ($result) {
$ret = IncluiAgenteFile($dbcon);
$result = strtoupper($ret) == "OK";
@ -223,6 +238,36 @@ if (isset($_GET["idUser"]) && $_GET["idUser"] == 0) {
$jsStartup[] = $msg;
}
function updateGrupoUser($dbcon, $grupoNovo, $org_id, $idUser) {
// Determine o grupo oposto
$grupoOposto = $grupoNovo === 'AGENTE' ? 'SUPERVISOR' : 'AGENTE';
// Preparar a consulta para obter os IDs dos grupos de interesse
$query = "SELECT gp_nome, gp_id FROM pbx_grupo WHERE (gp_nome = $1 OR gp_nome = $2) AND org_id = $3;";
$result = pg_query_params($dbcon, $query, array($grupoNovo, $grupoOposto, $org_id));
$valorNovo = null;
$valorOposto = null;
// Verificar e atribuir os valores dos IDs dos grupos
while ($row = pg_fetch_assoc($result)) {
if ($row['gp_nome'] === $grupoNovo) {
$valorNovo = $row['gp_id'];
} elseif ($row['gp_nome'] === $grupoOposto) {
$valorOposto = $row['gp_id'];
}
}
// Se ambos os IDs dos grupos forem encontrados, atualize o grupo do usuário
if ($valorNovo !== null && $valorOposto !== null) {
$query = "UPDATE pbx_grupo_usuario SET gp_id = $1 WHERE org_id = $2 AND gp_id = $3 AND user_id = $4;";
$result = pg_query_params($dbcon, $query, array($valorNovo, $org_id, $valorOposto, $idUser));
return $result !== false;
} else {
return false;
}
}
$smarty->assign("userExpiraSenha", $userExpiraSenha ? $userExpiraSenha : 0);
$smarty->assign("userNome", $limpaVar ? "" : $userNome);
$smarty->assign("userLogin", $limpaVar ? "" : $userLogin);
@ -237,6 +282,8 @@ $smarty->assign("acaoUser", $acaoUser);
$smarty->assign("idUser", $idUser);
$smarty->assign("dacPadrao", $dacPadrao);
$smarty->assign("penalidade", $penalidade ? $penalidade : "0");
$smarty->assign("userAgente", $userAgente ? true : false);
$smarty->assign("userSuper", $userSuper ? true : false);
$jsJQuery[] = "\$('#userLogin').change(function(){limpaEspaco(this);}) ";
$jsJQuery[] = "\$('#penalidade').keyup(function(){somenteNumeros(this);}) ";

7
templates/seguranca/usuario.tpl

@ -52,12 +52,15 @@
<th width="120" align="left">Tipo de usuário</th>
<td>
<label for="opSupervisor" style="font-size: 12px;">Supervisor</label>
<input type="radio" name="tipoUsuario" value="supervisor" id="opSupervisor">
<input type="radio" name="tipoUsuario" value="supervisor" id="opSupervisor"
{if $userSuper == 'TRUE'}checked{/if}>
<label for="opAgente" style="font-size: 12px;">Agente</label>
<input type="radio" name="tipoUsuario" value="agente" id="opAgente" checked>
<input type="radio" name="tipoUsuario" value="agente" id="opAgente"
{if $acaoUser == 'Incluir' || $userAgente == 'TRUE'}checked{/if}>
</td>
</tr>
<tr>
<th align="left">Penalidade</th>
<td><input name="penalidade" type="text" id="penalidade" value="{$penalidade}" size="5" maxlength="2"></td>

Loading…
Cancel
Save