$error, 'contatos' => $numeroList); } /** * Valida o contato passado se possui bloqueio no dia ou mes. Caso possua * adiciona na tabela de bloqueios. * * Status 2 => Bloqueio Diario; * Status 3 => Bloqueio Mesal; * @param int $idcamp * @param string $campanha * @param string $numero * @param string $dbcon * @return array */ function verificaContatoTelevendas($idcamp, $campanha, $numero, $dbcon) { $response = array('error' => false, 'bloqueio' => false); /** * BLOQUEIO MES 15 TENTATIVAS */ $contatoMes = count(contatosTelevendas($dbcon, $numero, 'MES')); if ($contatoMes >= 14) { $bloqueio = insereBloqueioCampanha($dbcon, $idcamp, $numero, 3, $campanha); $response['bloqueio'] = true; return $response; } /** * BLOQUEIO DIA 2 TENTATIVAS */ $contatoDia = contatosTelevendas($dbcon, $numero, 'DIA'); if (count($contatoDia) > 1) { $bloqueio = insereBloqueioCampanha($dbcon, $idcamp, $numero, 2, $campanha); $response['bloqueio'] = true; return $response; } insereContato($dbcon, $numero); return $response; } /** * Cria um novo contato na tabela televendas_bloqueio * * @param type $dbcon * @param type $numero * @return boolean */ function insereContato($dbcon, $numero) { $query = "INSERT INTO pbx_televendas_bloqueio (src, tlvb_status) VALUES ('{$numero}', 1);"; pg_query($dbcon, $query); if (pg_last_error()) { return false; } return true; } /** * TIPO DE BLOQUEIO * 1 - CONTATO PENDENTE NO KING * 2 - CONTATO DISCADO NO DIA * 3 - 15 CONTATO FEITO NO MES * 4 - CONTATO DUPLICADO OU INVALIDO NO ARQUIVO */ function insereBloqueioCampanha($dbcon, $idcamp, $numero, $tipo, $nomeCamp = null) { $query = "INSERT INTO pbx_kingdialer_bloqueios (id_camp_bloq, nome_camp_bloq, numero_bloq, tipo_bloq) VALUES({$idcamp},'{$nomeCamp}','{$numero}',{$tipo});"; pg_query($dbcon, $query); if (pg_last_error()) { return false; } return true; } ############################################################################ #### FUNCOES DE CONF. CAMPANHA #### ############################################################################ function criarContatosCampanha($id, $dados) { $sql = "INSERT INTO campanha_contatos (id_camp, numero, nome, codigo, outro, tipo_telefone) VALUES('%s','%s','%s','%s','%s','%s'); \n"; $query = ""; foreach ($dados as $contact) { $query = sprintf($sql, $id, $contact['numero'], $contact['nome'] ? $contact['nome'] : null, $contact['codigo'] ? $contact['codigo'] : null, $contact['data'] ? $contact['data'] : null, verificaTelefone($contact['numero'])); mysql_query($query); if (mysql_error()) { throw new Exception("Error:" . mysql_error() . " | Query: " . $query); } } return true; } function deletaCampanha($id) { $query1 = "DELETE FROM campanha WHERE id = {$id};"; mysql_query($query1); $query2 = "DELETE FROM campanha_contatos WHERE id_camp = {$id};"; mysql_query($query2); if (mysql_error()) { throw new Exception("Error:" . mysql_error()); } return true; } /** * Busca campanha de acordo pelo ID. * Se para passar $param atualiza os status de pausa de acordo com o ID. * @param type $id * @param type $status * @return type */ function campanhasPausa($id, $status = null) { if (is_int($status)) { $query = "UPDATE campanha SET pausa = {$status} WHERE id = {$id};"; mysql_query($query); return $status ? 'Off' : 'On'; } $query = "SELECT * FROM campanha WHERE id = {$id};"; $result = mysql_query($query); return mysql_fetch_assoc($result); } function chamadasCorrente() { $query = 'SELECT data, ramal, agent, campanha, numero, nome, codigo, CONCAT (numdiscagem , " de " , numrediscagem) AS discagem FROM discador_spool'; mysql_query($query); $result = mysql_query($query); $data = array(); while ($dados = mysql_fetch_array($result)) { $data[] = $dados; } return $data; } function GetLigacoesPorNumero($numero, $periodo) { $query = ""; $dataDay = date('Y-m-d 00:00:00'); $dataIni = date('Y-m-01 00:00:00'); $dataFim = date('Y-m-t 23:59:59'); switch (strtoupper($periodo)) { case 'PENDENTES' || 'P': $query = "SELECT count(*) as ligacoes FROM campanha_contatos WHERE numero = '{$numero}' AND calldate = '0000-00-00 00:00:00';"; break; case 'DIA' || 'D': $query = "SELECT count(*) as ligacoes FROM campanha_contatos WHERE numero = '{$numero}' AND calldate >= '{$dataDay}';"; break; case 'MES' || 'M': $query = "SELECT count(*) as ligacoes FROM campanha_contatos WHERE numero = '{$numero}' AND calldate >= '{$dataIni}' AND calldate <= '{$dataFim}';"; break; } if ($query && $result = mysql_query($query)) { return mysql_fetch_assoc($result)['ligacoes']; } return null; } function deleteListaDiscador($dbcon, $ldid) { $query = "DELETE FROM tb_lista_discador WHERE ld_id = {$ldid}"; pg_query($dbcon, $query); } /** * Verifica o tipo de telefone Movel ou Fixo * @param type $telefone * @return int */ function verificaTelefone($telefone) { switch (strlen($telefone)) { case 12: return 0; case 11: return 1; case 9: return 0; case 8: return 1; } }