PABX da Simples IP
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.

522 lines
16 KiB

<?php
function AcaoRamal_Asterisk($dbcon, $acaoDest, $org_id){
$query = "select registro from pbx_ramais where org_id = $1 and nome = $2";
pg_prepare($dbcon, "opcao_ramal", $query);
$result = pg_execute( $dbcon, "opcao_ramal", array($org_id, $acaoDest ) );
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados["registro"];
}
function AcaoURA_Asterisk($dbcon, $acaoDest, $org_id){
$ura = explode("-", $acaoDest, 2);
$query = "SELECT id_asterisk, nome FROM pbx_ura where org_id = $1 and id = $2 and nome = $3";
pg_prepare($dbcon, "ura_asterisk", $query);
$result = pg_execute( $dbcon, "ura_asterisk", array($org_id, $ura[0], $ura[1]));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return "{$dados['id_asterisk']}-{$dados['name']}";
}
function AcaoVoice_Asterisk($dbcon, $acaoDest, $org_id){
$caixa_postal = explode( "/", $acaoDest, 2 );
$query = "SELECT caixa_postal_asterisk FROM pbx_voicemail_usuarios where org_id = $1 and caixa_postal = $2";
pg_prepare($dbcon, "voice_asterisk", $query);
$result = pg_execute( $dbcon, "voice_asterisk", array($org_id, $caixa_postal[0]));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return "{$dados['caixa_postal_asterisk']}/$caixa_postal[1]";
}
function Acaogrupo_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_grupos where org_id = $1 and numero = $2 order by id asc";
pg_prepare($dbcon, "grupo_asterisk", $query);
$result = pg_execute( $dbcon, "voice_asterisk", array($org_id, $acaoDest));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return "{$dados['numero_asterisk']}";
}
function AcaoFilas_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT numero_asterisk FROM pbx_queues_grupos where status='A' and org_id = $1 and numero = $2";
pg_prepare($dbcon, "filas_asterisk", $query);
$result = pg_execute( $dbcon, "filas_asterisk", array($org_id, $acaoDest));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return "{$dados['numero_asterisk']}";
}
function AcaoHorarios_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT distinct a.id_asterisk from pbx_horarios a, pbx_horarios_itens b where a.org_id = $1 and a.org_id = b.org_id and b.id_horario = a.id and a.id = $2 order by nome asc";
pg_prepare($dbcon, "horario_asterisk", $query);
$result = pg_execute($dbcon, "horario_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return "{$dados['id_asterisk']}";
}
function AcaoDisa_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_disa where org_id = $1 and numero = $2";
pg_prepare($dbcon, "disa_asterisk", $query);
$result = pg_execute($dbcon, "disa_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return "$org_id{$dados['numero_asterisk']}";
}
function AcaoAnuncios_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_anuncios where org_id = $1 and id = $2 order by nome asc";
pg_prepare($dbcon, "anuncios_asterisk", $query);
$result = pg_execute($dbcon, "anuncios_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados['id_asterisk'];
}
function AcaoConferencia_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_conferencia where org_id = $1 and numero = $2 order by numero asc";
pg_prepare($dbcon, "conferencia_asterisk", $query);
$result = pg_execute($dbcon, "conferencia_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados['numero_asterisk'];
}
function AcaoCallback_Asterisk($dbcon, $acaoDest, $org_id){
$query = "SELECT distinct id_asterisk, descricao FROM pbx_callback where org_id = $1 and id = $2 order by descricao";
pg_prepare($dbcon, "callback_asterisk", $query);
$result = pg_execute($dbcon, "callback_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados['id_asterisk'];
}
function Acaointegativa_Asterisk($dbcon, $acaoDest, $org_id){
$query = "select b.itgm_id_asterisk as itgm_id_asterisk, a.itgc_nome || '-' || b.itgm_nome as itgc_nome
from pbx_integracao_configuracao a, pbx_integracao_metodo b
where org_id = $1 and b.itgm_id = $2 and b.itgc_id = a.itgc_id and b.itgm_retorno = 1 order by a.itgc_nome, b.itgm_nome";
pg_prepare($dbcon, "integrativa_asterisk", $query);
$result = pg_execute($dbcon, "integrativa_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados['itgm_id_asterisk'];
}
function AcaoRotaInterna_Asterisk($dbcon, $acaoDest, $org_id){
$query = "select b.modelo as id, b.modelo as nome
from pbx_rotas_saida a, pbx_rotas_saida_modelos b
where org_id = {$org_id} and b.id_rota = a.id
and upper(a.tipo) = 'I' and b.modelo = '$acaoDest'
order by 1;";
pg_prepare($dbcon, "rotainterna_asterisk", $query);
$result = pg_execute($dbcon, "rotainterna_asterisk", array( $org_id, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados['id'];
}
function AcaoRepetir_Asterisk( ){
return "repetir";
}
function AcaoDesligar_Asterisk( ){
return "desligar";
}
function AcaoDepartamento_Asterisk($dbcon, $acaoDest, $org_id, $idEmpresa){
$query = "SELECT * FROM pbx_departamentos where org_id = $1 and empresa = $2 and id = $acaoDest order by id asc";
pg_prepare($dbcon, "departamento_asterisk", $query);
$result = pg_execute($dbcon, "departamento_asterisk", array( $org_id, $idEmpresa, $acaoDest ));
if( $result === false ){
return false;
}
$dados = pg_fetch_array($result);
return $dados['id_asterisk'];
}
function Acoes_asterisk($dbcon, $opcao, $acaoDest, $opcao2=0, $idEmpresa = 0){
$org_id = $_SESSION['SSEmpresaPadrao'];
$result = match($opcao){
"ramal" => AcaoRamal_Asterisk( $dbcon, $acaoDest, $org_id),
"ura" => AcaoURA_Asterisk($dbcon, $acaoDest, $org_id),
"voice" => AcaoVoice_Asterisk($dbcon, $acaoDest, $org_id),
"grupo" => Acaogrupo_Asterisk($dbcon, $acaoDest, $org_id),
"filas" => AcaoFilas_Asterisk($dbcon, $acaoDest, $org_id),
"horarios" => AcaoHorarios_Asterisk($dbcon, $acaoDest, $org_id),
"disa" => AcaoDisa_Asterisk($dbcon, $acaoDest, $org_id),
"anuncios" => AcaoAnuncios_Asterisk($dbcon, $acaoDest, $org_id),
"conferencia" => AcaoConferencia_Asterisk($dbcon, $acaoDest, $org_id),
"callback" => AcaoCallback_Asterisk($dbcon, $acaoDest, $org_id),
"integativa" => Acaointegativa_Asterisk($dbcon, $acaoDest, $org_id),
"rotaInterna" => AcaoRotaInterna_Asterisk($dbcon, $acaoDest, $org_id),
"repetir" => AcaoRepetir_Asterisk( ),
"desligar" => AcaoDesligar_Asterisk( )
};
if ($opcao2 == "departamento") {
return AcaoDepartamento_Asterisk($dbcon, $acaoDest, $org_id, $idEmpresa);
}
return $result;
}
function AcaoRamalExist($dbcon, $acaoDest, $org_id){
$query = "select nome from pbx_ramais where org_id = $1 and nome = $2";
pg_prepare($dbcon, "opcao_ramal", $query);
$result = pg_execute( $dbcon, "opcao_ramal", array($org_id, $acaoDest ) );
if( $result === false ){
return false;
}
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoURAExist($dbcon, $acaoDest, $org_id){
$ura = explode("-", $acaoDest, 2);
$query = "SELECT id, nome FROM pbx_ura where org_id = {$org_id} and id = {$ura[0]} and nome = '{$ura[1]}'";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoVoiceExist($dbcon, $acaoDest, $org_id){
$caixa_postal = explode( "/", $acaoDest, 2 );
$compara1 = strcasecmp("ocupado", $caixa_postal[1] );
$compara2 = strcasecmp("ausente", $caixa_postal[1] );
$compara3 = strcasecmp("silencio", $caixa_postal[1] );
if( $compara1 != 0 && $compara2 != 0 && $compara3 != 0 ){
return false;
}
$query = "SELECT caixa_postal FROM pbx_voicemail_usuarios where org_id = {$org_id} and caixa_postal = '$caixa_postal[0]'";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaogrupoExist($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_grupos where org_id = {$org_id} and numero = '$acaoDest' order by id asc";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoFilasExist($dbcon, $acaoDest, $org_id){
$query = "SELECT numero FROM pbx_queues_grupos where status='A' and org_id = {$org_id} and numero = '$acaoDest'";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoHorariosExist($dbcon, $acaoDest, $org_id){
$query = "SELECT distinct a.id from pbx_horarios a, pbx_horarios_itens b where a.org_id = {$org_id} and a.org_id = b.org_id and b.id_horario = a.id and a.id = $acaoDest order by nome asc";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoDisaExist($dbcon, $acaoDest, $org_id){
$query = "SELECT numero FROM pbx_disa where org_id = {$org_id} and numero = '$acaoDest'";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoAnunciosExist($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_anuncios where org_id = {$org_id} and id = $acaoDest order by nome asc";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoConferenciaExist($dbcon, $acaoDest, $org_id){
$query = "SELECT * FROM pbx_conferencia where org_id = {$org_id} and numero = $acaoDest order by numero asc";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoCallbackExist($dbcon, $acaoDest, $org_id){
$query = "SELECT distinct id, descricao FROM pbx_callback where org_id = {$org_id} and id = $acaoDest order by descricao ";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaointegativaExist($dbcon, $acaoDest, $org_id){
$query = "select b.itgm_id as itgm_id, a.itgc_nome || '-' || b.itgm_nome as itgc_nome
from pbx_integracao_configuracao a, pbx_integracao_metodo b
where org_id = {$org_id} and b.itgm_id = $acaoDest and b.itgc_id = a.itgc_id and b.itgm_retorno = 1 order by a.itgc_nome, b.itgm_nome";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
function AcaoRotaInternaExist($dbcon, $acaoDest, $org_id){
$query = "select b.modelo as id, b.modelo as nome
from pbx_rotas_saida a, pbx_rotas_saida_modelos b
where org_id = {$org_id} and b.id_rota = a.id
and upper(a.tipo) = 'I' and b.modelo = '$acaoDest'
order by 1";
$result2 = pg_query($dbcon, $query);
if ( pg_num_rows($result2) > 0){
return true;
}
return false;
}
function AcaoRepetirExist($acaoDest){
if(!strcmp( "repetir", $acaoDest )){
return true;
}
return false;
}
function AcaoDesligarExist($acaoDest){
if(!strcmp( "desligar", $acaoDest) ){
return true;
}
return false;
}
/* empresa de PBX -> cadastro -> outros -> empresa */
function AcaoDepartamentoExist($dbcon, $acaoDest, $org_id, $idEmpresa){
$query = "SELECT * FROM pbx_departamentos where org_id = {$org_id} and empresa = '$idEmpresa' and id = $acaoDest order by id asc";
$result = pg_query($dbcon, $query);
if ( pg_num_rows($result) > 0){
return true;
}
return false;
}
/*Verifica se as op<EFBFBD><EFBFBD>es informado pelo usu<EFBFBD>rio existe no banco de dados */
/* empresa de PBX -> cadastro -> outros -> empresa */
function AcoesExist($dbcon, $opcao, $acaoDest, $opcao2=0, $idEmpresa=0){
$org_id = $_SESSION['SSEmpresaPadrao'];
$result = false;
$result = match($opcao){
"ramal" => AcaoRamalExist( $dbcon, $acaoDest, $org_id),
"ura" => AcaoURAExist($dbcon, $acaoDest, $org_id),
"voice" => AcaoVoiceExist($dbcon, $acaoDest, $org_id),
"grupo" => AcaogrupoExist($dbcon, $acaoDest, $org_id),
"filas" => AcaoFilasExist($dbcon, $acaoDest, $org_id),
"horarios" => AcaoHorariosExist($dbcon, $acaoDest, $org_id),
"disa" => AcaoDisaExist($dbcon, $acaoDest, $org_id),
"anuncios" => AcaoAnunciosExist($dbcon, $acaoDest, $org_id),
"conferencia" => AcaoConferenciaExist($dbcon, $acaoDest, $org_id),
"callback" => AcaoCallbackExist($dbcon, $acaoDest, $org_id),
"integativa" => AcaointegativaExist($dbcon, $acaoDest, $org_id),
"rotaInterna" => AcaoRotaInternaExist($dbcon, $acaoDest, $org_id),
"repetir" => AcaoRepetirExist($acaoDest),
"desligar" => AcaoDesligarExist($acaoDest)
};
if ($opcao2 == "departamento") {
return AcaoDepartamentoExist($dbcon, $acaoDest, $org_id, $idEmpresa);
}
return $result;
}
function _GetOpcoes($conn, $opcao, $incDesligar = 0, $incApi = 1, $notview = [])
{
$query = "select value, name from pbx_opcoes where 1=1 ";
if (!$incDesligar) {
$query .= " and value not in ('repetir','desligar') ";
}
if (!$incApi) {
$query .= " and value <> 'integativa' ";
}
$query .= " order by name";
$result = pg_query($conn, $query);
$sel = !$opcao ? "selected" : "";
$ret = sprintf("<option value=\"\" %s>----------</option>\n", $sel);
while ($dados = pg_fetch_array($result)) {
if (!in_array($dados['value'], $notview)) {
$sel = ($opcao == $dados['value']) ? "selected" : "";
$ret .= sprintf("<option value=\"%s\" %s>%s</option>\n", $dados['value'], $sel, $dados['name']);
}
}
return $ret;
}
function _GetIntegracaoMetodo($conn, $opcao = '')
{
$query = "SELECT b.itgm_id AS itgm_id, a.itgc_nome || '-' || b.itgm_nome AS itgc_nome
FROM pbx_integracao_configuracao a, pbx_integracao_metodo b
WHERE b.itgc_id = a.itgc_id
AND b.itgm_retorno = 0 AND b.itgm_nome <> 'NOEXEC' ";
$query .= " AND a.org_id = " . GetOrganizacao();
$query .= " ORDER BY a.itgc_nome, b.itgm_nome";
$result = pg_query($conn, $query);
$sel = $opcao == '' ? 'selected="selected"' : '';
$ret = sprintf("<option value=\"0\" %s>----------</option>\n", $sel);
while ($dados = pg_fetch_array($result)) {
$sel = ($opcao == $dados['itgm_id']) ? "selected" : "";
$ret .= sprintf("<option value=\"%s\" %s>%s</option>\n", $dados['itgm_id'], $sel, $dados['itgc_nome']);
}
return $ret;
}