0 AND b.gp_id = %s', $fieldsForm['gp_id']); if (RegistroInc($dbcon, $query)) { throw new Exception('Operação inválida, "Usuários" só podem ser vinculados a "Grupos"!'); } if ($result) { $cont = 0; foreach ($fieldsForm['user_id'] as $idUser) { /* * Valida se o usuario ja não pertence a outro grupo lgpd. */ if ($isLgpd && ($jaLgpd = JaInseridoLgps($idUser))) { throw new Exception($jaLgpd); } $query = "INSERT INTO pbx_grupo_usuario(user_id, gp_id, org_id) VALUES(%s, '%s', $org_id)"; $query = sprintf($query, $idUser, $fieldsForm['gp_id']); $result = pg_query($dbcon, $query); 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('Agentes incluidos com sucesso!') : fmtMsg('Agente incluido com sucesso!'); } catch (Exception $e) { pg_query($dbcon, 'rollback'); fmtErro($e->getMessage(), pg_last_error($dbcon)); } } } else if (isset($fieldsForm['btRmAgente'])) { if (empty($fieldsForm['user_inc'])) { $fieldsForm['erro'] = fmtMsg('Selecione um agente!'); } else { try { $result = pg_query($dbcon, 'begin'); if ($result) { $userAdmin = IsAdmin() || IsUserAdmin() ? 1 : 0; $cont = 0; foreach ($fieldsForm['user_inc'] as $idUser) { $query = "DELETE from pbx_grupo_usuario WHERE user_id = '%s' AND gp_id = '%s' AND user_id <> (SELECT id FROM pbx_usuarios WHERE apelido = 'administrador') AND not exists(select '' from pbx_grupo WHERE gp_id = '%s' AND gp_user = CASE WHEN(%s=0)THEN '%s' ELSE -1 END)"; //Nao permite o usuario remover o pai do grupo(quem criou). $query = sprintf($query, $idUser, $fieldsForm['gp_id'], $fieldsForm['gp_id'], $userAdmin, $idUser); $result = pg_query($dbcon, $query); 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('Agentes removidos com sucesso!') : fmtMsg('Agente removido com sucesso!'); } catch (Exception $e) { pg_query($dbcon, 'rollback'); fmtErro($e->getMessage(), pg_last_error($dbcon)); } } } $fieldsForm['user_id'] = GetUser($dbcon, $fieldsForm['gp_id'], $fieldsForm['user_id'], 8, "user_id", "240", 0, 1); $fieldsForm['listaGrupo'] = GetGrupoUser($dbcon, $fieldsForm['gp_id'], 0, 8, "user_inc", "240", 0, 1); /* * Atualiza templates templates */ foreach ($fieldsForm as $key => $value) { $smarty->assign($key, $value); } GetTemplate($smarty, $templateName); function GetGrupoUser($dbcon, $codGp, $codSel, $size = 1, $nomeLista = "user_id", $tamPx = "200", $desabilita = 0, $multiple = 0) { if (strpos($codGp, '|') !== false) { $codG = explode('|', $codGp); $codGp = $codG[0]; } $query = "SELECT b.id, b.nome || (CASE WHEN( (SELECT count(*) FROM pbx_grupo WHERE gp_id = a.gp_id AND gp_user = a.user_id) > 0)THEN '*' ELSE '' END) AS apelido, b.matricula, a.gp_id FROM pbx_grupo_usuario a, pbx_usuarios b WHERE b.id = a.user_id AND a.gp_id = $codGp ORDER BY 2"; $result = pg_query($dbcon, $query); $cont = 0; $sel = ""; $lista = '" : "\n\n"; return $lista; } function GetUser($dbcon, $codGrupo, $codSel, $size = 1, $nomeLista = "user_id", $tamPx = "200", $desabilita = 0, $multiple = 0) { $sel = ""; $org_id = GetOrganizacao(); if (strpos($codGrupo, '|') !== false) { $codG = explode('|', $codGrupo); $codGrupo = $codG[0]; } $query = "SELECT a.id, nome, apelido, matricula FROM pbx_usuarios a INNER JOIN pbx_organizacao_usuarios b ON b.id_usuario = a.id WHERE status = true AND delete_ = 0 AND a.id NOT IN(SELECT user_id FROM pbx_grupo_usuario WHERE gp_id = '$codGrupo') AND upper(apelido) <> 'ADMIN' AND upper(apelido) <> 'SINCCONTASENHA' AND b.id_organizacao = $org_id ORDER BY 2 "; $result = pg_query($dbcon, $query); $lista = '\n"; return $lista; } function JaInseridoLgps($userId) { global $dbcon; $org_id = GetOrganizacao(); $query = "SELECT c.id, c.matricula, c.nome, b.gp_id, b.gp_nome FROM pbx_grupo_usuario a INNER JOIN pbx_grupo b ON b.gp_id = a.gp_id INNER JOIN pbx_usuarios c ON c.id = a.user_id WHERE b.gp_nome ilike 'LGPD_%_%_%' AND a.user_id = '{$userId}' AND org_id = $org_id;"; $result = pg_query($dbcon, $query); if (!pg_num_rows($result)) { return false; } $row = pg_fetch_array($result); return sprintf("O usuário: %s-%s já esta incluido no grupo %s da LGDP!", $row["matricula"], $row["nome"], $row["gp_nome"]); }