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.
129 lines
4.5 KiB
129 lines
4.5 KiB
<?php |
|
|
|
require('funcoesFormulario.php'); |
|
$templateName = 'cadastros/organizacao/atribuirOrganizacao.tpl'; |
|
//define tipo de formulario |
|
$tpLayout = 1; |
|
$fieldsForm = IsPostBack() ? $_POST : $_GET; |
|
$idOrg = $_GET['id'] ? $_GET['id'] : $_POST['id']; |
|
|
|
/** |
|
* INFORMAÇÕES DO HTML DO SELECT |
|
*/ |
|
$infos = [ |
|
'size' => 8, |
|
'name' => 'usuarioEmpresa', |
|
'width' => '200', |
|
'disable' => '0', |
|
'multiple' => '1' |
|
]; |
|
if (isset($fieldsForm['btInclui'])) { |
|
AtualizaEmpresa($dbcon, $fieldsForm['usuarioEmpresainc'], 1, $idOrg); |
|
} else if (isset($fieldsForm['btRemove'])) { |
|
AtualizaEmpresa($dbcon, $fieldsForm['usuarioEmpresarm'], 0, $idOrg); |
|
} |
|
|
|
$fieldsForm['listagrupos'] = GetUser($dbcon, 1, $infos, $idOrg); |
|
$fieldsForm['gruposinc'] = GetEmpresaUser($dbcon, 1, $infos, $idOrg); |
|
|
|
/* |
|
* Atualiza templates templates |
|
*/ |
|
foreach ($fieldsForm as $key => $value) { |
|
$smarty->assign($key, $value); |
|
} |
|
|
|
GetTemplate($smarty, $templateName); |
|
|
|
function GetUser($dbcon, $codSel, $infos, $idOrg) |
|
{ |
|
$sel = ""; |
|
$infos['name'] = $infos['name'] . "inc"; |
|
|
|
$query = "SELECT DISTINCT id, apelido |
|
FROM pbx_usuarios WHERE id |
|
NOT IN (SELECT id_usuario FROM pbx_organizacao_usuarios WHERE id_organizacao = $idOrg) |
|
AND id NOT IN (341,356,357,462,466,467);"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
|
|
$lista = '<select name="%s%s" id="%s" size="%s" style="width:%spx" %s >%s'; |
|
$lista = sprintf($lista, $infos['name'], ($infos['multiple'] ? "[]" : ""), $infos['name'], $infos['size'], $infos['width'], ($infos['multiple'] ? 'multiple="multiple"' : ''), "\n"); |
|
while ($row = pg_fetch_array($result)) { |
|
$sel = ($codSel == $row["apelido"]) ? "selected" : ""; |
|
$lista .= "<option value=\"{$row["id"]}\" $sel>{$row["apelido"]}</option>\n"; |
|
} |
|
$lista .= "</select>\n"; |
|
return $lista; |
|
} |
|
|
|
function GetEmpresaUser($dbcon, $codSel, $infos, $idOrg) |
|
{ |
|
$sel = ""; |
|
$infos['name'] = $infos['name'] . "rm"; |
|
|
|
$query = "SELECT DISTINCT pu.id, pu.apelido |
|
FROM pbx_usuarios pu |
|
INNER JOIN pbx_organizacao_usuarios pou on pou.id_usuario = pu.id |
|
INNER JOIN pbx_organizacao po on po.id = pou.id_organizacao |
|
WHERE pu.id NOT IN (341,356,357,462,466,467) |
|
AND pu.id IN (SELECT id_usuario FROM pbx_organizacao_usuarios WHERE id_organizacao = {$idOrg});"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
|
|
$lista = '<select name="%s%s" id="%s" size="%s" style="width:%spx;" %s>%s'; |
|
$lista = sprintf($lista, $infos['name'], ($infos['multiple'] ? "[]" : ""), $infos['name'], $infos['size'], $infos['width'], ($infos['multiple'] ? 'multiple="multiple"' : ''), "\n"); |
|
|
|
while (($row = @pg_fetch_array($result))) { |
|
$sel = ($codSel == $row["id"]) ? "selected" : ""; |
|
$lista .= "<option value=\"{$row["id"]}\" $sel>{$row["apelido"]}</option>\n"; |
|
} |
|
$lista .= "</select>"; |
|
return $lista; |
|
} |
|
|
|
|
|
function AtualizaEmpresa($dbcon, $field, $status, $idOrg) |
|
{ |
|
try { |
|
if (!$field) { |
|
throw new Exception('Selecione um usuário'); |
|
} |
|
|
|
pg_query($dbcon, 'begin'); |
|
foreach ($field as $idUser) { |
|
$query = sprintf("SELECT *, NOW() as current_time FROM pbx_usuarios where id = %d ", $idUser); |
|
$result = pg_query($dbcon, $query); |
|
|
|
if ($result && pg_num_rows($result) > 0) { |
|
$result = pg_fetch_assoc($result); |
|
if ($status == 1) { |
|
$query = sprintf("INSERT INTO pbx_organizacao_usuarios (id_usuario, id_organizacao) VALUES (%s, %s); ", $idUser, $idOrg); |
|
$resposta = pg_query($dbcon, $query); |
|
if ($resposta) { |
|
$resposta = pg_query($dbcon, "commit"); |
|
} else { |
|
throw new Exception("Erro ao inserir!"); |
|
} |
|
} |
|
|
|
if ($status == 0) { |
|
$query = sprintf("DELETE FROM pbx_organizacao_usuarios WHERE id_usuario = %s AND id_organizacao = %s;", $idUser, $idOrg); |
|
$resposta = pg_query($dbcon, $query); |
|
if ($resposta) { |
|
$resposta = pg_query($dbcon, "commit"); |
|
} else { |
|
throw new Exception("Erro ao remover!$idUser, $idOrg"); |
|
} |
|
} |
|
} |
|
} |
|
|
|
if (!@pg_query($dbcon, 'commit')) { |
|
throw new Exception('A operação não pode ser realizada!'); |
|
} |
|
} catch (Exception $e) { |
|
@pg_query($dbcon, 'rollback'); |
|
fmtErro($e->getMessage(), pg_last_error($dbcon)); |
|
} |
|
}
|
|
|