|
|
<?php |
|
|
|
|
|
define('CONF_PATH_LOG_DISCADORCLIENT', '/var/log/asterisk/discadorclient.log'); |
|
|
|
|
|
/* |
|
|
* To change this template, choose Tools | Templates |
|
|
* and open the template in the editor. |
|
|
*/ |
|
|
|
|
|
function GetQryStatusChamadas($useAgt = true) { |
|
|
$matricula = $_SESSION["SSmatriculaUser"]; |
|
|
$dac = $_SESSION[AGT_DAC_CONECT]; |
|
|
$query = "SELECT fila |
|
|
,ABANDONADAS |
|
|
,ATENDIDAS_PA |
|
|
,ESPERA |
|
|
,round( CASE WHEN(ESPERA = 0)THEN 0 ELSE (TEMPO_ESPERA / ESPERA) END ) * INTERVAL '1 SECOND' AS TME |
|
|
,round( CASE WHEN(ATENDIDAS_PA = 0)THEN 0 ELSE (TEMPO_ATENDIMENTO / ATENDIDAS_PA)END) * INTERVAL '1 SECOND' AS TMA |
|
|
,TEMPO_ESPERA |
|
|
,TEMPO_ATENDIMENTO |
|
|
,TEMPO_ABANDONO |
|
|
FROM ( |
|
|
SELECT fila |
|
|
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS |
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') THEN 1 ELSE 0 END) AS ATENDIDAS_PA |
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND to_number(param1,'999999999') > '3' THEN 1 ELSE 0 END) AS ESPERA |
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND to_number(param1,'999999999') > '1' THEN to_number(param1,'999999999') ELSE 0 END) AS TEMPO_ESPERA |
|
|
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER') AND to_number(param2,'999999999') > '1' THEN to_number(param2,'999999999') ELSE 0 END) AS TEMPO_ATENDIMENTO |
|
|
,SUM (CASE WHEN( (EVENTO = 'ABANDON') AND (to_number(param2,'999999999') > '1') ) THEN to_number(param3,'999999999') ELSE 0 END) AS TEMPO_ABANDONO |
|
|
FROM ( |
|
|
SELECT |
|
|
a.calldate,b.fila,b.evento,b.param1,b.param2,b.param3,b.param4 |
|
|
FROM ast_bilhetes a |
|
|
INNER JOIN ast_eventos_dacs b on b.uid2 = a.uniqueid |
|
|
WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER','CONNECT','ENTERQUEUE') |
|
|
AND a.lastapp <> 'Transferred Call' |
|
|
AND a.data_bilhete = now()::date "; |
|
|
if ($useAgt) |
|
|
$query .= " AND substring(b.agente, 7,4) = '$matricula' "; |
|
|
$query .= " AND b.fila = (select nome from pbx_dacs where id = $dac) |
|
|
) AS DADOS |
|
|
GROUP BY FILA |
|
|
) AS DADOS |
|
|
"; |
|
|
return $query; |
|
|
} |
|
|
|
|
|
function GetQryInfoGeral() { |
|
|
$dac = $_SESSION[AGT_DAC_CONECT_DESC]; |
|
|
return "select abandonadas, espera from pbx_supervisor_dacs where upper(trim(dac)) = upper(trim('$dac')) "; |
|
|
//atendidas, abandonadas, espera, (tempo_espera * (interval '1 second')) as tempo_espera, cast(percentual_nivel_servico as varchar) || '%' as tempo_nivel_servico |
|
|
} |
|
|
|
|
|
function GetQryInfoChamadasCorrente() { |
|
|
$matricula = $_SESSION["SSmatriculaUser"]; |
|
|
//$dac = $_SESSION[AGT_DAC_CONECT_DESC]; |
|
|
return "select ramal, matricula, nome, (LOCALTIMESTAMP(0) - tempo_login) as tempo_login, modo_atendimento, origem_destino, status, (LOCALTIMESTAMP(0) - duracao) as duracao, |
|
|
uniqueid from pbx_supervisor_agentes |
|
|
where matricula = '$matricula' "; |
|
|
} |
|
|
|
|
|
function DispRel($smarty, $tpl) { |
|
|
$smarty->display($tpl); |
|
|
} |
|
|
|
|
|
function GetStChamada($db, &$tme, &$tma, &$atd, &$fila) { |
|
|
$result = pg_query($db, GetQryStatusChamadas()); |
|
|
$st = @pg_num_rows($result) > 0; |
|
|
$dados = @pg_fetch_array($result); |
|
|
$tme = $st ? $dados["tme"] : "0"; |
|
|
$tma = $st ? $dados["tma"] : "0"; |
|
|
$atd = $st ? $dados["atendidas_pa"] : "0"; |
|
|
$fila = $dados["fila"]; |
|
|
} |
|
|
|
|
|
function GetInfoChamada($db, &$stAgtAtende, &$lgd, &$dura, &$qtFila, &$fone, &$abd, &$unqId) { |
|
|
|
|
|
$result = pg_query($db, GetQryInfoGeral()); |
|
|
$st = @pg_num_rows($result) > 0; |
|
|
$dados = @pg_fetch_array($result); |
|
|
$qtFila = $st ? $dados["espera"] : "0"; |
|
|
|
|
|
$result = pg_query($db, GetQryStatusChamadas(false)); |
|
|
$st = @pg_num_rows($result) > 0; |
|
|
$dados = @pg_fetch_array($result); |
|
|
$abd = $st ? $dados["abandonadas"] : "0"; |
|
|
|
|
|
$result = pg_query($db, GetQryInfoChamadasCorrente()); |
|
|
$st = @pg_num_rows($result) > 0; |
|
|
$dados = @pg_fetch_array($result); |
|
|
$unqId = $dados["uniqueid"]; |
|
|
$lgd = $st ? $dados["tempo_login"] : "0"; |
|
|
$stAgtAtende = $st ? $dados["status"] : "0"; |
|
|
$dura = $st && $dados["origem_destino"] ? $dados["duracao"] : "0"; |
|
|
$fone = ($st && $dados["origem_destino"]) || (strtoupper($dados["status"]) == "OCUPADO") ? (empty($dados["origem_destino"]) ? "-" : $dados["origem_destino"]) : "Livre"; |
|
|
$_SESSION[RAMAL_DESTINO] = $fone; |
|
|
} |
|
|
|
|
|
function UpdateLogoff($db) { |
|
|
$idLogoff = $_SESSION[AGT_ID_LOGIN]; |
|
|
$matricula = GetMatricula(); |
|
|
|
|
|
$query = "update pbx_supervisor_agentes |
|
|
set logado = now() |
|
|
where matricula = '$matricula'"; |
|
|
$result = pg_query($db, $query); |
|
|
|
|
|
$query = "update pbx_eventos_agentes |
|
|
set logoff = now(), |
|
|
flag = 1 |
|
|
where id = $idLogoff"; |
|
|
pg_query($db, $query); |
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' "; |
|
|
|
|
|
//echo $query; |
|
|
|
|
|
$result = pg_query($db, $query); |
|
|
$row = @pg_fetch_row($result); |
|
|
if ((!$row[0] && DesConectaAgente($db, 0)) || (GetPausa($db, GetMatricula()))) { |
|
|
echo "999"; |
|
|
} |
|
|
} |
|
|
|
|
|
function UpdatePausa($db) { |
|
|
if (AgentePausa()) { |
|
|
$idPausa = $_SESSION[AGT_ID_PAUSA]; |
|
|
|
|
|
$query = "update pbx_eventos_agentes |
|
|
set saida_pausa = now(), |
|
|
flag = 1 |
|
|
where id = $idPausa "; |
|
|
pg_query($db, $query); |
|
|
} |
|
|
} |
|
|
|
|
|
function AgentePausa() { |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and upper(status) = 'PAUSA' "; |
|
|
$result = pg_query($query); |
|
|
$row = @pg_fetch_row($result); |
|
|
return $row[0]; |
|
|
} |
|
|
|
|
|
function AgenteLivre() { |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and upper(status) = 'LIVRE' "; |
|
|
$result = pg_query($query); |
|
|
$row = @pg_fetch_row($result); |
|
|
return $row[0]; |
|
|
} |
|
|
|
|
|
function AgtAtivaControles($status) { |
|
|
$arControlesAgt = array(); |
|
|
$arControlesAgt["btConDac"] = false; |
|
|
$arControlesAgt["listaDacs"] = false; |
|
|
$arControlesAgt["listaClas"] = false; |
|
|
$arControlesAgt["listaItem"] = false; |
|
|
$arControlesAgt["listaMotivo"] = false; |
|
|
$arControlesAgt["rbModoAtend"] = false; |
|
|
$arControlesAgt["btPausa"] = false; |
|
|
$arControlesAgt["btCliente"] = false; |
|
|
$arControlesAgt["txtCliente"] = false; |
|
|
$arControlesAgt["bt_classifica"] = false; |
|
|
switch ($status) { |
|
|
case AGT_STATUS_OFF: |
|
|
$arControlesAgt["btConDac"] = true; |
|
|
$arControlesAgt["listaDacs"] = true; |
|
|
$arControlesAgt["rbModoAtend"] = true; |
|
|
break; |
|
|
case AGT_STATUS_PAUSA: |
|
|
$arControlesAgt["listaClas"] = true; |
|
|
$arControlesAgt["listaItem"] = true; |
|
|
$arControlesAgt["btPausa"] = true; |
|
|
$arControlesAgt["btCliente"] = true; |
|
|
$arControlesAgt["txtCliente"] = true; |
|
|
$arControlesAgt["bt_classifica"] = true; |
|
|
break; |
|
|
case AGT_STATUS_LIVRE: |
|
|
$arControlesAgt["btConDac"] = true; |
|
|
$arControlesAgt["btPausa"] = true; |
|
|
$arControlesAgt["listaMotivo"] = true; |
|
|
break; |
|
|
case AGT_STATUS_OCUPADO: |
|
|
$arControlesAgt["btConDac"] = true; |
|
|
$arControlesAgt["listaClas"] = true; |
|
|
$arControlesAgt["listaItem"] = true; |
|
|
$arControlesAgt["btPausa"] = true; |
|
|
$arControlesAgt["btCliente"] = true; |
|
|
$arControlesAgt["txtCliente"] = true; |
|
|
$arControlesAgt["bt_classifica"] = true; |
|
|
break; |
|
|
case AGT_STATUS_ORIGNANDO: |
|
|
break; |
|
|
case AGT_STATUS_CHAMANDO: |
|
|
break; |
|
|
} |
|
|
return $arControlesAgt; |
|
|
} |
|
|
|
|
|
function ConvertStatusStr($status) { |
|
|
$status = strtoupper($status); |
|
|
|
|
|
if ($status == "LIVRE") |
|
|
return AGT_STATUS_LIVRE; |
|
|
if ($status == "OCUPADO") |
|
|
return AGT_STATUS_OCUPADO; |
|
|
if ($status == "PAUSA") |
|
|
return AGT_STATUS_PAUSA; |
|
|
if ($status == "CHAMANDO") |
|
|
return AGT_STATUS_CHAMANDO; |
|
|
if ($status == "ORIGINANDO") |
|
|
return AGT_STATUS_ORIGNANDO; |
|
|
return AGT_STATUS_OFF; |
|
|
} |
|
|
|
|
|
function SetLoginMotivo($motivoLogin) { |
|
|
$_SESSION['PAUSA_LOGIN'] = $motivoLogin; |
|
|
} |
|
|
|
|
|
function GetMotivoPausa() { |
|
|
global $dbcon; |
|
|
$matricula = GetMatricula(); |
|
|
$query = "SELECT motivo_pausa FROM pbx_supervisor_agentes WHERE matricula = '$matricula'"; |
|
|
$resp = pg_query($dbcon, $query); |
|
|
$row = pg_fetch_assoc($resp); |
|
|
return strtoupper($row['motivo_pausa']); |
|
|
} |
|
|
|
|
|
function GetPausaLogin() { |
|
|
return $_SESSION['PAUSA_LOGIN']; |
|
|
} |
|
|
|
|
|
function CarregaMunicipios($db) { |
|
|
$query = "select uf from pbx_uf order by 1"; |
|
|
$result = pg_query($db, $query); |
|
|
|
|
|
$ufs = ""; |
|
|
$mun = ""; |
|
|
while ($dados = @pg_fetch_row($result)) { |
|
|
$uf = $dados[0]; |
|
|
|
|
|
$ufs .= empty($ufs) ? "['$uf'," : ",['$uf',"; |
|
|
$query = "select mun_id as uf, mun_nome from pbx_municipio_classifica where uf = '$uf' order by uf, mun_nome"; |
|
|
$resultItem = pg_query($db, $query); |
|
|
$mun = ""; |
|
|
while ($dadosItem = @pg_fetch_row($resultItem)) { |
|
|
$munUf = $dadosItem[0]; |
|
|
$munDesc = str_replace("'", " ", $dadosItem[1]); |
|
|
$mun .= empty($mun) ? "'$munUf;$munDesc'" : ",'$munUf;$munDesc'"; |
|
|
} |
|
|
$ufs .= "[$mun]]\n"; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$ufs = "var ufs = [$ufs];\n\n\n"; |
|
|
|
|
|
$ufs .= "function CarregaMunicipios() |
|
|
{ |
|
|
var listaUfs = document.getElementById(\"listaUfs\"); |
|
|
var listMun = document.getElementById(\"listaMun\"); |
|
|
var ufValue = listaUfs.options[listaUfs.selectedIndex].value; |
|
|
var posicao = 0; |
|
|
listMun.length = 0; |
|
|
|
|
|
if(ufValue == 0) |
|
|
{ |
|
|
listMun.options.length = 0; |
|
|
listMun.options[posicao] = new Option('----------', 0); |
|
|
} |
|
|
else |
|
|
{ |
|
|
for(i = 0; i < ufs.length; i++) |
|
|
{ |
|
|
var item = ufs[i]; |
|
|
if(item[0] == ufValue) |
|
|
{ |
|
|
var itens = item[1]; |
|
|
for(j = 0; j < itens.length; j++) |
|
|
{ |
|
|
var valItens = itens[j].split(';'); |
|
|
listMun.options[posicao++] = new Option(valItens[1], valItens[0]); |
|
|
if(j == 0){ munId = valItens[0]; } |
|
|
} |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
if(ufValue == 0)munId = 0; |
|
|
}"; |
|
|
|
|
|
$GLOBALS["jsStartup"][] = $ufs; |
|
|
} |
|
|
|
|
|
function CarregaClassificacao($db, $dacSel) { |
|
|
$query = " SELECT distinct c.id_dac, a.clas_id, a.clas_descricao |
|
|
FROM pbx_classifica_atendimento a, pbx_classifica_item b, pbx_classifica_dacs c |
|
|
where b.clas_id = a.clas_id |
|
|
and c.clas_id = a.clas_id |
|
|
and a.clas_status = 1 |
|
|
order by 3"; |
|
|
$result = pg_query($db, $query); |
|
|
|
|
|
$clas = ""; |
|
|
$item = ""; |
|
|
while ($dados = @pg_fetch_row($result)) { |
|
|
$dac = $dados[0]; |
|
|
$id = $dados[1]; |
|
|
$desc = str_replace("'", "\\'", $dados[2]); |
|
|
|
|
|
$clas .= empty($clas) ? "['$dac', '$id','$desc'," : ",['$dac', '$id','$desc',"; |
|
|
$query = " SELECT clas_id, clit_id, clit_descricao FROM pbx_classifica_item where clas_id = $id and clit_status = 1 order by 3"; |
|
|
$resultItem = pg_query($db, $query); |
|
|
$item = ""; |
|
|
while ($dadosItem = @pg_fetch_row($resultItem)) { |
|
|
$idItem = $dadosItem[1]; |
|
|
$descItem = str_replace("'", "\\'", $dadosItem[2]); |
|
|
$item .= empty($item) ? "'$idItem;$descItem'" : ",'$idItem;$descItem'"; |
|
|
} |
|
|
$clas .= "[$item]]\n"; |
|
|
} |
|
|
|
|
|
$clas = "var clas = [$clas];\n\n"; |
|
|
|
|
|
$clas .= "function GetAgtClassifica(dac) |
|
|
{ |
|
|
var listClas = document.getElementById(\"listaClas\"); |
|
|
var posicao = 0; |
|
|
listClas.options[posicao] = new Option('----------', 0); |
|
|
|
|
|
for(i = 0; i < clas.length; i++) |
|
|
{ |
|
|
var item = clas[i]; |
|
|
if(item[0] == dac) |
|
|
{ |
|
|
listClas.options[++posicao] = new Option(item[2], item[1]); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
function GetAgtClasItem(clasValue) |
|
|
{ |
|
|
var listaClasItem = document.getElementById(\"listaClasItem\"); |
|
|
var posicao = 0; |
|
|
listaClasItem.options.length = 0; |
|
|
listaClasItem.options[posicao] = new Option('----------', 0); |
|
|
posicao++; |
|
|
|
|
|
for(i = 0; i < clas.length; i++) |
|
|
{ |
|
|
var item = clas[i]; |
|
|
if(item[1] == clasValue) |
|
|
{ |
|
|
var itens = item[3]; |
|
|
for(j = 0; j < itens.length; j++) |
|
|
{ |
|
|
var valItens = itens[j].split(';'); |
|
|
listaClasItem.options[posicao++] = new Option(valItens[1], valItens[0]); |
|
|
} |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
GetAgtClassifica($dacSel); |
|
|
"; |
|
|
|
|
|
return $clas; |
|
|
} |
|
|
|
|
|
function ___GetItem($db, $idClas, $idItem) { |
|
|
$query = " SELECT clit_id, clit_descricao FROM pbx_classifica_item where clas_id = $idClas and clit_status = 1 order by 2"; |
|
|
$result = pg_query($db, $query); |
|
|
$clas = "<select name=\"listaItem\" style=\"width:169px;\">"; |
|
|
$def = $idItem; |
|
|
if (!$idClas) |
|
|
$clas .= "<option value=\"0\" selected>Selecione a Classifica<EFBFBD><EFBFBD>o</option>"; |
|
|
else { |
|
|
while ($dados = @pg_fetch_row($result)) { |
|
|
$sel = (!$def++) || ($idItem == $dados[0]) ? "selected" : ""; |
|
|
$id = $dados[0]; |
|
|
$desc = $dados[1]; |
|
|
$clas .= "<option value=\"$id\" $sel>$desc</option>"; |
|
|
} |
|
|
} |
|
|
$clas .= "</select>"; |
|
|
|
|
|
return $clas; |
|
|
} |
|
|
|
|
|
function ConectarDac() { |
|
|
/* |
|
|
* Verifica se o usu<EFBFBD>rio clicou no botao desconectar. |
|
|
*/ |
|
|
if (!isset($_POST["btConDac"])) |
|
|
return false; |
|
|
|
|
|
return strtoupper($_POST["btConDac"]) == 'CONECTAR'; |
|
|
|
|
|
/* |
|
|
* Retorna true se o usuario n<EFBFBD>o estiver conectado. |
|
|
*/ |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' "; |
|
|
$result = pg_query($query); |
|
|
$row = @pg_fetch_row($result); |
|
|
return !$row[0]; |
|
|
} |
|
|
|
|
|
function GetAgenteDisponivelFila() { |
|
|
/* |
|
|
* Retorna true se o usuario n<EFBFBD>o estiver conectado. |
|
|
*/ |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and disponivel_atendimento = 1"; |
|
|
$result = pg_query($query); |
|
|
if (!$result || !pg_num_rows($result)) { |
|
|
return false; |
|
|
} |
|
|
$row = @pg_fetch_row($result); |
|
|
return $row[0] ? true : false; |
|
|
} |
|
|
|
|
|
function DesconectarDac() { |
|
|
/* |
|
|
* Verifica se o usu<EFBFBD>rio clicou no botao desconectar. |
|
|
*/ |
|
|
if (!isset($_POST["btConDac"])) |
|
|
return false; |
|
|
|
|
|
/* |
|
|
* Retorna true se o usu<EFBFBD>rio estiver conectado. |
|
|
*/ |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' "; |
|
|
$result = pg_query($query); |
|
|
$row = @pg_fetch_row($result); |
|
|
return $row[0]; |
|
|
} |
|
|
|
|
|
function SairDePausa() { |
|
|
return isset($_POST["btPausa"]) && AgentePausa(); |
|
|
//return isset($_POST["btPausa"]) && $_SESSION[SS_PAUSA_AGENTE]; |
|
|
} |
|
|
|
|
|
function RegistraLogAgente($metodo, $msg, $ex = null) { |
|
|
$matricula = GetMatricula(); |
|
|
$log[] = "/****************************** INICIO ****************************"; |
|
|
$log[] = sprintf("Matricula: %s", $matricula); |
|
|
$log[] = sprintf("Metodo: %s", $metodo); |
|
|
; |
|
|
$log[] = sprintf("Data: %s", Date("d-m-Y H:i:s")); |
|
|
$log[] = sprintf("Msg: %s", $msg); |
|
|
if ($ex) { |
|
|
//$log[] = sprintf("Arquivo: %s Linha: %s", $ex->getFile(), $ex->getLine()); |
|
|
$log[] = sprintf("MsgSys: %s", GetErrorLast('', 1)); |
|
|
} |
|
|
$log[] = "****************************** FIM ****************************/"; |
|
|
$file = sprintf("agentesrt%s_%s.log", ($matricula ? "_{$matricula}_" : ""), Date("Ym")); |
|
|
RegistraLog($log, $file); |
|
|
} |
|
|
|
|
|
function ArrayToStr($ar) { |
|
|
|
|
|
$strLog = ''; |
|
|
|
|
|
foreach ($ar as $key => $value) { |
|
|
|
|
|
if (is_array($value)) { |
|
|
$strLog .= !$strLog ? ("{$key}{" . ArrayToStr($value) . "}" ) : ("|{$key}{" . ArrayToStr($value) . "}"); |
|
|
} else { |
|
|
$strLog .= !$strLog ? "{$key}: $value" : "|{$key}: $value"; |
|
|
} |
|
|
} |
|
|
return $strLog; |
|
|
} |
|
|
|
|
|
function LogAgente($modulo, $msg, $data = true) { |
|
|
global $detalhaLog; |
|
|
if ($detalhaLog) { |
|
|
if ($data) { |
|
|
$msg .= " Data:[" . ArrayToStr($_REQUEST) . "]\n"; |
|
|
} |
|
|
RegistraLogAgente($modulo, $msg); |
|
|
} |
|
|
} |
|
|
|
|
|
function EntrarPausa() { |
|
|
return isset($_POST["btPausa"]) && (!AgentePausa()); |
|
|
} |
|
|
|
|
|
/* |
|
|
* Fun<EFBFBD>oes para o alerta sonoro na classifica<EFBFBD><EFBFBD>o obrigatoria. |
|
|
*/ |
|
|
|
|
|
function SetAlertAgente($stAlerta) { |
|
|
$_SESSION['SSstartAlert'] = $stAlerta; |
|
|
} |
|
|
|
|
|
function GetAlertAgente() { |
|
|
if (!isset($_SESSION['SSstartAlert'])) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
return $_SESSION['SSstartAlert']; |
|
|
} |
|
|
|
|
|
function SetAlertOcupado($status) { |
|
|
$_SESSION["SSagenteOcupdo"] = $status; |
|
|
} |
|
|
|
|
|
function GetAlertOcupado() { |
|
|
if (!isset($_SESSION['SSagenteOcupdo'])) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
return $_SESSION["SSagenteOcupdo"]; |
|
|
} |
|
|
|
|
|
function SetAlertTempo($tempo) { |
|
|
$_SESSION['SStempoAlert'] = $tempo; |
|
|
} |
|
|
|
|
|
function GetAlertTempo() { |
|
|
if (!isset($_SESSION['SStempoAlert'])) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
return $_SESSION['SStempoAlert']; |
|
|
} |
|
|
|
|
|
/* |
|
|
* Funcoes para o Discador-X. |
|
|
*/ |
|
|
|
|
|
function HabilitaDiscador() { |
|
|
return $_SESSION["prm_use_discador"]; |
|
|
} |
|
|
|
|
|
/* |
|
|
* Usa o cliente em uma nova janela quando true. |
|
|
*/ |
|
|
|
|
|
function AgenteNovaJanela() { |
|
|
return $_SESSION["prm_agente_nova_janela"]; |
|
|
} |
|
|
|
|
|
function GetCampanhaDiscador($idDac) { |
|
|
|
|
|
if (!HabilitaDiscador()) { |
|
|
return false; |
|
|
} |
|
|
$matricula = GetMatricula(); |
|
|
|
|
|
/* |
|
|
* Procura uma campanha ativa para o dac. |
|
|
*/ |
|
|
$query = "select min(a.cmp_id) |
|
|
from pbx_campanha_usuarios u |
|
|
inner join pbx_campanha a on a.cmp_id = u.cmp_id and a.cmp_status = 1 and a.id_dac = '$idDac' |
|
|
inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1 |
|
|
where u.matricula = '$matricula' and (a.cmp_tipo_campanha = 1 OR a.cmp_tipo_campanha = 9)"; |
|
|
//$query = "select a.cmp_id from pbx_campanha_usuarios u, pbx_campanha a, pbx_campanha_lista b where b.cmp_id = a.cmp_id and a.cmp_status = 1 and a.id_dac = '$idDac' and b.list_status = 1"; |
|
|
$result = pg_query($query); |
|
|
|
|
|
/* |
|
|
* Retorna false caso nao exista. |
|
|
*/ |
|
|
if (!$result || !pg_num_rows($result)) { |
|
|
return false; |
|
|
} |
|
|
$dados = pg_fetch_row($result); |
|
|
return $dados[0]; |
|
|
} |
|
|
|
|
|
function AtualizaNumDiscador($db, $contfId, $numeroDiscar) { |
|
|
global $dac; |
|
|
if (!$contfId) |
|
|
return true; |
|
|
$query = "update pbx_campanha_contato_fone set conf_discado = 1, conf_callfile = substring(now()::text, 1,19) where conf_id = %s"; |
|
|
$query = sprintf($query, QuotedStr($contfId)); |
|
|
$result = pg_query($db, $query); |
|
|
|
|
|
if (!$result || !pg_affected_rows($result)) { |
|
|
GeraExcept('0;Erro;N<EFBFBD>o foi poss<EFBFBD>vel alterar o status do numero corrente!'); |
|
|
} |
|
|
|
|
|
$dadosDiscador = GetDadosDiscador($dac, 0); |
|
|
$query = "update pbx_campanha_contato set cont_discado = 1 where cont_id = %s"; |
|
|
$query = sprintf($query, QuotedStr($dadosDiscador['cont_id'])); |
|
|
$result = pg_query($db, $query); |
|
|
|
|
|
|
|
|
$query = "update pbx_campanha_operacao set conf_id = %s, conf_fone = %s where cmpo_id = %s"; |
|
|
$query = sprintf($query, QuotedStr($contfId), QuotedStr($numeroDiscar), QuotedStr($dadosDiscador['cmpo_id'])); |
|
|
$result = pg_query($db, $query); |
|
|
|
|
|
if (!$result || !pg_affected_rows($result)) { |
|
|
GeraExcept('0;Erro;N<EFBFBD>o foi poss<EFBFBD>vel alterar os dados da operacao!'); |
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
|
|
|
function LmpaUidAgente($db, $matricula) { |
|
|
$query = "update pbx_supervisor_agentes set uniqueid2 = '' where matricula = %s"; |
|
|
$query = sprintf($query, QuotedStr($matricula)); |
|
|
return pg_query($db, $query) ? true : false; |
|
|
} |
|
|
|
|
|
function GetNumDiscadoStatus($conf_id) { |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select a.conf_id, a.cont_id, a.conf_fone, a.conf_status |
|
|
from pbx_campanha_contato_fone a, pbx_campanha_operacao b |
|
|
where b.cont_id = a.cont_id |
|
|
and b.matricula = '%s' |
|
|
and b.cmpo_status in(0,2) |
|
|
and a.conf_discado = 1 |
|
|
and a.conf_status = '0' |
|
|
and a.conf_id <> '%s'"; |
|
|
$query = sprintf($query, $matricula, $conf_id); |
|
|
$result = pg_query($query); |
|
|
|
|
|
if (!$result) { |
|
|
GeraExcept('0;Erro;N<EFBFBD>o foi poss<EFBFBD>vel verificar o status do numero discado!'); |
|
|
} |
|
|
|
|
|
if (pg_num_rows($result)) { |
|
|
return pg_fetch_array($result, null, PGSQL_ASSOC); |
|
|
} |
|
|
|
|
|
return false; |
|
|
} |
|
|
|
|
|
function AtivaNumeroDiscagem($db, $matricula) { |
|
|
global $dac; |
|
|
|
|
|
if (!GetPendenciaDiscador($db, true)) { |
|
|
FechaRegistroDiscaor($db); |
|
|
} |
|
|
|
|
|
$dadosDiscador = GetDadosDiscador($dac, 0); |
|
|
if ($dadosDiscador !== false) { |
|
|
$query = "update pbx_campanha_operacao set carrega_fone = 0 where cmpo_id = %s and matricula = %s"; |
|
|
$query = sprintf($query, QuotedStr($dadosDiscador['cmpo_id']), QuotedStr($matricula)); |
|
|
$result = pg_query($db, $query); |
|
|
if ($result) { |
|
|
$query = "update pbx_supervisor_agentes set status_discador = 1 where matricula = %s"; |
|
|
$query = sprintf($query, QuotedStr($matricula)); |
|
|
$result = pg_query($db, $query); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
function SetDispoDiscador($status) { |
|
|
/* |
|
|
* Quando o agente inicia a opera<EFBFBD><EFBFBD>o de discagem o agente <EFBFBD> colocado antes como indisponivel |
|
|
* para fila, o status atual <EFBFBD> guardado e restaurado qdo finalizada a operacao de discagem. |
|
|
*/ |
|
|
$_SESSION['SSDispoDiscador'] = $status; |
|
|
} |
|
|
|
|
|
function GetDispoDiscador() { |
|
|
return $_SESSION['SSDispoDiscador']; |
|
|
} |
|
|
|
|
|
function GetDadosDiscador($dac, $idCampanha = 0) { |
|
|
$inTran = 0; |
|
|
$dadosCampanha = array(); |
|
|
/* |
|
|
* Se existir um registro em opera<EFBFBD><EFBFBD>o esse registro <EFBFBD> recuperado e envidao para o agente. Este registro foi |
|
|
* importado da lista para o agente logado, o registro em quet<EFBFBD>o fica dispon<EFBFBD>vel somente para o agente que |
|
|
* o selecionou, as tabelas relacionadas tem seus status atualizados para evitar conflitos. O pbx_campanha_contato |
|
|
*/ |
|
|
$matricula = GetMatricula(); |
|
|
$query = "select cmpo_id, cmp_id, list_id, cont_id, conf_id, cmp_descricao, list_nome, cont_identificador, |
|
|
cont_param1, cont_param2, cont_param3, cont_param4, cont_param5, |
|
|
disp_param1, disp_param2, disp_param3, disp_param4, disp_param5, |
|
|
conf_fone, lista_fones_discador, matricula, case when(cmpo_status in(0,2))then 0 else 1 end as cmpo_status, carrega_fone, discagem_inicial |
|
|
from pbx_campanha_operacao |
|
|
where matricula = '$matricula' |
|
|
and cmpo_status in(0, 2)"; |
|
|
$result = pg_query($query); |
|
|
|
|
|
if (!$result) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if ($result && pg_num_rows($result)) { |
|
|
$dadosCampanha = pg_fetch_array($result, null, PGSQL_ASSOC); |
|
|
return ocultarDadosAgente($dadosCampanha); |
|
|
} |
|
|
|
|
|
if (($idCampanha === 0) || !$idCampanha) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
$sql = "SELECT cmp_seletiva FROM pbx_campanha WHERE cmp_id = {$idCampanha}"; |
|
|
$res = pg_query($sql); |
|
|
$cmpExclusiva = pg_fetch_assoc($res); |
|
|
if ($cmpExclusiva['cmp_seletiva'] == 1) { |
|
|
$cmplCamp .= " AND conf_matricula_exclusiva = '{$matricula}' "; |
|
|
} |
|
|
|
|
|
/* |
|
|
* Procura por um registro disponivel para discagem. |
|
|
*/ |
|
|
$query = "select a.cmp_id, b.list_id,d.cont_id, d.conf_id, a.cmp_descricao, b.list_nome, c.cont_identificador, |
|
|
c.cont_param1, c.cont_param2, c.cont_param3, c.cont_param4, c.cont_param5, |
|
|
coalesce(e.disp_param1, 'Param1') as disp_param1, coalesce(e.disp_param2, '-') as disp_param2, |
|
|
coalesce(e.disp_param3, '-') as disp_param3, coalesce(e.disp_param4, '-') as disp_param4, coalesce(e.disp_param5, '-') as disp_param5, |
|
|
d.conf_fone, '' as lista_fones_discador, '$matricula' as matricula, 0 as cmpo_status, 0 as carrega_fone, 0 as discagem_inicial |
|
|
from pbx_campanha a |
|
|
inner join pbx_campanha_usuarios u on u.cmp_id = a.cmp_id and u.matricula = '$matricula' |
|
|
inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1 |
|
|
inner join pbx_campanha_contato c on c.list_id = b.list_id and c.cont_id = (select min(cont_id) from pbx_campanha_contato where list_id = b.list_id and cont_discado = 0 and matricula is null and cont_status = 0 $cmplCamp) |
|
|
inner join pbx_campanha_contato_fone d on d.cont_id = c.cont_id and d.conf_id = (select min(conf_id) from pbx_campanha_contato_fone where cont_id = c.cont_id and conf_discado = 0 and matricula is null) |
|
|
inner join pbx_campanha_contato_display e on e.list_id = b.list_id |
|
|
where a.cmp_status = 1 |
|
|
and (a.cmp_tipo_campanha = 1 OR a.cmp_tipo_campanha = 9) |
|
|
and a.id_dac = '$dac' "; |
|
|
|
|
|
try { |
|
|
$result = pg_query($query); |
|
|
if (!$result) { |
|
|
GeraExcept("ERRO; Erro ao consultar a campanha!"); |
|
|
} |
|
|
|
|
|
if (!pg_num_rows($result)) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
$dadosCampanha = pg_fetch_array($result, null, PGSQL_ASSOC); |
|
|
|
|
|
$result = pg_query('begin'); |
|
|
if (!$result) { |
|
|
GeraExcept("ERRO; Erro ao iniciar a transa<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
$inTran = 1; |
|
|
|
|
|
/* |
|
|
* Remove o contato da lista registro para discar. |
|
|
*/ |
|
|
$query = "update pbx_campanha_contato set matricula = %s where cont_id = %s"; |
|
|
$query = sprintf($query, QuotedStr($matricula), QuotedStr($dadosCampanha["cont_id"])); |
|
|
$result = pg_query($query); |
|
|
if (!$result || !pg_affected_rows($result)) { |
|
|
GeraExcept("ERRO; Erro ao reservar contato para discagem!"); |
|
|
} |
|
|
|
|
|
/* |
|
|
* Marca o registro do telefone em operacao. |
|
|
*/ |
|
|
$query = "update pbx_campanha_contato_fone set matricula = %s, conf_status_lista = 2 where conf_id = %s"; |
|
|
$query = sprintf($query, QuotedStr($matricula), QuotedStr($dadosCampanha["conf_id"])); |
|
|
$result = pg_query($query); |
|
|
if (!$result || !pg_affected_rows($result)) { |
|
|
GeraExcept("ERRO; Erro ao reservar o telefone para discagem!"); |
|
|
} |
|
|
|
|
|
/* |
|
|
* Faz a chamada para o numero default. |
|
|
*/ |
|
|
$dadosCampanha['lista_fones_discador'] = GetFonesContato($dadosCampanha['cont_id'], $dadosCampanha['conf_fone']); |
|
|
|
|
|
/* |
|
|
* Registra as informa<EFBFBD>?os do contato para o agente que realizara a chamada. |
|
|
*/ |
|
|
$dadosCampanha['cmpo_id'] = RegistraContatoAgente($matricula, $dadosCampanha); |
|
|
|
|
|
$result = pg_query('commit'); |
|
|
if (!$result) { |
|
|
GeraExcept("ERRO; Erro ao finalizar a transa<EFBFBD><EFBFBD>o!"); |
|
|
} |
|
|
|
|
|
return ocultarDadosAgente($dadosCampanha); |
|
|
} catch (Exception $ex) { |
|
|
if ($inTran) { |
|
|
pg_query('rollback'); |
|
|
} |
|
|
RegistraLogAgente("GetDadosDiscador", $ex->getMessage(), $ex); |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function ocultarDadosAgente($dadosCampanha){ |
|
|
$campoOcultar = array(); |
|
|
|
|
|
foreach($dadosCampanha as $key => $info){ |
|
|
ocultarCampo($info, $key, $campoOcultar); |
|
|
} |
|
|
|
|
|
foreach($campoOcultar as $key => $dt){ |
|
|
if(strpos('disp', $key) !== false){ |
|
|
$key = str_replace('disp', 'cont', $key); |
|
|
} |
|
|
$dadosCampanha[$key] = ocultarLGPD($key, $dt); |
|
|
} |
|
|
return $dadosCampanha; |
|
|
} |
|
|
|
|
|
function RegistraContatoAgente($matricula, $dadosCampanha) { |
|
|
$query = "insert " |
|
|
. " into pbx_campanha_operacao(matricula,cmp_id,list_id,cont_id,conf_id,cmp_descricao,list_nome,cont_identificador,cont_param1,cont_param2," |
|
|
. "cont_param3,cont_param4,cont_param5,disp_param1,disp_param2,disp_param3,disp_param4,disp_param5,conf_fone,lista_fones_discador, cmpo_status)" |
|
|
. " values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,'0')"; |
|
|
$query = sprintf($query, QuotedStr($matricula), QuotedStr($dadosCampanha["cmp_id"]), QuotedStr($dadosCampanha["list_id"]), QuotedStr($dadosCampanha["cont_id"]), QuotedStr($dadosCampanha["conf_id"]), QuotedStr($dadosCampanha["cmp_descricao"]), QuotedStr($dadosCampanha["list_nome"]), QuotedStr($dadosCampanha["cont_identificador"]), QuotedStr($dadosCampanha["cont_param1"]), QuotedStr($dadosCampanha["cont_param2"]), QuotedStr($dadosCampanha["cont_param3"]), QuotedStr($dadosCampanha["cont_param4"]), QuotedStr($dadosCampanha["cont_param5"]), QuotedStr($dadosCampanha["disp_param1"]), QuotedStr($dadosCampanha["disp_param2"]), QuotedStr($dadosCampanha["disp_param3"]), QuotedStr($dadosCampanha["disp_param4"]), QuotedStr($dadosCampanha["disp_param5"]), QuotedStr($dadosCampanha["conf_fone"]), QuotedStr($dadosCampanha["lista_fones_discador"]) |
|
|
); |
|
|
|
|
|
$result = pg_query($query); |
|
|
if (!$result) { |
|
|
GeraExcept("ERRO; Erro ao reservar contato para discagem!"); |
|
|
} |
|
|
|
|
|
return GetCurrVal('pbx_campanha_operacao'); |
|
|
} |
|
|
|
|
|
function GetFonesContato($contId, $value) { |
|
|
global $sZListaFones; |
|
|
$lista = sprintf('<select name="ListaFones" type="text" id="ListaFones" style="%s" onchange="SetFoneDiscador();">', $sZListaFones); |
|
|
/* |
|
|
* Pega a lista de status da opera<EFBFBD><EFBFBD>o. |
|
|
*/ |
|
|
$query = "select conf_id, conf_fone from pbx_campanha_contato_fone where cont_id = '$contId' and conf_status_lista <> 3 order by conf_id"; |
|
|
$result = pg_query($query); |
|
|
$value = trim($value); |
|
|
while ($dados = @pg_fetch_row($result)) { |
|
|
$id = trim($dados[0]); |
|
|
$desc = trim($dados[1]); |
|
|
$sel = ($value == $desc) ? " selected" : ""; |
|
|
$lista .= "<option value=\"$id\"$sel>$desc</option>"; |
|
|
} |
|
|
|
|
|
$lista .= "</select>"; |
|
|
return $lista; |
|
|
} |
|
|
|
|
|
function GetStatusDiscador($value, $cmpId = 0) { |
|
|
$lista = ''; |
|
|
/* |
|
|
* Pega a lista de status da opera<EFBFBD><EFBFBD>o. |
|
|
*/ |
|
|
$query = "select ctst_id, ctst_nome from pbx_campanha_contato_status where ctst_status = 1 and not exists(select '' from pbx_status_contato_campanha where cmp_id = '{$cmpId}') |
|
|
union |
|
|
select a.ctst_id, a.ctst_nome from pbx_campanha_contato_status a, pbx_status_contato_campanha b where b.ctst_id = a.ctst_id and b.cmp_id = '{$cmpId}' and a.ctst_status = 1 order by ctst_nome;"; |
|
|
$result = pg_query($query); |
|
|
|
|
|
$sel = $value ? " selected" : ""; |
|
|
$lista = "<option value='' $sel>---------------</option>"; |
|
|
|
|
|
|
|
|
while ($dados = @pg_fetch_row($result)) { |
|
|
$sel = ($value == $dados[0]) ? " selected" : ""; |
|
|
$id = $dados[0]; |
|
|
$desc = $dados[1]; |
|
|
$lista .= "<option value=\"$id\"$sel>$desc</option>"; |
|
|
} |
|
|
|
|
|
$lista .= "</select>"; |
|
|
return $lista; |
|
|
} |
|
|
|
|
|
function GetDadosIntegracao($dadosIntegracao) { |
|
|
$arLabels = array('disp_param0', 'disp_param1', 'disp_param2', 'disp_param3', 'disp_param4', 'disp_param5'); |
|
|
$arValuesId = array('cont_identificador', 'cont_param1', 'cont_param2', 'cont_param3', 'cont_param4', 'cont_param5'); |
|
|
|
|
|
$arDisplay = array(); |
|
|
$arValues = array(); |
|
|
$arDados = array_slice(explode('|', trim($dadosIntegracao)), 3, 6); |
|
|
if (!count($arDados)) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
foreach ($arDados as $values) { |
|
|
list($label, $value) = explode(":", $values); |
|
|
$arDisplay[] = $label; |
|
|
$arValues[] = $value; |
|
|
} |
|
|
|
|
|
$arDados = array(); |
|
|
for ($i = 0; $i < count($arLabels); $i++) { |
|
|
$arDados[$arLabels[$i]] = isset($arDisplay[$i]) ? $arDisplay[$i] : ''; |
|
|
} |
|
|
|
|
|
for ($i = 0; $i < count($arValuesId); $i++) { |
|
|
$arDados[$arValuesId[$i]] = isset($arValues[$i]) ? $arValues[$i] : ''; |
|
|
} |
|
|
|
|
|
return $arDados; |
|
|
} |
|
|
|
|
|
function RealizaConsultaIntegracao() { |
|
|
|
|
|
include '/var/lib/asterisk/scripts/integracao/localDataBase.php'; |
|
|
$patScript = "/var/lib/asterisk/scripts/integracao/custom/"; |
|
|
|
|
|
$codCliente = $_GET['codigoCliente']; |
|
|
|
|
|
try { |
|
|
$query = "SELECT prm_select_integracao FROM pbx_parametros"; |
|
|
$sql = pg_query($query); |
|
|
$idMetodo = pg_fetch_row($sql); |
|
|
|
|
|
$row = GetMetodoIntegra($idMetodo[0]); |
|
|
|
|
|
$script = trim($row["itgm_comando"]); |
|
|
|
|
|
$nomeMetodo = $patScript . $script; |
|
|
if (!file_exists($nomeMetodo)) { |
|
|
GeraExcept("RealizaConsultaIntegracao", "O arquivo informado n<EFBFBD>o existe! Nome: $script"); |
|
|
return true; |
|
|
} |
|
|
|
|
|
if (!empty($nomeMetodo)) { |
|
|
include($nomeMetodo); |
|
|
$telefone = explode(',', $cliente['fone']); |
|
|
$celular = explode(',', $cliente['celular']); |
|
|
|
|
|
$numeroCliente = array( |
|
|
soNumero($celular[0]), |
|
|
soNumero($telefone[0]) |
|
|
); |
|
|
|
|
|
$numeroCliente = json_encode($numeroCliente); |
|
|
$_SESSION['SSIntegracaoAtivo'] = $infoIntegracao; |
|
|
} else { |
|
|
GeraExcept('RealizaConsultaIntegracao', 'Nome do Metodo nao encontrado!'); |
|
|
} |
|
|
|
|
|
if ($celular[0] && $telefone[0]) { |
|
|
SetIntegracaoContato($retorno_cliente); |
|
|
echo 'OK;' . $numeroCliente; |
|
|
} else { |
|
|
echo 'ERRO;Cliente nao encontrado!'; |
|
|
} |
|
|
} catch (Exception $ex) { |
|
|
$ex->getMessage(); |
|
|
} |
|
|
} |
|
|
|
|
|
function ClassificacaoAudioEscuta($audioFone) { |
|
|
$cmd = array(); |
|
|
$resp = ""; |
|
|
|
|
|
if (strpos($audioFone, 'AUTO') !== false) { |
|
|
$audioFone = explode('|', $audioFone)[1]; |
|
|
$cmd["Channel"] = sprintf('Local/%s@app-callcenter', GetRamalMonitorar(RAMAL_MONITOR_AUDIO)); |
|
|
} else { |
|
|
$cmd["Channel"] = GetRamalMonitorar(CANAL_MONITOR_AUDIO); |
|
|
} |
|
|
|
|
|
$cmd["Action"] = "Originate"; |
|
|
$cmd["Context"] = 'audio-escuta-apl'; |
|
|
$cmd["Exten"] = 's'; |
|
|
$cmd["Priority"] = '1'; |
|
|
$cmd["CallerID"] = GetRamalMonitorar(RAMAL_MONITOR_AUDIO); |
|
|
$cmd["Variable"] = sprintf("AVISO=OK,AUDIO=%s", $audioFone); |
|
|
|
|
|
$retCmd = CommandoAmi($cmd); |
|
|
if ($retCmd === false) { |
|
|
$resp = "ERRO"; |
|
|
} else { |
|
|
$retCmd = strtoupper(trim($retCmd)); |
|
|
$resp = $retCmd == 'OK' ? "OK" : "ERRO"; |
|
|
} |
|
|
|
|
|
return $resp; |
|
|
} |
|
|
|
|
|
function GetClientOperacao($matricula) { |
|
|
$query = "SELECT cont_identificador FROM pbx_campanha_operacao WHERE cmpo_id = (SELECT max(cmpo_id)::INT FROM pbx_campanha_operacao WHERE matricula = '{$matricula}')"; |
|
|
$result = pg_query($query); |
|
|
return pg_fetch_assoc($result); |
|
|
} |
|
|
|
|
|
function GetContidClient($contid, $uniqueid) { |
|
|
if ($uniqueid || $uniqueid != 'null') { |
|
|
$query = "SELECT client_id |
|
|
FROM pbx_campanha_operacao a |
|
|
INNER JOIN pbx_cliente b ON a.cont_id = b.cont_id |
|
|
WHERE a.cont_id = {$contid} |
|
|
AND client_id NOT IN (SELECT client_id FROM pbx_cliente_audio x WHERE x.client_id = b.client_id) "; |
|
|
$result = pg_query($query); |
|
|
$res = pg_fetch_assoc($result); |
|
|
|
|
|
if (!$res) { |
|
|
return; |
|
|
} |
|
|
|
|
|
$query = sprintf("INSERT INTO pbx_cliente_audio (client_id, uid) VALUES(%s, %s);", QuotedStr($res['client_id']), $uniqueid); |
|
|
$result = pg_query($query); |
|
|
|
|
|
GravaLog("INSERE CLIENTE AUDIO: QUERY: $query | DADOS: [uniqueid: $uniqueid] [contid: $contid] \n", CONF_PATH_LOG_DISCADORCLIENT); |
|
|
|
|
|
if ($result) { |
|
|
return true; |
|
|
} |
|
|
} |
|
|
return false; |
|
|
} |
|
|
|
|
|
?>
|
|
|
|