$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ÁRAVEL GLOBAL * * @global array $strJS * @param array $js */ function SetStringJS($js) { global $strJS; array_push($strJS, $js); } /** * RETORNA OS DADOS EM JSON DA VARIÁ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; }