forked from SimplesIP/pabx-app
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.
632 lines
26 KiB
632 lines
26 KiB
<?php |
|
|
|
$tpLayout = 1; |
|
$cloid = isset($_GET['clo_id']) ? $_GET['clo_id'] : $_SESSION['SSCloId']; |
|
|
|
/** |
|
* Variavel de sessao para manter os status da requisicao |
|
*/ |
|
$_SESSION['SSCloId'] = $cloid; |
|
$input = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS); |
|
|
|
// var_dump($input); exit; |
|
|
|
try { |
|
if (!$cloid) { |
|
throw new Exception('Não foi possível encontrar a lista informada!'); |
|
} |
|
|
|
########################### |
|
## BOTAO RESET ## |
|
########################### |
|
/** |
|
* RESET DAS CONFIGURACOES DA MATRICULA |
|
*/ |
|
if (isset($input['btReset'])) { |
|
if (!resetMatriculaCliente($_SESSION['SSCloId'])) { |
|
throw new Exception("Não foi possível resetar o cadastros dos clientes!"); |
|
} else { |
|
$message = "Os clientes foram resetados com configuração default!"; |
|
} |
|
} |
|
|
|
/** |
|
* COLETA OS DADOS DA LISTA |
|
*/ |
|
$listClient = getClienteOrigem($cloid); |
|
|
|
/** |
|
* COLETA INFORMACOES DE REGISTROS |
|
*/ |
|
$reg = getRegistrosMatricula($cloid); |
|
$regDisponivel = $reg['registros'] - $reg['registros_matricula']; |
|
|
|
/** |
|
* INFORMACOES DA LISTA SELECIONADA |
|
*/ |
|
$lstdados = ''; |
|
foreach ($listClient as $value) { |
|
$lstdados .= "<td>{$value['clo_id']}</td>"; |
|
$lstdados .= "<td>{$value['clo_titulo']}</td>"; |
|
$lstdados .= "<td>{$value['clo_descricao']}</td>"; |
|
$lstdados .= "<td>{$value['cfr_razao_social']}</td>"; |
|
$lstdados .= "<td>{$value['nome']} - {$value['apelido']}</td>"; |
|
$lstdados .= sprintf("<td align='center' style='font-size:14px;color: %s'><strong>%s</strong></td>", $regDisponivel ? '#33cc33' : 'red', $regDisponivel); |
|
$lstdados .= "<td align='center' style='font-size:14px;'><strong>{$reg['registros']}</strong></td>"; |
|
$lstdados .= sprintf("<td>%s</td>", date('d/m/Y H:i:s', strtotime($value['data_reg']))); |
|
} |
|
|
|
/** |
|
* INFORMACOES DE INSERCAO DOS USUARIOS PERMITIDOS |
|
*/ |
|
$lstUsuario = getClienteAgentes(); |
|
foreach ($lstUsuario as $value) { |
|
$dadosAgente = ___buscaDadosAgente(getUsuariosRegistros($_SESSION['SSCloId']), 'apelido', $value['apelido']); |
|
$lstAgente .= "<tr>"; |
|
$lstAgente .= "<td>{$value['nome']} - {$value['apelido']}</td>"; |
|
$lstAgente .= sprintf("<td><input type='number' min='0' max='9999' name='input_{$value['apelido']}' size='4' value='%s'/></td>", $dadosAgente['registros'] ? $dadosAgente['registros'] : 0); |
|
$lstAgente .= "</tr>"; |
|
} |
|
|
|
########################### |
|
## BOTAO SALVAR ## |
|
########################### |
|
/** |
|
* REGISTRA OS CLIENTES PARA AS MATRICULAS |
|
*/ |
|
$agentes = array(); |
|
$quantidade = 0; |
|
if ($input['btConfigurar']) { |
|
/** |
|
* COLETA OS DADOS DA REQUISICAO E TRANSFORMA EM ARRAY AS INFORMACOES COMPLEMENTARES |
|
*/ |
|
foreach ($input as $key => $value) { |
|
if (strpos($key, 'input_') !== false && $value) { |
|
$stragente = str_replace('input_', '', $key); |
|
$agente = str_replace('_', '.', $stragente); |
|
$agentes[] = array('apelido' => $agente, 'cliente' => $value, 'matricula' => __getMatriculaAgente($agente)); |
|
$quantidade += $value; |
|
} |
|
} |
|
|
|
/** |
|
* VERIFICA A DISPONIBILIDADE DE REGISTROS |
|
*/ |
|
$reg = getRegistrosMatricula($cloid); |
|
$regDisponivel = $reg['registros'] - $reg['registros_matricula']; |
|
if ($quantidade > getClienteOrigem($cloid)[0]['registros'] || $quantidade < 0 || $quantidade > $regDisponivel) { |
|
throw new Exception("A quantidade de registros não pode ser 0 (Zero) ou ultrapassar a quantidade de 'Clientes Disponíveis'!"); |
|
} |
|
|
|
if (!$agentes) { |
|
throw new Exception("É necessário informar o pelo menos um agente para a campanha!"); |
|
} |
|
/** |
|
* ADICIONA AS MATRICULAS NOS CLIENTES |
|
*/ |
|
__transaction('BEGIN;'); |
|
foreach ($agentes as $value) { |
|
if ($value['cliente'] > 0) { |
|
setMatriculaCliente($value['matricula'], $_SESSION['SSCloId'], $value['cliente']); |
|
} |
|
} |
|
__transaction('COMMIT;'); |
|
$message = "Os clientes foram referenciados para as matriculas!"; |
|
} |
|
|
|
########################### |
|
## BOTAO GERAR ## |
|
########################### |
|
/** |
|
* RESET DAS CONFIGURACOES DA MATRICULA |
|
*/ |
|
if (isset($input['btFinalizar'])) { |
|
$registro = getRegistrosMatricula($_SESSION['SSCloId']); |
|
if (!$registro['registros_matricula']) { |
|
throw new Exception("É preciso configurar os registros de clientes antes de finalizar!"); |
|
} |
|
|
|
if ($input['campanha'] && $input['listaDacs'] && !$input['cmp_id']) { |
|
__createCamp($input['campanha'], $input['listaDacs']); |
|
$message = "A campanha foi gerada com sucesso!"; |
|
} else if ($input['cmp_id']) { |
|
|
|
if (verificaListaCampanha($input['cmp_id'])) { |
|
throw new Exception("Ainda existe uma lista ativa para essa campanha!"); |
|
} |
|
|
|
$resp = __createListaCamp($input['cmp_id']); |
|
if ($resp['status']) { |
|
$message = "A lista foi gerada com sucesso!"; |
|
} else { |
|
$message = $resp['message']; |
|
} |
|
} else { |
|
throw new Exception("É preciso inserir as informações da campanha para gerar uma nova lista ou campanha!"); |
|
} |
|
} |
|
|
|
$smarty->assign('color', 'darkgreen'); |
|
$smarty->assign('message', $message); |
|
} catch (Exception $ex) { |
|
/** |
|
* EM CASO DE ERROS COM TRASACAO TODAS SERAM FINALIZADAS |
|
*/ |
|
__transaction('ROLLBACK;'); |
|
|
|
$smarty->assign('color', 'red'); |
|
$smarty->assign('message', $ex->getMessage()); |
|
echo $ex->getMessage(); |
|
} |
|
|
|
$smarty->assign('liberaCamp', LiberaCriarCampanha($cloid)); |
|
$smarty->assign('camp', __getSelectCamp($input['cmp_id'])); |
|
$smarty->assign('dacs', GetDac($dbcon, $input['listaDacs'], "", 0, 1, 0, 0, 0)); |
|
$smarty->assign('lstAgente', $lstAgente); |
|
$smarty->assign('lstdados', $lstdados); |
|
$templateName = 'cadastros/prevenda/listacampanhacliente.tpl'; |
|
GetTemplate($smarty, $templateName); |
|
|
|
/** |
|
* Consulta as informacoes de uma lista de acordo com o clo_id |
|
* @param int $clo_id |
|
* @return type |
|
* @throws Exception |
|
*/ |
|
function getClienteOrigem($clo_id) { |
|
$query = "SELECT clo_id,clo_titulo,clo_descricao,a.cfr_id,cfr_razao_social,nome,apelido, (SELECT count(clo_id) FROM pbx_cliente WHERE clo_id = a.clo_id) AS registros, a.data_reg |
|
FROM pbx_cliente_origem a |
|
INNER JOIN pbx_cliente_fornecedor b ON a.cfr_id = b.cfr_id |
|
INNER JOIN pbx_usuarios c ON c.matricula = a.user_reg::VARCHAR |
|
WHERE clo_id = {$clo_id}; "; |
|
$result = pg_query($query); |
|
|
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível localizar a lista informada."); |
|
} |
|
$data = pg_fetch_all($result); |
|
return $data; |
|
} |
|
|
|
/** |
|
* Busca os agentes que tem permissao para operar na campanha |
|
* @param int $cfr_id |
|
* @return type |
|
* @throws Exception |
|
*/ |
|
function getClienteAgentes() { |
|
$query = "SELECT DISTINCT id, nome, apelido, matricula FROM pbx_usuarios a |
|
INNER JOIN pbx_grupo_usuario b ON a.id = b.user_id |
|
INNER JOIN pbx_grupo_funcoes c ON c.gp_id = b.gp_id |
|
WHERE b.gp_id IN(SELECT gp_id FROM (SELECT CASE WHEN(COUNT(gp_id) > 1) THEN gp_id END AS gp_id |
|
FROM pbx_grupo_funcoes WHERE fun_id = 209 OR fun_id = 2 |
|
GROUP BY gp_id |
|
ORDER BY 1) AS DATA)"; |
|
$result = pg_query($query); |
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível localizar os Agentes da lista informada."); |
|
} |
|
$data = pg_fetch_all($result); |
|
return $data; |
|
} |
|
|
|
/** |
|
* Busca a matricula pelo apelido do usuario |
|
* @param string $apelido |
|
* @return boolean |
|
*/ |
|
function __getMatriculaAgente($apelido) { |
|
$query = "SELECT matricula FROM pbx_usuarios WHERE apelido = '{$apelido}';"; |
|
$result = pg_query($query); |
|
$data = pg_fetch_assoc($result); |
|
if ($data) { |
|
return $data['matricula']; |
|
} |
|
return false; |
|
} |
|
|
|
/** |
|
* Retorna todos os cliente referentes a Cliente Origem. |
|
* Váriavel de parametro $apenasMatricula para buscar somente registros com o agente. |
|
* @param type $cloid |
|
* @param bool $apenasMatricula |
|
* @return boolean |
|
*/ |
|
function __getClientesPorCloid($cloid) { |
|
$query = "SELECT * FROM pbx_cliente WHERE clo_id = '{$cloid}' AND client_user_contato <> '' AND list_id IS NULL AND cmp_id IS NULL and client_status <> '999'; "; |
|
$result = pg_query($query); |
|
|
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível buscar os clientes por origem."); |
|
} |
|
$data = pg_fetch_all($result); |
|
return $data; |
|
} |
|
|
|
/** |
|
* Realiza um update nos registros buscados de acordo com a quantidade de limit |
|
* @param string $matricula |
|
* @param int $cloid |
|
* @param int $reg |
|
* @return boolean |
|
*/ |
|
function setMatriculaCliente($matricula, $cloid, $reg) { |
|
$query = "UPDATE pbx_cliente SET client_user_contato = '{$matricula}' WHERE client_id IN (SELECT client_id FROM pbx_cliente WHERE clo_id = $cloid AND list_id IS NULL AND cmp_id IS NULL AND client_user_contato IS NULL and client_status <> '999' LIMIT $reg);"; |
|
$result = pg_query($query); |
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível atribuir a matricula no registros de cliente."); |
|
} |
|
return true; |
|
} |
|
|
|
/** |
|
* Realiza o resete das matriculas cadastradas |
|
* @param int $cloid |
|
* @return boolean |
|
*/ |
|
function resetMatriculaCliente($cloid) { |
|
$query = "UPDATE pbx_cliente SET client_user_contato = NULL WHERE client_id IN (SELECT client_id FROM pbx_cliente WHERE clo_id = {$cloid}) AND list_id IS NULL AND cmp_id IS NULL and client_status <> '999';"; |
|
$result = pg_query($query); |
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível resetar os dados referente a matricula referente aos registros de cliente."); |
|
} |
|
return true; |
|
} |
|
|
|
/** |
|
* Verifica a se a campanha possui os registros de matriculas |
|
* @param int $cloid |
|
* @return boolean |
|
*/ |
|
function getRegistrosMatricula($cloid) { |
|
$query = "SELECT COUNT(client_id) AS registros, SUM(CASE WHEN(client_user_contato <> '')THEN 1 ELSE 0 END) AS registros_matricula FROM pbx_cliente WHERE clo_id = {$cloid} and client_status <> '999'"; |
|
$result = pg_query($query); |
|
|
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível localizar os dados referente a lista."); |
|
} |
|
$data = pg_fetch_assoc($result); |
|
return $data; |
|
} |
|
|
|
/** |
|
* Retorna a quantidade de registros para cada agente |
|
*/ |
|
function getUsuariosRegistros($cloid) { |
|
$query = "SELECT apelido, matricula, count(client_user_contato) AS registros |
|
FROM pbx_cliente a |
|
INNER JOIN pbx_usuarios b ON b.matricula = a.client_user_contato |
|
WHERE clo_id = {$cloid} |
|
AND list_id IS NULL AND cmp_id IS NULL |
|
GROUP BY 1,2"; |
|
$result = pg_query($query); |
|
|
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível localizar os registros dos Agentes."); |
|
} |
|
$data = pg_fetch_all($result); |
|
return $data; |
|
} |
|
|
|
function __getSelectCamp($id = null) { |
|
$query = "SELECT cmp_id, cmp_descricao FROM pbx_campanha WHERE cmp_status IN (2,3) "; |
|
$result = pg_query($query); |
|
|
|
if (!$result) { |
|
throw new Exception("[Exception in " . __FUNCTION__ . "] - Não foi possível localizar as campanhas."); |
|
} |
|
|
|
$data = pg_fetch_all($result); |
|
|
|
if ($data) { |
|
foreach ($data as $value) { |
|
$select = $id == $value['cmp_id'] ? 'selected' : ''; |
|
$opt .= "<option value='{$value['cmp_id']}' $select>{$value['cmp_descricao']}</option>"; |
|
} |
|
return $opt; |
|
} |
|
} |
|
|
|
/** |
|
* Possibilidade de criar/voltar/commitar uma transação |
|
* @param type $type |
|
*/ |
|
function __transaction($type) { |
|
pg_query($type); |
|
} |
|
|
|
############################################################################ |
|
#### CAMPANHA #### |
|
############################################################################ |
|
|
|
/** |
|
* Cria uma nova campanha |
|
* > Esse evento é executado quando o operador fornece dados para um nova campanha a ser gerada. |
|
* |
|
* > cmp_tipo_campanha = Deve ser referencia a tabela pbx_campanha_tipo |
|
* - O número 9 é para o tipo Pré-Venda |
|
* @param type $descricao |
|
* @param type $dac |
|
* @throws Exception |
|
*/ |
|
function __createCamp($descricao, $dac) { |
|
__transaction('BEGIN;'); |
|
$query = "INSERT INTO pbx_campanha(cmp_descricao, cmp_ramal, id_dac, cmp_aguarda_agente, cmp_numero_ligacoes_agente, ident_proc, cmp_status, cmp_tipo_campanha, cmp_seletiva) |
|
VALUES(%s,'-1',%s,'1','1',%s,'2','9','1') RETURNING cmp_id;"; |
|
$query = sprintf($query, QuotedStr(trim($descricao)), QuotedStr($dac), QuotedStr('Inserido: listacampanhacliente Data: ' . date('Y-m-d H:i:s'))); |
|
$result = @pg_query($query); |
|
|
|
if (!$result) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR CAMPANHA 001] - Não foi possível criar a campanha! [$query]"); |
|
} |
|
|
|
$data = pg_fetch_assoc($result); |
|
|
|
/** |
|
* CRIA OS STATUS DEFINIDO NAS REFERENCIAS |
|
*/ |
|
$queryRef = "SELECT * FROM pbx_campanha_referencia_status"; |
|
$resultRef = pg_query($queryRef); |
|
$dataRef = pg_fetch_all($resultRef); |
|
|
|
$queryRefinc = ""; |
|
foreach ($dataRef as $ref) { |
|
$queryRefinc .= "INSERT INTO pbx_status_contato_campanha(ctst_id,cmp_id) VALUES({$ref['ctst_id']},{$data['cmp_id']}); "; |
|
} |
|
|
|
if (!@pg_query($queryRefinc)) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR CAMPANHA 007] - Não foi possível criar os status da campanha informado!"); |
|
} |
|
|
|
/** |
|
* Table: pbx_campanha_usuarios |
|
* PERMISSAO AOS USUARIOS A CAMPANHA CRIADA. |
|
*/ |
|
$userPerm = getUsuariosRegistros($_SESSION['SSCloId']); |
|
foreach ($userPerm as $value) { |
|
$queryPerm .= " INSERT INTO pbx_campanha_usuarios (cmp_id, matricula) VALUES('{$data['cmp_id']}','{$value['matricula']}'); "; |
|
} |
|
|
|
if (!@pg_query($queryPerm)) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 005] - Não foi possível inserir a permissao para os agentes! "); |
|
} |
|
|
|
$status = __createListaCamp($data['cmp_id'], true); |
|
if (!$status['status']) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR CAMPANHA 002] - Não foi possível criar a campanha. {$status['message']}."); |
|
} |
|
|
|
__transaction('COMMIT;'); |
|
} |
|
|
|
/** |
|
* Cria as listas com as informacoes dos clientes e suas expecificacoes, como, display de agente, contatos, lista de telefone e permissoes de campanha. |
|
* Tabelas: |
|
* > pbx_campanha |
|
* > pbx_campanha_lista |
|
* > pbx_campanha_contato_display |
|
* > pbx_campanha_contato |
|
* > pbx_campanha_contato_fone |
|
* > pbx_campanha_usuarios |
|
* @param type $cmp_id |
|
* @throws Exception |
|
*/ |
|
function __createListaCamp($cmp_id, $crateCmp = false) { |
|
/** |
|
* variavel para retornar o status da lista |
|
*/ |
|
$return = array('status' => false, 'message' => ""); |
|
|
|
try { |
|
__transaction('BEGIN;'); |
|
$userReg = GetIdUser(); |
|
|
|
/** |
|
* VERIFICA SE A CAMPANHA SELECIONADA ESTA COM STATUS ATIVA OU EXCLUIDA |
|
*/ |
|
$statusCamp = verificaStatusCampanha($cmp_id); |
|
if ($statusCamp == 1 || $statusCamp == 0) { |
|
__transaction('ROLLBACK;'); |
|
// logger(__FILE__)->debug('[ERROR LIST 001] - A campanha não pode estar ativa!'); |
|
throw new Exception("[ERROR LIST 001] - A campanha não pode estar ativa! "); |
|
} |
|
|
|
/** |
|
* Table: pbx_campanha && pbx_campanha_lista |
|
* VERIFICA SE EXISTE UMA LISTA NA CAMPANHA |
|
*/ |
|
$query = "SELECT COUNT(cmp_id), (SELECT cmp_descricao FROM pbx_campanha WHERE cmp_id = {$cmp_id} ORDER BY 1 DESC LIMIT 1) AS list_name FROM pbx_campanha_lista WHERE cmp_id = {$cmp_id} GROUP BY 2;"; |
|
$result = pg_query($query); |
|
|
|
if (!$result) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 002] - Não foi possível buscar as informações da campanha!"); |
|
} |
|
$data = pg_fetch_assoc($result); |
|
|
|
/** |
|
* SE NÃO HOUVER LISTA CRIADA, BUSCA OS DADOS DA CAMPANHA PARA COMPLEMENTAR |
|
*/ |
|
if (!$data) { |
|
$data['count'] = '1'; |
|
$data['list_name'] = 'LISTA_INI'; |
|
} |
|
|
|
/** |
|
* Table: pbx_campanha_lista |
|
* CRIA UM LISTA PARA A CAMPANHA |
|
*/ |
|
$sql = "INSERT INTO pbx_campanha_lista(cmp_id, list_nome, list_file, list_status, id_usuario) VALUES('$cmp_id', '{$data['count']}_{$data['list_name']}', 'CMP_CLIENTE_{$data['list_name']}', '1', '{$userReg}') RETURNING list_id;"; |
|
$result = pg_query($sql); |
|
|
|
if (!$result) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 003] - Não foi possível criar a lista para campanha!"); |
|
} |
|
$lstCamp = pg_fetch_assoc($result); |
|
|
|
/** |
|
* Table: pbx_campanha_contato_display |
|
* CRIA OS DADOS DO CONTATO DISPLAY |
|
*/ |
|
$query = "INSERT INTO pbx_campanha_contato_display(cmp_id, list_id, disp_param1, disp_param2, disp_param3, disp_param4) VALUES('$cmp_id', '{$lstCamp['list_id']}', 'NOME', 'EMPRESA', 'CNPJ', 'REGIAO')"; |
|
pg_query($query); |
|
|
|
if (!pg_query($query)) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 004] - Não foi possível criar os campos de display a lista para campanha!"); |
|
} |
|
|
|
/** |
|
* Table: pbx_campanha_contato |
|
* BUSCA TODOS OS CLIENTE PARA INSERIR NA LISTA DE CONTATO |
|
*/ |
|
$clientesLista = __getClientesPorCloid($_SESSION['SSCloId'], true); |
|
$queryContato = ""; |
|
$queryContatoFone = ""; |
|
foreach ($clientesLista as $value) { |
|
if ($value['client_telefone'] || $value['client_celular']) { |
|
$nomeContato = $value['client_nome_contato'] ? $value['client_nome_contato'] : '-'; |
|
$municipio = str_replace("'", '', $value['client_municipio']); |
|
$queryContato = sprintf(" INSERT INTO pbx_campanha_contato(cmp_id, list_id, cont_identificador, cont_param1, cont_param2, cont_param3, cont_param4, cont_status, conf_matricula_exclusiva) " |
|
. "VALUES('{$cmp_id}','{$lstCamp['list_id']}','{$value['client_id']}',%s,%s,%s,%s, '0', %s) RETURNING cont_id; ", QuotedStr($nomeContato), QuotedStr($value['client_razao_social']), QuotedStr($value['client_documento']), QuotedStr($municipio . '-' . $value['client_uf']), QuotedStr($value['client_user_contato'])); |
|
$result = pg_query($queryContato); |
|
$cont_id = pg_fetch_assoc($result)['cont_id']; |
|
|
|
/** |
|
* Table: pbx_campanha_contato_fone |
|
* PERMITE A INSERCAO DE VARIOS CONTATOS PARA O MESMO CLIENTE DE ACORDO COM O ARRAY $contats |
|
*/ |
|
$contats = array($value['client_telefone'], $value['client_celular']); |
|
foreach ($contats as $fone) { |
|
if ($fone) { |
|
$queryContatoFone .= sprintf(" INSERT INTO pbx_campanha_contato_fone(cmp_id, list_id, cont_id, conf_fone, conf_status, conf_status_lista, conf_discado) " |
|
. "VALUES(%s, %s, %s, %s, '0', '1', '0'); ", QuotedStr($cmp_id), QuotedStr($lstCamp['list_id']), QuotedStr($cont_id), QuotedStr($fone)); |
|
} |
|
} |
|
$queryClient .= " UPDATE pbx_cliente SET list_id = '{$lstCamp['list_id']}', cmp_id = '{$cmp_id}', cont_id = '{$cont_id}', user_reg = '{$userReg}' WHERE client_id = {$value['client_id']}; "; |
|
} else { |
|
/** CLIENTE STATUS 10 -> INVALIDO */ |
|
$queryClient .= " UPDATE pbx_cliente SET list_id = '{$lstCamp['list_id']}', user_reg = '{$userReg}', client_status = '10' WHERE client_id = {$value['client_id']}; "; |
|
} |
|
} |
|
|
|
if (!pg_query($queryClient)) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 005] - Não foi possível inserir os clientes na lista de campanha!"); |
|
} |
|
|
|
if (!$res = pg_query($queryContatoFone)) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 006] - Não foi possível inserir o fone na lista de campanha contato!"); |
|
} |
|
|
|
/** |
|
* Table: pbx_campanha_usuarios |
|
* PERMISSAO AOS USUARIOS A CAMPANHA CRIADA. |
|
*/ |
|
if ($crateCmp) { |
|
$userPerm = getUsuariosRegistros($_SESSION['SSCloId']); |
|
} else { |
|
$userPerm = getClienteCampanha($cmp_id); |
|
} |
|
|
|
if ($userPerm) { |
|
foreach ($userPerm as $value) { |
|
$queryPerm .= " INSERT INTO pbx_campanha_usuarios (cmp_id, matricula) VALUES('{$cmp_id}','{$value['matricula']}'); "; |
|
} |
|
if (!pg_query($queryPerm)) { |
|
__transaction('ROLLBACK;'); |
|
throw new Exception("[ERROR LIST 007] - Não foi possível inserir o fone na lista de campanha contato! Error: " . $queryPerm); |
|
} |
|
} |
|
|
|
__transaction('COMMIT;'); |
|
$return['status'] = true; |
|
$return['message'] = 'A lista da campanha foi gerada com sucesso!'; |
|
} catch (Exception $ex) { |
|
__transaction('ROLLBACK;'); |
|
$return['message'] = $ex->getMessage(); |
|
} |
|
|
|
return $return; |
|
} |
|
|
|
function verificaListaCampanha($cmp_id) { |
|
$query = "SELECT * FROM pbx_campanha_lista WHERE cmp_id = {$cmp_id} AND list_status = 1;"; |
|
$result = pg_query($query); |
|
$data = pg_fetch_all($result); |
|
if ($data) { |
|
$query = "UPDATE pbx_campanha_lista SET list_status = 2 WHERE cmp_id = {$cmp_id};"; |
|
$result = pg_query($query); |
|
} |
|
return false; |
|
} |
|
|
|
function verificaStatusCampanha($cmp_id) { |
|
$query = "SELECT cmp_status FROM pbx_campanha WHERE cmp_id = {$cmp_id};"; |
|
$result = pg_query($query); |
|
$data = pg_fetch_assoc($result); |
|
if ($data) { |
|
return $data; |
|
} |
|
return false; |
|
} |
|
|
|
/** |
|
* Busca os usuários que não estão na permissão da campanha |
|
* @param type $cmp_id |
|
* @return type |
|
*/ |
|
function getClienteCampanha($cmp_id) { |
|
$query = "SELECT DISTINCT client_user_contato AS matricula FROM pbx_cliente WHERE cmp_id = {$cmp_id} " |
|
. "AND client_user_contato NOT IN (SELECT matricula FROM pbx_campanha_usuarios WHERE cmp_id = {$cmp_id})"; |
|
$result = pg_query($query); |
|
return pg_fetch_all($result); |
|
} |
|
|
|
############################################################################ |
|
#### FUNCOES PARA CONTROLAR DADOS E ARQUIVOS #### |
|
############################################################################ |
|
|
|
/** |
|
* Funcao para buscar dados em Array Multidimencional. |
|
*/ |
|
function ___buscaDadosAgente($data, $chave, $valor) { |
|
foreach ($data as $value) { |
|
if ($value[$chave] == $valor) { |
|
return $value; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
function __reloadPage() { |
|
header("Location: index.php?idProg=341&clo_id={$_SESSION['SSCloId']}&window=1"); |
|
} |
|
|
|
function __messageFlash($message = null) { |
|
if ($_SESSION['SSMessageFlash']) { |
|
$message = $_SESSION['SSMessageFlash']; |
|
unset($_SESSION['SSMessageFlash']); |
|
} else { |
|
$_SESSION['SSMessageFlash'] = $message; |
|
} |
|
return $message; |
|
} |
|
|
|
function LiberaCriarCampanha($id) { |
|
$query = "SELECT * FROM pbx_cliente WHERE client_id IN (SELECT client_id FROM pbx_cliente WHERE clo_id = {$id}) AND list_id IS NULL AND cmp_id IS NULL AND client_user_contato <> '';"; |
|
$result = pg_query($query); |
|
$dados = pg_fetch_all($result); |
|
|
|
if ($dados) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
|