|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
ob_flush();
|
|
|
|
|
$strJS = array();
|
|
|
|
|
|
|
|
|
|
define('CONF_CONEXAO_DB', connection());
|
|
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
######### FUNCOES IMPORTANTES #########
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ADICIONA OS RELAT<EFBFBD>RIOS QUE SER<EFBFBD>O UTILIZADOS
|
|
|
|
|
*
|
|
|
|
|
* @param array $relatorio
|
|
|
|
|
*/
|
|
|
|
|
function relatorios($relatorio, $fields) {
|
|
|
|
|
if (function_exists($relatorio)) {
|
|
|
|
|
return $relatorio($fields);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* FORMATA DADOS COM O PROPRIO NOME NO VALOR DA TABELA COM MODO ASSOCIATIVO
|
|
|
|
|
*
|
|
|
|
|
* @param array $data
|
|
|
|
|
*/
|
|
|
|
|
function formatAssocJS($data) {
|
|
|
|
|
$posicao = 0;
|
|
|
|
|
foreach ($data as $key => $value) {
|
|
|
|
|
$posicao++;
|
|
|
|
|
$js = array('title' => "$key", 'value' => $value);
|
|
|
|
|
SetStringJS($js);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* FORMATA DADOS COM O PROPRIO NOME NO VALOR DA TABELA COM MODO MULTIDIMENSIONAL
|
|
|
|
|
*
|
|
|
|
|
* @param array $data
|
|
|
|
|
*/
|
|
|
|
|
function formatAllJS($data) {
|
|
|
|
|
foreach ($data as $value) {
|
|
|
|
|
SetStringJS($value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ADICIONA VALORES EM ARRAY PARA UMA VARI<EFBFBD>RAVEL GLOBAL
|
|
|
|
|
*
|
|
|
|
|
* @global array $strJS
|
|
|
|
|
* @param array $js
|
|
|
|
|
*/
|
|
|
|
|
function SetStringJS($js) {
|
|
|
|
|
global $strJS;
|
|
|
|
|
array_push($strJS, $js);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* RETORNA OS DADOS EM JSON DA VARI<EFBFBD>VEL GLOBAL PARA SER CONSUMIDA NO RELATORIO EM CHART
|
|
|
|
|
*
|
|
|
|
|
* @global array $strJS
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
function GetStringJS() {
|
|
|
|
|
global $strJS;
|
|
|
|
|
return json_encode($strJS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
######### RELATORIOS #########
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
|
|
function desempenhoMedia($fields) {
|
|
|
|
|
$dataIni = ValidaData($fields['dataIni']) ? FormatDtMssql($fields['dataIni']) : date('Y-m-d');
|
|
|
|
|
$dataFim = ValidaData($fields['dataFim']) ? FormatDtMssql($fields['dataFim']) : date('Y-m-d');
|
|
|
|
|
$matricula = getAgente();
|
|
|
|
|
|
|
|
|
|
$query = "SELECT apelido, SUM(CASE WHEN client_status = '21' THEN 1 ELSE 0 END) AS exportados
|
|
|
|
|
FROM pbx_cliente a
|
|
|
|
|
INNER JOIN pbx_usuarios b ON a.client_user_contato = b.matricula
|
|
|
|
|
WHERE client_update::DATE >= '$dataIni'
|
|
|
|
|
AND client_update::DATE <= '$dataFim' ";
|
|
|
|
|
|
|
|
|
|
if ($matricula || !IsAdmin()) {
|
|
|
|
|
// $query .= " AND c.matricula = '{$matricula}' ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query .= " GROUP BY apelido";
|
|
|
|
|
$data = exec_query($query, 'all');
|
|
|
|
|
|
|
|
|
|
$m = array_map(function($data) {
|
|
|
|
|
return $media += $data['exportados'];
|
|
|
|
|
}, $data);
|
|
|
|
|
|
|
|
|
|
foreach ($data as $key => $agente) {
|
|
|
|
|
$data[$key]['media'] = array_sum($m) / count($m);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
formatAllJS($data);
|
|
|
|
|
return GetStringJS();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function performacePorAgente($fields) {
|
|
|
|
|
$dataIni = ValidaData($fields['dataIni']) ? FormatDtMssql($fields['dataIni']) : date('Y-m-d');
|
|
|
|
|
$dataFim = ValidaData($fields['dataFim']) ? FormatDtMssql($fields['dataFim']) : date('Y-m-d');
|
|
|
|
|
$idDac = (!isset($fields['listaDacs']) || !$fields['listaDacs']) ? '0' : $fields['listaDacs'];
|
|
|
|
|
|
|
|
|
|
$query = "SELECT apelido,
|
|
|
|
|
SUM(CASE WHEN(client_status = '16')THEN 1 ELSE 0 END) AS ENVIADOS,
|
|
|
|
|
SUM(CASE WHEN(client_status = '21')THEN 1 ELSE 0 END) AS EXPORTADOS,
|
|
|
|
|
(SELECT count(*) FROM pbx_bilhetes a
|
|
|
|
|
INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2
|
|
|
|
|
INNER JOIN pbx_queues_grupos f ON f.nome = b.fila
|
|
|
|
|
WHERE f.id = '{$idDac}'
|
|
|
|
|
AND evento IN ('COMPLETAAGENT','COMPLETACALLER')
|
|
|
|
|
AND calldate::DATE >= '$dataIni'
|
|
|
|
|
AND calldate::DATE <= '$dataFim'
|
|
|
|
|
AND substring(b.agente, 7, 4) = matricula) AS chamadas
|
|
|
|
|
FROM pbx_cliente a
|
|
|
|
|
INNER JOIN pbx_usuarios b ON a.client_user_contato = b.matricula
|
|
|
|
|
WHERE client_update::DATE >= '$dataIni'
|
|
|
|
|
AND client_update::DATE <= '$dataFim' ";
|
|
|
|
|
$query .= " GROUP BY apelido, matricula";
|
|
|
|
|
|
|
|
|
|
formatAllJS(exec_query($query, 'all'));
|
|
|
|
|
return GetStringJS();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function funilDeVendas($fields) {
|
|
|
|
|
$dataIni = ValidaData($fields['dataIni']) ? FormatDtMssql($fields['dataIni']) : date('Y-m-d');
|
|
|
|
|
$dataFim = ValidaData($fields['dataFim']) ? FormatDtMssql($fields['dataFim']) : date('Y-m-d');
|
|
|
|
|
$idDac = (!isset($fields['listaDacs']) || !$fields['listaDacs']) ? '0' : $fields['listaDacs'];
|
|
|
|
|
|
|
|
|
|
$query = "SELECT (SELECT count(*) FROM pbx_bilhetes a
|
|
|
|
|
INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2
|
|
|
|
|
INNER JOIN pbx_queues_grupos f ON f.nome = b.fila
|
|
|
|
|
WHERE f.id = '{$idDac}'
|
|
|
|
|
AND evento IN ('COMPLETAAGENT','COMPLETACALLER')
|
|
|
|
|
AND calldate::DATE >= '$dataIni'
|
|
|
|
|
AND calldate::DATE <= '$dataFim') AS chamadas,
|
|
|
|
|
SUM(CASE WHEN(client_status = '16')THEN 1 ELSE 0 END) AS ENVIADOS,
|
|
|
|
|
SUM(CASE WHEN(client_status = '21')THEN 1 ELSE 0 END) AS EXPORTADOS
|
|
|
|
|
FROM pbx_cliente a
|
|
|
|
|
INNER JOIN pbx_usuarios b ON a.client_user_contato = b.matricula
|
|
|
|
|
WHERE client_update::DATE >= '$dataIni'
|
|
|
|
|
AND client_update::DATE <= '$dataFim' ";
|
|
|
|
|
|
|
|
|
|
formatAssocJS(exec_query($query));
|
|
|
|
|
return GetStringJS();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
######### BANCO DE DADOS #########
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
|
|
function getAgente() {
|
|
|
|
|
$query = sprintf("SELECT apelido, matricula
|
|
|
|
|
FROM pbx_fornecedor_permissao a
|
|
|
|
|
INNER JOIN pbx_usuarios b ON a.matricula_permissao = b.matricula
|
|
|
|
|
WHERE b.matricula = '%s' ", GetMatricula());
|
|
|
|
|
$result = exec_query($query);
|
|
|
|
|
if($result){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return GetMatricula();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* FUNCAO PARA REALIZAR CONEXAO COM O BANCO DE DADOS
|
|
|
|
|
*
|
|
|
|
|
* @return object
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
|
|
|
|
function connection() {
|
|
|
|
|
$connect = pg_connect(sprintf('host=%s port=%s dbname=%s user=%s password=%s', '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL'));
|
|
|
|
|
if (pg_last_error()) {
|
|
|
|
|
throw new Exception("Nao foi possivel conectar no banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
return $connect;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* EXECUTA QUERYS NO BANCO DE DADOS
|
|
|
|
|
* @param string $query
|
|
|
|
|
* @param string $type
|
|
|
|
|
* @return array
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
|
|
|
|
function exec_query($query, $type = 'assoc') {
|
|
|
|
|
$result = pg_query(CONF_CONEXAO_DB, $query);
|
|
|
|
|
switch (strtoupper($type)) {
|
|
|
|
|
case "ASSOC":
|
|
|
|
|
$resp = pg_fetch_assoc($result);
|
|
|
|
|
break;
|
|
|
|
|
case "ALL":
|
|
|
|
|
$resp = pg_fetch_all($result);
|
|
|
|
|
break;
|
|
|
|
|
case "ROW":
|
|
|
|
|
$resp = pg_fetch_row($result);
|
|
|
|
|
break;
|
|
|
|
|
case "ARRAY":
|
|
|
|
|
$resp = pg_fetch_array($result);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return $resp;
|
|
|
|
|
}
|
|
|
|
|
|