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.
 
 
 
 
 
 

252 lines
11 KiB

<?php
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
$client = isset($_REQUEST['client_id']) ? $_REQUEST['client_id'] : '';
$contato = isset($_REQUEST['clc_id']) ? $_REQUEST['clc_id'] : $_SESSION['SSclc_id'];
/** ARMAZENA O REGISTRO BUSCADO * */
$_SESSION['SSclc_id'] = ($action == 'edit' ? $contato : '');
/** COLETA OS DADOS DO POST * */
$fieldspost = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS);
/** ADICIONA A MATRICULA DE MODIFICACAO * */
$fieldspost['user_reg'] = GetMatricula();
$tpLayout = 1;
try {
if (isset($fieldspost['formAcaoDesc']) && $action != 'delete') {
$data = verifyDataPost($fieldspost);
if ($data) {
SetClienteContato($dbcon, $data, $contato);
flash("O cadastro foi realizado com sucesso!");
}
}
if ($contato && $action == 'delete') {
deleteContato($dbcon, $contato);
flash("O contato removido com sucesso!");
}
$contatos = GetContatoPorCliente($dbcon, $client);
$cliente = GetCliente($dbcon, $client);
foreach ($contatos as $value) {
$clc = "<a href=\"javaScript:NovaJanela('index.php?idProg=346&client_id={$value["client_id"]}&clc_id={$value["clc_id"]}&action=edit', 'contatosCliente', '900', '250', 'jhTela')\"><img src=\"imgSite/editaUser.png\" border=\"0\" width=\"16\" height=\"16\" alt=\"Contatos do cliente ID: $nomeDisp\" title=\"Contatos do cliente ID: $nomeDisp\"></a>";
$delete = "<a href=\"javaScript:NovaJanela('index.php?idProg=346&client_id={$value["client_id"]}&clc_id={$value["clc_id"]}&action=delete', 'contatosCliente', '900', '250', 'jhTela')\"><img src=\"imgSite/deletaUser.png\" border=\"0\" width=\"16\" height=\"16\" alt=\"Contatos do cliente ID: $nomeDisp\" title=\"Contatos do cliente ID: $nomeDisp\"></a>";
$data_reg = date('d/m/Y H:i:s', strtotime($value['data_reg']));
$linha .= sprintf("<tr>
<td align='center'>{$value['clc_id']}</td>
<td align='center'>{$value['clc_nome']}</td>
<td align='center'>{$value['clc_email']}</td>
<td align='center'>{$value['clc_fone']}</td>
<td align='center'>{$value['clc_sms']}</td>
<td align='center'>{$value['clc_whatsapp']}</td>
<td align='center'>{$value['clc_telegram']}</td>
<td align='center'>%s</td>
<td align='center'>%s</td>
<td align='center'>{$data_reg}</td>
<td align='center'>{$clc} {$delete}</td>
</tr>", ($value['clc_contato_principal'] ? '<img src="imgSite/Yes.png">' : '<img src="imgSite/Delete.png">'), GetUsuario($dbcon, $value['user_reg'])['apelido']);
$numReg++;
}
} catch (Exception $ex) {
flash($ex->getMessage(),'red');
}
$flash = flash();
$smarty->assign("linhas", $linha ? $linha : "<td colspan='15' align='center'><b>Nenhum registro encontrado!</b></td>");
$smarty->assign("nome_cliente", $cliente['client_nome_fantasia']);
$smarty->assign("client_id", $cliente['client_id']);
$smarty->assign("contato", ($action == 'edit' ? GetContatoPorId($dbcon, $contato) : ''));
$smarty->assign("color", $flash[1]);
$smarty->assign("msgErro", $flash[0]);
GetTemplate($smarty, 'cadastros/cliente/clienteContatos.tpl');
/**
* Funcao para atualizar ou cadastrar um novo contato e alterar seu registro principal.
*
* Para a atualiza<EFBFBD><EFBFBD>o do registro <EFBFBD> importante passar o clc_id no parametro $id.
*
* O valor do parametro $data <EFBFBD> o retorno da funcao verifyDataPost()
* @param type $dbcon
* @param type $data
* @param type $id
* @throws Exception
*/
function SetClienteContato($dbcon, $data, $id = null) {
if ($id) {
$campos = implode(',', array_map(function ($a, $b) {
return $a . " = " . QuotedStr($b);
}, array_keys($data), array_values($data)));
$query = " UPDATE pbx_cliente_contato SET $campos WHERE clc_id = '{$id}';";
} else {
$campos = implode(',', array_keys($data));
$values = implode(',', array_map(function ($a, $b) {
return QuotedStr($b);
}, array_keys($data), array_values($data)));
$query = " INSERT INTO pbx_cliente_contato ($campos) VALUES($values);";
}
if (array_key_exists('clc_contato_principal', $data)) {
$query1 .= " UPDATE pbx_cliente_contato SET clc_contato_principal = 0 WHERE client_id = '{$data['client_id']}' ";
$query1 .= $id ? " AND clc_id <> '{$id}'; " : ';';
}
$result = pg_query($dbcon, $query1 . $query);
$contato = registraContatoPrincipal($dbcon, $data['client_id']);
SetClientePrincipal($dbcon, $contato);
if (!$result) {
throw new Exception('N<EFBFBD>o foi poss<EFBFBD>vel ' . ($id ? 'atualizar' : 'cadastrar') . ' o registro! Erro: ' . pg_last_error());
}
}
/**
* Adiciona um contato como principal mantendo sempre 1 como principal.
* @param type $dbcon
* @param type $id
* @return type
* @throws Exception
*/
function registraContatoPrincipal($dbcon, $id) {
$resp = GetContatoPorCliente($dbcon, $id);
$lastid = null;
$contato = null;
foreach ($resp as $v) {
if ($v['clc_contato_principal']) {
return $v;
} else {
$lastid = $v['clc_id'];
$contato = $v;
}
}
$query = "UPDATE pbx_cliente_contato SET clc_contato_principal = 1 WHERE clc_id = {$lastid};";
$result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception('N<EFBFBD>o foi atualizar o registro principal! Erro: ' . pg_last_error());
}
return $contato;
}
/**
* Busca o contato pode o cliente;
* @param type $dbcon
* @param type $cliente
* @return type
*/
function GetContatoPorCliente($dbcon, $cliente) {
$query = "SELECT * FROM pbx_cliente_contato WHERE client_id = '{$cliente}' ORDER BY clc_nome;";
$result = pg_query($dbcon, $query);
$rows = pg_fetch_all($result);
return $rows;
}
/**
* Busca o contato por o contato_id = clc_id
* @param type $dbcon
* @param type $clc_id
* @return type
*/
function GetContatoPorId($dbcon, $clc_id) {
$query = "SELECT * FROM pbx_cliente_contato WHERE clc_id = '{$clc_id}';";
$result = pg_query($dbcon, $query);
$rows = pg_fetch_assoc($result);
return $rows;
}
/**
* Deleta o contato pelo id.
* @param type $dbcon
* @param type $contato
* @throws Exception
*/
function deleteContato($dbcon, $contato) {
$query = "DELETE FROM pbx_cliente_contato WHERE clc_id = '{$contato}';";
$result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception('N<EFBFBD>o foi poss<EFBFBD>vel remover o registro! Erro: ' . pg_last_error());
}
}
/**
* Verifica os dados passados no POST conforme o tamanho do campo da tabela.
* Caso o campo seja inteiro <EFBFBD> informado o n<EFBFBD>mero 0.
* @param type $fieldpost
* @return type
* @throws Exception
*/
function verifyDataPost($fieldpost) {
$fields = array(
array("field" => 'user_reg', "size" => 0, "type" => "int", "require" => true),
array("field" => 'client_id', "size" => 0, "type" => "int", "require" => true),
array("field" => 'clc_contato_principal', "size" => 0, "type" => "int", "require" => false),
array("field" => 'clc_nome', "size" => 128, "type" => "string", "require" => true, "upper" => true),
array("field" => 'clc_email', "size" => 128, "type" => "string", "require" => false),
array("field" => 'clc_fone', "size" => 32, "type" => "int", "require" => true),
array("field" => 'clc_sms', "size" => 32, "type" => "int", "require" => false),
array("field" => 'clc_whatsapp', "size" => 32, "type" => "int", "require" => false),
array("field" => 'clc_telegram', "size" => 32, "type" => "int", "require" => false)
);
$data = array();
foreach ($fields as $k => $v) {
if (array_key_exists($v['field'], $fieldpost) && ((strlen($fieldpost[$v['field']]) > 0 && strlen($fieldpost[$v['field']]) <= $v['size']) || ($v['size'] == 0))) {
if ($v['type'] == 'int') {
$data[$v['field']] = soNumero($fieldpost[$v['field']]);
} else {
$data[$v['field']] = $v['upper'] ? strtoupper($fieldpost[$v['field']]) : $fieldpost[$v['field']];
}
} else if ($v['require']) {
flash("<EFBFBD> necess<EFBFBD>rio preencher o campo " . ucfirst(str_replace('_', '', str_replace('clc_', '', $v['field']))) . "!", 'red');
return false;
}
}
return $data;
}
/**
* Busca o cliente pelo seu ID.
* @param type $dbcon
* @param type $cliente
* @return type
*/
function GetCliente($dbcon, $cliente) {
$query = "SELECT * FROM pbx_cliente WHERE client_id = '{$cliente}';";
$result = pg_query($dbcon, $query);
$rows = pg_fetch_assoc($result);
return $rows;
}
/**
* Atualiza os dados do cliente conforme o contato principal.
* @param type $dbcon
* @param type $contato
* @throws Exception
*/
function SetClientePrincipal($dbcon, $contato) {
$query = "UPDATE pbx_cliente SET client_telefone = '{$contato['clc_fone']}', "
. "client_email = '{$contato['clc_email']}', client_nome_contato = '{$contato['clc_nome']}' "
. " WHERE client_id = '{$contato['client_id']}';";
$result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception("N<EFBFBD>o foi poss<EFBFBD>vel atualizar o contato do cliente!");
}
}
function flash($message = null, $color = 'green') {
if ($message) {
$_SESSION['SSMSGFlash'] = $message;
$_SESSION['SSMSGFlashColor'] = $color;
} else {
$message = $_SESSION['SSMSGFlash'];
$color = $_SESSION['SSMSGFlashColor'];
unset($_SESSION['SSMSGFlash'], $_SESSION['SSMSGFlashColor']);
}
return array($message, $color);
}
?>