diff --git a/classes/Personalizacao_campo.php b/classes/Personalizacao_campo.php
index 4ccf46f58..fc8679610 100755
--- a/classes/Personalizacao_campo.php
+++ b/classes/Personalizacao_campo.php
@@ -87,6 +87,7 @@ public function display_img(){
');
}
+ //Começar por aqui
public function display_txt(){
// Caso o tipo seja um Texto
echo('
@@ -99,7 +100,7 @@ public function display_txt(){
' . $this->getNome() . '
-
' . $this->getConteudo() . '
+
' . htmlspecialchars($this->getConteudo()) . '
');
diff --git a/classes/Personalizacao_display.php b/classes/Personalizacao_display.php
index 5bc28ec65..955d915c8 100755
--- a/classes/Personalizacao_display.php
+++ b/classes/Personalizacao_display.php
@@ -77,19 +77,20 @@ private function getQuery($q){
return $res->fetchAll(PDO::FETCH_ASSOC);
}
+ //Começar por aqui
public function display_txt(){
$result = $this->getQuery("select * from selecao_paragrafo where nome_campo='" . $this->getCampo() . "';");
if (count($result) == 1){
$this->setConteudo($result[0]['paragrafo']);
echo('
');
}
}
@@ -98,10 +99,10 @@ public function display_str(){
$result = $this->getQuery("select * from selecao_paragrafo where nome_campo='" . $this->getCampo() . "';");
if (count($result) == 1){
$this->setConteudo($result[0]['paragrafo']);
- echo(nl2br($this->getConteudo()));
+ echo(nl2br(htmlspecialchars($this->getConteudo())));
}else{
$this->setConteudo(NO_DATA);
- echo(nl2br($this->getConteudo()));
+ echo(nl2br(htmlspecialchars($this->getConteudo())));
}
}
diff --git a/controle/SaudeControle.php b/controle/SaudeControle.php
index 6fd6bcf03..d03ef695e 100644
--- a/controle/SaudeControle.php
+++ b/controle/SaudeControle.php
@@ -1,107 +1,108 @@
setNome($nome);
- $saude->setTexto($texto);
+ $saude->setTexto($texto);
$saude->setEnfermidade($enfermidade);
$saude->setData_diagnostico($data_diagnostico);
$saude->setIntStatus($intStatus);
@@ -109,35 +110,49 @@ public function verificar(){
}
// aq era atendidos
- public function listarTodos(){
+ public function listarTodos()
+ {
extract($_REQUEST);
- $SaudeDAO= new SaudeDAO();
+ $SaudeDAO = new SaudeDAO();
$pacientes = $SaudeDAO->listarTodos();
session_start();
- $_SESSION['saude']=$pacientes;
- header('Location: '.$nextPage);
+ $_SESSION['saude'] = $pacientes;
+ header('Location: ' . $nextPage);
}
public function listarUm()
{
- extract($_REQUEST);
+ $id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
+ $nextPage = trim(filter_input(INPUT_GET, 'nextPage', FILTER_SANITIZE_URL));
+
+ $regex = '#^(\.\./html/saude/(aplicar_medicamento|historico_paciente|profile_paciente)\.php(\?id_fichamedica=\d+)?)$#';
+
$cache = new Cache();
$infSaude = $cache->read($id);
+
if (!$infSaude) {
try {
- $SaudeDAO=new SaudeDAO();
- $infSaude=$SaudeDAO->listar($id);
+ $SaudeDAO = new SaudeDAO();
+ $infSaude = $SaudeDAO->listar($id);
session_start();
- $_SESSION['id_fichamedica']=$infSaude;
+ $_SESSION['id_fichamedica'] = $infSaude;
$cache->save($id, $infSaude, '1 seconds');
- header('Location:'.$nextPage);
+
+ if(preg_match($regex, $nextPage)){
+ header('Location:' . htmlspecialchars($nextPage));
+ }else{
+ header('Location:' . '../html/home.php');
+ }
} catch (PDOException $e) {
echo $e->getMessage();
}
- }
- else{
- header('Location:'.$nextPage);
+ } else {
+ if(preg_match($regex, $nextPage)){
+ header('Location:' . htmlspecialchars($nextPage));
+ }else{
+ header('Location:' . '../html/home.php');
+ }
}
}
@@ -148,67 +163,66 @@ public function alterarImagem()
$SaudeDAO = new SaudeDAO();
try {
$SaudeDAO->alterarImagem($id_fichamedica, $imagem);
- header("Location: ../html/saude/profile_paciente.php?id_fichamedica=".$id_fichamedica);
+ header("Location: ../html/saude/profile_paciente.php?id_fichamedica=" . $id_fichamedica);
} catch (PDOException $e) {
echo $e->getMessage();
}
-
}
/**
* Instancia um objeto do tipo Saude que recebe informações do formulário de cadastro e chama os métodos de DAO e Controller necessários para que uma ficha médica nova seja criada.
*/
- public function incluir(){
+ public function incluir()
+ {
$saude = $this->verificar();
$texto_descricao = $saude->getTexto();
$saudeDao = new SaudeDAO();
$descricao = new DescricaoControle();
- try{
+ try {
$saudeDao->incluir($saude);
$descricao->incluir($texto_descricao);
- $_SESSION['msg']="Ficha médica cadastrada com sucesso!";
- $_SESSION['proxima']="Cadastrar outra ficha.";
- $_SESSION['link']="../html/saude/cadastro_ficha_medica.php";
+ $_SESSION['msg'] = "Ficha médica cadastrada com sucesso!";
+ $_SESSION['proxima'] = "Cadastrar outra ficha.";
+ $_SESSION['link'] = "../html/saude/cadastro_ficha_medica.php";
header("Location: ../html/saude/informacao_saude.php");
-
- }catch(PDOException $e){
- $msg= "Não foi possível registrar o paciente "." ".$e->getMessage();
+ } catch (PDOException $e) {
+ $msg = "Não foi possível registrar o paciente " . " " . $e->getMessage();
echo $msg;
}
}
-
+
public function alterarInfPessoal()
{
extract($_REQUEST);
// $paciente = new Saude('',$nome,$sobrenome,$sexo,$nascimento,'','','','','',$tipoSanguineo,'','',$imagem,'','','','','','','','');
- $paciente = new Saude('','','','','','','','','','',$tipoSanguineo,'','','','','','','','','','','');
+ $paciente = new Saude('', '', '', '', '', '', '', '', '', '', $tipoSanguineo, '', '', '', '', '', '', '', '', '', '', '');
$paciente->setId_pessoa($id_fichamedica);
//echo $funcionario->getId_Funcionario();
- $SaudeDAO=new SaudeDAO();
+ $SaudeDAO = new SaudeDAO();
try {
$SaudeDAO->alterarInfPessoal($paciente);
- header("Location: ../html/saude/profile_paciente.php?id_fichamedica=".$id_fichamedica);
+ header("Location: ../html/saude/profile_paciente.php?id_fichamedica=" . $id_fichamedica);
} catch (PDOException $e) {
echo $e->getMessage();
}
-
}
/**
* Pega as informações do formulário de edição do prontuário e instancia um objeto do tipo DescricaoControle, chamando o método alterarProntuario e passando as informações necessárias, caso a alteração seja bem sucedida redireciona o usuário para a página de exibição das informações do paciente.
*/
- public function alterarProntuario(){
-
+ public function alterarProntuario()
+ {
+
extract($_REQUEST);
$descricao = new DescricaoControle();
- try{
+ try {
$descricao->alterarProntuario($id_fichamedica, $textoProntuario);
- header("Location: ../html/saude/profile_paciente.php?id_fichamedica=".$id_fichamedica);
- }catch(PDOException $e){
+ header("Location: ../html/saude/profile_paciente.php?id_fichamedica=" . $id_fichamedica);
+ } catch (PDOException $e) {
echo $e->getMessage();
}
}
@@ -216,34 +230,35 @@ public function alterarProntuario(){
/**
* Extraí os dados da requisição e instancia um objeto SaudeDAO, em seguida chama a função adicionarProntuarioAoHistorico passando os parâmetros $id_fichamedica e $id_paciente, redireciona o usuário para a página profile_paciente.php e atribuí uma string para a varivável msg da sessão.
*/
- public function adicionarProntuarioAoHistorico(){
+ public function adicionarProntuarioAoHistorico()
+ {
extract($_REQUEST);
session_start();
$saudeDao = new SaudeDAO();
- try{
+ try {
$saudeDao->adicionarProntuarioAoHistorico($id_fichamedica, $id_paciente);
- $_SESSION['msg']="Prontuário público adicionado ao histórico com sucesso";
- header("Location: ../html/saude/profile_paciente.php?id_fichamedica=".$id_fichamedica);
- }catch(Error $e){
+ $_SESSION['msg'] = "Prontuário público adicionado ao histórico com sucesso";
+ header("Location: ../html/saude/profile_paciente.php?id_fichamedica=" . $id_fichamedica);
+ } catch (Error $e) {
$erro = $e->getMessage();
- $_SESSION['msg']="Ops! Ocorreu o seguinte erro ao tentar inserir o prontuário público: $erro";
- header("Location: ../html/saude/profile_paciente.php?id_fichamedica=".$id_fichamedica);
+ $_SESSION['msg'] = "Ops! Ocorreu o seguinte erro ao tentar inserir o prontuário público: $erro";
+ header("Location: ../html/saude/profile_paciente.php?id_fichamedica=" . $id_fichamedica);
}
}
/**
* Recebe como parâmetro o id de um paciente, instancia um objeto do tipo SaudeDAO e chama o método listarProntuariosDoHistorico passando o id do paciente informado, em caso de sucesso retorna os prontuários do histórico e em caso de falha da um echo na mensagem do erro.
*/
- public function listarProntuariosDoHistorico($idPaciente){
+ public function listarProntuariosDoHistorico($idPaciente)
+ {
$saudeDao = new SaudeDAO();
- try{
+ try {
$prontuariosHistorico = $saudeDao->listarProntuariosDoHistorico($idPaciente);
return $prontuariosHistorico;
- }catch(PDOException $e){
+ } catch (PDOException $e) {
echo $e->getMessage();
}
-
}
/**
@@ -251,10 +266,11 @@ public function listarProntuariosDoHistorico($idPaciente){
*
* Instancia um objeto do tipo SaudeDAO e chama o método listarDescricoesHistoricoPorId passando o id da ficha médica do histórico, em caso de sucesso faz um echo do JSON das descrições, em caso de falha da um echo na mensagem do erro.
*/
- public function listarProntuarioHistoricoPorId($idHistorico = -1){
+ public function listarProntuarioHistoricoPorId($idHistorico = -1)
+ {
header('Content-Type: application/json');
-
- if($idHistorico == -1){
+
+ if ($idHistorico == -1) {
$idHistorico = $_GET['idHistorico'];
}
@@ -266,5 +282,4 @@ public function listarProntuarioHistoricoPorId($idHistorico = -1){
echo $e->getMessage();
}
}
-
-}
\ No newline at end of file
+}
diff --git a/html/apoio/controller/ContribuicaoLogController.php b/html/apoio/controller/ContribuicaoLogController.php
index 15692e674..9c472236c 100755
--- a/html/apoio/controller/ContribuicaoLogController.php
+++ b/html/apoio/controller/ContribuicaoLogController.php
@@ -256,6 +256,14 @@ public function criarCarne()
}
} else {
+ $diasPermitidos = [1, 5, 10, 15, 20, 25];
+
+ if(!in_array($diaVencimento, $diasPermitidos)){
+ http_response_code(400);
+ echo json_encode(['erro' => 'Dia de vencimento inválido']);
+ exit();
+ }
+
// Verificar se o dia informado já passou neste mês
if ($diaVencimento <= $dataAtual->format('d')) {
// Se o dia informado já passou, começar a partir do próximo mês
@@ -324,7 +332,7 @@ public function criarCarne()
* Cria um objeto do tipo ContribuicaoLog, chama o serviço de pix registrado no banco de dados
* e insere a operação na tabela de contribuicao_log caso o serviço seja executado com sucesso.
*/
- public function criarQrCode()
+ public function criarQRCode()
{
$valor = filter_input(INPUT_POST, 'valor');
$documento = filter_input(INPUT_POST, 'documento_socio');
@@ -404,9 +412,13 @@ public function criarQrCode()
$socioDao->registrarLog($contribuicaoLog->getSocio(), $mensagem);
//Chamada do método de serviço de pagamento requisitado
- if (!$servicoPagamento->gerarQrCode($contribuicaoLog)) {
+
+ $codigoApi = $servicoPagamento->gerarQrCode($contribuicaoLog);
+
+ if (!$codigoApi) {
$this->pdo->rollBack();
} else {
+ $contribuicaoLogDao->alterarCodigoPorId($codigoApi, $contribuicaoLog->getId());
$this->pdo->commit();
}
} catch (PDOException $e) {
diff --git a/html/apoio/public/js/mensalidade.js b/html/apoio/public/js/mensalidade.js
new file mode 100644
index 000000000..fc39ba5f3
--- /dev/null
+++ b/html/apoio/public/js/mensalidade.js
@@ -0,0 +1,101 @@
+let acao = 'mensalidade';
+
+async function decidirAcao() {
+ switch (acao) {
+ case 'mensalidade': gerarMensalidade(); break;
+ case 'cadastrar': await cadastrarSocio(); gerarMensalidade(); break;//colocar chamada para função de cadastrar sócio
+ case 'atualizar': await atualizarSocio(); gerarMensalidade(); break;//colocar chamada para função de atualizar sócio
+ default: console.log('Ação indefinida');
+ }
+}
+
+function gerarMensalidade() {
+ const form = document.getElementById('formulario');
+ const formData = new FormData(form);
+
+ const documento = pegarDocumento();
+
+ formData.append('nomeClasse', 'ContribuicaoLogController');
+ formData.append('metodo', 'criarCarne');
+ formData.append('documento_socio', documento);
+
+ fetch("../controller/control.php", {
+ method: "POST",
+ body: formData
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error("Erro na requisição: " + response.status);
+ }
+ return response.json(); // Converte a resposta para JSON
+ })
+ .then(resposta => {
+ if (resposta.link) {
+ console.log(resposta.link);
+ // Redirecionar o usuário para o link do boleto em uma nova aba
+ window.open(resposta.link, '_blank');
+ } else {
+ alert("Ops! Ocorreu um problema na geração da sua forma de pagamento, tente novamente, se o erro persistir contate o suporte.");
+ }
+
+ })
+ .catch(error => {
+ console.error("Erro:", error);
+ });
+}
+
+function verificarValorMensalidade(valor, parcelas, diaVencimento){
+ //Substituir para fazer uma busca dinâmica sobre o valor mínimo de uma doação
+ if (!valor || valor < 30) {
+ alert('O valor informado está abaixo do mínimo permitido.');
+ return false;
+ }
+
+ if(!parcelas || parcelas < 2 || parcelas > 12){
+ alert('A quantidade de parcelas deve ser um número entre 2 e 12.');
+ return false;
+ }
+
+ const diasValidos = [1, 5, 10, 15, 20, 25];
+
+ if(undefined === diasValidos.find((dia) => {return dia == diaVencimento})){
+ alert('O dia de vencimento escolhido não é válido');
+ return false;
+ }
+
+ return true;
+}
+
+function configurarAvancaValorMensalidade(funcao) {
+ const btnAvancaValor = document.getElementById('avanca-valor');
+
+ btnAvancaValor.addEventListener('click', (ev) => {
+ const valor = document.getElementById('valor').value;
+ const parcelas = document.getElementById('parcelas').value;
+ const diaVencimentoObject = document.querySelector("input[name='dia']:checked");
+
+ if(!diaVencimentoObject){
+ alert('Selecione um dia de vencimento');
+ return;
+ }
+
+ const diaVencimento = diaVencimentoObject.value;
+
+ ev.preventDefault();
+ if (!funcao(valor, parcelas, diaVencimento)) {
+ return;
+ }
+
+ alternarPaginas('pag2', 'pag1');
+ });
+}
+
+configurarAvancaValorMensalidade(verificarValorMensalidade);
+configurarVoltaValor();
+configurarVoltaCpf();
+configurarVoltaContato();
+configurarAvancaEndereco(verificarEndereco);
+configurarAvancaContato(verificarContato);
+configurarAvancaTerminar(decidirAcao);
+configurarMudancaOpcao(alternarPfPj);
+configurarConsulta(buscarSocio);
\ No newline at end of file
diff --git a/html/apoio/public/js/pix.js b/html/apoio/public/js/pix.js
new file mode 100644
index 000000000..e269a1186
--- /dev/null
+++ b/html/apoio/public/js/pix.js
@@ -0,0 +1,102 @@
+let acao = 'qrcode';
+
+async function decidirAcao() {
+ switch (acao) {
+ case 'qrcode': gerarQRCode(); break;
+ case 'cadastrar': await cadastrarSocio(); gerarQRCode(); break;//colocar chamada para função de cadastrar sócio
+ case 'atualizar': await atualizarSocio(); gerarQRCode(); break;//colocar chamada para função de atualizar sócio
+ default: console.log('Ação indefinida');
+ }
+}
+
+function gerarQRCode() {
+ const form = document.getElementById('formulario');
+ const formData = new FormData(form);
+
+ const documento = pegarDocumento();
+
+ formData.append('nomeClasse', 'ContribuicaoLogController');
+ formData.append('metodo', 'criarQRCode');
+ formData.append('documento_socio', documento);
+
+ fetch("../controller/control.php", {
+ method: "POST",
+ body: formData
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error("Erro na requisição: " + response.status);
+ }
+ return response.json(); // Converte a resposta para JSON
+ })
+ .then(resposta => {
+ if (resposta.qrcode) {
+ const qrCodeDiv = document.getElementById('qrcode-div');
+ qrCodeDiv.classList.remove('hidden');
+
+ // Criar uma div para centralizar o conteúdo
+ let qrContainer = document.createElement("div");
+ qrContainer.style.textAlign = "center";
+
+ // Adicionar o QR Code como imagem
+ let qrcode = document.createElement("img");
+ qrcode.src = "data:image/jpeg;base64," + resposta.qrcode;
+ qrContainer.appendChild(qrcode);
+
+ // Adicionar um botão abaixo do QR Code
+ let copyButton = document.createElement("button");
+ copyButton.textContent = "Copiar Código QR";
+ copyButton.style.display = "block";
+ copyButton.style.marginTop = "10px";
+ copyButton.style.margin = "auto";
+ copyButton.classList.add('btn');
+ copyButton.classList.add('btn-success');
+ qrContainer.appendChild(copyButton);
+
+ qrCodeDiv.appendChild(qrContainer);
+
+ // Ajustar a largura do botão após a imagem carregar
+ qrcode.onload = function () {
+ copyButton.style.width = qrcode.width * (0.75) + "px";
+ };
+
+ // Rolar a página para o form3
+ window.location.hash = '#qrcode-div';
+
+ // Adicionar o evento de clique no botão para copiar o código
+ copyButton.addEventListener('click', function (ev) {
+ ev.preventDefault();
+ // Criar um elemento temporário para copiar o texto
+ let tempInput = document.createElement("input");
+ tempInput.value = resposta.copiaCola;//substituir pelo código da área de transferência
+ document.body.appendChild(tempInput);
+
+ // Selecionar e copiar o texto
+ tempInput.select();
+ document.execCommand("copy");
+
+ // Remover o elemento temporário
+ document.body.removeChild(tempInput);
+
+ alert("Código QR copiado para a área de transferência!");
+ });
+
+ } else {
+ alert("Ops! Ocorreu um problema na geração da sua forma de pagamento, tente novamente, se o erro persistir contate o suporte.");
+ }
+
+ })
+ .catch(error => {
+ console.error("Erro:", error);
+ });
+}
+
+configurarAvancaValor(verificarValor);
+configurarVoltaValor();
+configurarVoltaCpf();
+configurarVoltaContato();
+configurarAvancaEndereco(verificarEndereco);
+configurarAvancaContato(verificarContato);
+configurarAvancaTerminar(decidirAcao);
+configurarMudancaOpcao(alternarPfPj);
+configurarConsulta(buscarSocio);
\ No newline at end of file
diff --git a/html/apoio/public/js/util.js b/html/apoio/public/js/util.js
index bdb751e49..1a16cf95f 100644
--- a/html/apoio/public/js/util.js
+++ b/html/apoio/public/js/util.js
@@ -134,6 +134,7 @@ function configurarConsulta(funcao) {
function verificarValor(valor) {
//Substituir para fazer uma busca dinâmica sobre o valor mínimo de uma doação
if (!valor || valor < 30) {
+ alert('O valor informado está abaixo do mínimo permitido.');
return false;
}
@@ -151,7 +152,6 @@ function configurarAvancaValor(funcao) {
const valor = document.getElementById('valor').value;
ev.preventDefault();
if (!funcao(valor)) {
- alert('O valor informado está abaixo do mínimo permitido.');
return;
}
@@ -445,6 +445,55 @@ function formAutocomplete({ bairro, cep, cidade, complemento, dataNascimento, do
complementoObject.value = complemento;
}
+function buscarSocio() {
+ const documento = pegarDocumento();
+
+ if (!validarDocumento(documento)) {
+ alert("O documento informado não está em um formato válido");
+ return;
+ }
+
+ console.log("Buscando sócio ...");
+
+ const url = `../controller/control.php?nomeClasse=SocioController&metodo=buscarPorDocumento&documento=${encodeURIComponent(documento)}`;
+
+ fetch(url)
+ .then(response => {
+ if (!response.ok) {
+ throw new Error('Erro na consulta: ' + response.statusText);
+ }
+ return response.json();
+ })
+ .then(data => {
+ // Manipula os dados recebidos do back-end
+ //verificar se existem elementos no data
+ if (data.resultado && typeof data.resultado === 'object') {
+
+ //Autocompletar campos do formulário
+ if (!verificarSocio(data.resultado)) {
+ //Exibir o sócio
+ console.log(data);
+ formAutocomplete(data.resultado);
+ acao = 'atualizar';
+ alternarPaginas('pag3', 'pag2');
+ } else {//Enviar para a página de confirmação de geração de boletos
+ alternarPaginas('pag5', 'pag2');
+ }
+ } else {
+ console.log(data.resultado);
+ acao = 'cadastrar';
+ alternarPaginas('pag3', 'pag2');
+ }
+
+ //alternarPaginas('pag2');
+ })
+ .catch(error => {
+ console.error('Erro ao realizar a consulta:', error);
+ });
+
+ console.log("Consulta realizada");
+}
+
function setLoader(btn) {
// Esconde o primeiro elemento filho (ícone)
btn.firstElementChild.style.display = "none";
diff --git a/html/apoio/service/PagarMePixService.php b/html/apoio/service/PagarMePixService.php
index 932a44933..e524b87e5 100644
--- a/html/apoio/service/PagarMePixService.php
+++ b/html/apoio/service/PagarMePixService.php
@@ -119,9 +119,13 @@ public function gerarQrCode(ContribuicaoLog $contribuicaoLog)
if ($responseData['status'] === 'pending') {
// Gera um qr_code
$qr_code_url = $responseData['charges'][0]['last_transaction']['qr_code_url'];
- $qr_code = file_get_contents($qr_code_url);
+ $qr_code_url = file_get_contents($qr_code_url);
+
+ $qr_code = $responseData['charges'][0]['last_transaction']['qr_code'];
+ $idPedido = $responseData['id'];
//envia o link da url
- echo json_encode(['qrcode' => base64_encode($qr_code)]); //enviar posteriormente a cópia do QR para área de transferência junto
+ echo json_encode(['qrcode' => base64_encode($qr_code_url), 'copiaCola' => $qr_code]); //enviar posteriormente a cópia do QR para área de transferência junto
+ return $idPedido;
} else {
echo json_encode(["erro" => "Houve um erro ao gerar o QR CODE de pagamento. Verifique se as informações fornecidas são válidas."]);
return false;
diff --git a/html/apoio/view/boleto.php b/html/apoio/view/boleto.php
index adea3f5ae..78e8cde45 100644
--- a/html/apoio/view/boleto.php
+++ b/html/apoio/view/boleto.php
@@ -19,6 +19,7 @@
+
diff --git a/html/apoio/view/components/btn_avanca.php b/html/apoio/view/components/btn_avanca.php
new file mode 100644
index 000000000..35751f39b
--- /dev/null
+++ b/html/apoio/view/components/btn_avanca.php
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/html/apoio/view/components/contribuicao_dia_vencimento.php b/html/apoio/view/components/contribuicao_dia_vencimento.php
new file mode 100644
index 000000000..de66b4402
--- /dev/null
+++ b/html/apoio/view/components/contribuicao_dia_vencimento.php
@@ -0,0 +1,9 @@
+
+ Escolha uma data de vencimento *
+ 1
+ 5
+ 10
+ 15
+ 20
+ 25
+
\ No newline at end of file
diff --git a/html/apoio/view/components/contribuicao_parcelas.php b/html/apoio/view/components/contribuicao_parcelas.php
new file mode 100644
index 000000000..87c154be8
--- /dev/null
+++ b/html/apoio/view/components/contribuicao_parcelas.php
@@ -0,0 +1,5 @@
+
+ Quantidade de parcelas *
+
+
+
\ No newline at end of file
diff --git a/html/apoio/view/components/contribuicao_valor.php b/html/apoio/view/components/contribuicao_valor.php
index 3be9c7a88..5e6b0f768 100644
--- a/html/apoio/view/components/contribuicao_valor.php
+++ b/html/apoio/view/components/contribuicao_valor.php
@@ -3,9 +3,3 @@
-
-
-
diff --git a/html/apoio/view/mensalidade.php b/html/apoio/view/mensalidade.php
new file mode 100644
index 000000000..c6937e59a
--- /dev/null
+++ b/html/apoio/view/mensalidade.php
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/html/apoio/view/pix.php b/html/apoio/view/pix.php
new file mode 100644
index 000000000..5c19fc44c
--- /dev/null
+++ b/html/apoio/view/pix.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
Escaneie seu QRCode, ou então clique no nosso copia e cola!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/html/funcionario/profile_funcionario.php b/html/funcionario/profile_funcionario.php
index 320a2f742..749215f8f 100755
--- a/html/funcionario/profile_funcionario.php
+++ b/html/funcionario/profile_funcionario.php
@@ -1102,11 +1102,11 @@ class="form-control serie_reservista" maxlength="3"
$infoAdd = $pdo->query("SELECT * FROM funcionario_outrasinfo WHERE funcionario_id_funcionario = '$id_funcionario';")->fetchAll(PDO::FETCH_ASSOC);
$tam = count($infoAdd);
for ($i = 0; $i < $tam; $i++) {
- $dado = $infoAdd[$i]['dado'];
- $desc_id = $infoAdd[$i]['funcionario_listainfo_idfuncionario_listainfo'];
+ $dado = htmlspecialchars($infoAdd[$i]['dado']);
+ $desc_id = htmlspecialchars($infoAdd[$i]['funcionario_listainfo_idfuncionario_listainfo']);
$idInfoAdicional = $infoAdd[$i]['idfunncionario_outrasinfo'];
$descricao = $pdo->query("SELECT descricao FROM funcionario_listainfo WHERE idfuncionario_listainfo = '$desc_id';")->fetchAll(PDO::FETCH_ASSOC);
- $nome_desc = $descricao[0]['descricao'];
+ $nome_desc = htmlspecialchars($descricao[0]['descricao']);
echo
"
@@ -1519,7 +1519,7 @@ function listarInfoAdicional(lista) {
query("SELECT * FROM funcionario_docfuncional ORDER BY nome_docfuncional ASC;")->fetchAll(PDO::FETCH_ASSOC) as $item) {
- echo ("");
+ echo ("");
}
?>
diff --git a/html/funcionario/remuneracao.php b/html/funcionario/remuneracao.php
index f8d0f3c7a..72fd1482d 100644
--- a/html/funcionario/remuneracao.php
+++ b/html/funcionario/remuneracao.php
@@ -1,7 +1,7 @@
'Erro ao estabelecer conexão no banco de dados do servidor.']);
+ exit();
+}
+
+if ($action == "tipo_adicionar") {
+ //$descricao = addslashes($descricao);
+ $query = "SELECT * FROM funcionario_remuneracao_tipo WHERE descricao = :descricao";
$sql = "INSERT INTO funcionario_remuneracao_tipo VALUES (default , :descricao)";
try {
- $query = $pdo->query($query);
- $query = $query->fetch(PDO::FETCH_ASSOC);
- if ($query){
+ $stmt = $pdo->prepare($query);
+ $stmt->bindParam(':descricao', $descricao);
+ $stmt->execute();
+
+ if ($stmt->rowCount() > 0) {
echo '{"aviso": true, "msg": "Tipo de remuneração já existe!"}';
die();
}
+
$prep = $pdo->prepare($sql);
$prep->bindValue(":descricao", $descricao);
$prep->execute();
$response = $pdo->query("SELECT idfuncionario_remuneracao_tipo as id, descricao FROM funcionario_remuneracao_tipo;");
echo json_encode($response->fetchAll(PDO::FETCH_ASSOC));
- } catch (PDOException $th) {
- echo json_encode($th);
+ } catch (PDOException $e) {
+ http_response_code(500);
+ echo json_encode(['erro' => 'Erro ao adicionar um tipo de remuneração no banco de dados do servidor.']);
+ exit();
}
die();
}
-if ($action == "remuneracao_adicionar"){
- $id_funcionario = $_POST['id_funcionario'];
- $id_tipo = $_POST['id_tipo'];
- $valor = $_POST['valor'];
- $inicio = $_POST["inicio"] ? "'".$_POST["inicio"]."'" : "NULL";
- $fim = $_POST["fim"] ? "'".$_POST["fim"]."'" : "NULL";
- $sql = "INSERT INTO funcionario_remuneracao VALUES (default , $id_funcionario, $id_tipo, $valor, $inicio, $fim );";
- $pdo->query($sql);
+if ($action == "remuneracao_adicionar") {
+ $idFuncionario = trim(filter_input(INPUT_POST, 'id_funcionario', FILTER_VALIDATE_INT));
+ $idTipo = trim(filter_input(INPUT_POST, 'id_tipo', FILTER_VALIDATE_INT));
+ $valor = trim(filter_input(INPUT_POST, 'valor', FILTER_VALIDATE_FLOAT));
+ $inicio = trim(filter_input(INPUT_POST, 'inicio', FILTER_SANITIZE_STRING));
+ $fim = trim(filter_input(INPUT_POST, 'fim', FILTER_SANITIZE_STRING));
+
+ if (!$idFuncionario || !is_numeric($idFuncionario) || $idFuncionario < 1) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de um funcionário deve ser um inteiro positivo.']);
+ }
+
+ if (!$idTipo || !is_numeric($idTipo) || $idTipo < 1) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de um tipo deve ser um inteiro positivo.']);
+ }
+
+ if (!$valor || !is_numeric($valor) || $valor < 0) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de um funcionário deve ser um inteiro positivo.']);
+ }
+
+ $inicioDateArray = explode('-', $inicio);
+ $fimDateArray = explode('-', $fim);
+
+ if (!checkdate(intval($inicioDateArray[1]), intval($inicioDateArray[2]), intval($inicioDateArray[0]))) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'A data de início informada não é válida.']);
+ }
+
+ if (!checkdate(intval($fimDateArray[1]), intval($fimDateArray[2]), intval($fimDateArray[0]))) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'A data de fim informada não é válida.']);
+ }
+
+ $sql = "INSERT INTO funcionario_remuneracao VALUES (default , :idFuncionario, :idTipo, :valor, :inicio, :fim);";
+
+ try {
+ $stmt = $pdo->prepare($sql);
+
+ $stmt->bindParam(':idFuncionario', $idFuncionario);
+ $stmt->bindParam(':idTipo', $idTipo);
+ $stmt->bindParam(':valor', $valor);
+ $stmt->bindParam(':inicio', $inicio);
+ $stmt->bindParam(':fim', $fim);
+
+ $stmt->execute();
+ } catch (PDOException $e) {
+ http_response_code(500);
+ echo json_encode(['erro' => 'Erro ao adicionar uma remuneração no banco de dados.']);
+ exit();
+ }
+
$action = "listar";
- // echo('{"sql": "'.$sql.'"}');
}
if ($action == "remuneracao_editar") {
- $id_remuneracao = $_POST["id_remuneracao"] ? $_POST["id_remuneracao"] : null;
- $inicio = $_POST["inicio"] ? "'".$_POST["inicio"]."'" : "NULL";
- $fim = $_POST["fim"] ? "'".$_POST["fim"]."'" : "NULL";
- $sql = "UPDATE funcionario_remuneracao SET funcionario_remuneracao_tipo_idfuncionario_remuneracao_tipo=$id_tipo, valor=$valor, inicio=$inicio, fim=$fim;";
+ $idRemuneracao = trim(filter_input(INPUT_POST, 'id_remuneracao', FILTER_VALIDATE_INT));
+ $inicio = trim(filter_input(INPUT_POST, 'inicio', FILTER_SANITIZE_STRING));
+ $fim = trim(filter_input(INPUT_POST, 'fim', FILTER_SANITIZE_STRING));
+ $idFuncionarioRemuneracao = trim(filter_input(INPUT_POST, 'id_funcionario_remuneracao', FILTER_VALIDATE_INT));
+
+ if (!$idRemuneracao || !is_numeric($idRemuneracao) || $idRemuneracao < 1) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de uma remuneração deve ser um inteiro positivo.']);
+ }
+ if (!$idFuncionarioRemuneracao || !is_numeric($idFuncionarioRemuneracao) || $idFuncionarioRemuneracao < 1) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de uma remuneração deve ser um inteiro positivo.']);
+ }
+
+ $inicioDateArray = explode('-', $inicio);
+ $fimDateArray = explode('-', $fim);
+
+ if (!checkdate(intval($inicioDateArray[1]), intval($inicioDateArray[2]), intval($inicioDateArray[0]))) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'A data de início informada não é válida.']);
+ }
+
+ if (!checkdate(intval($fimDateArray[1]), intval($fimDateArray[2]), intval($fimDateArray[0]))) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'A data de fim informada não é válida.']);
+ }
+
+ try {
+ $sql = "UPDATE funcionario_remuneracao SET funcionario_remuneracao_tipo_idfuncionario_remuneracao_tipo=:idRemuneracao, valor=:valor, inicio=:inicio, fim=:fim WHERE idfuncionario_remuneracao=:idFuncionarioRemuneracao";
+
+ $stmt = $pdo->prepare($sql);
+
+ $stmt->bindParam(':idRemuneracao', $idRemuneracao);
+ $stmt->bindParam(':valor', $valor);
+ $stmt->bindParam(':inicio', $inicio);
+ $stmt->bindParam(':fim', $fim);
+ $stmt->bindParam(':idFuncionarioRemuneracao', $idFuncionarioRemuneracao);
+
+ $stmt->execute();
+ } catch (PDOException $e) {
+ http_response_code(500);
+ echo json_encode(['erro' => 'Erro ao editar uma remuneração no banco de dados.']);
+ exit();
+ }
}
-if ($action == "remover"){
+if ($action == "remover") {
try {
- $pdo->query("DELETE FROM funcionario_remuneracao WHERE idfuncionario_remuneracao = $id_remuneracao;");
+
+ if (!$id_remuneracao || !is_numeric($id_remuneracao) || $id_remuneracao < 1) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de uma remuneração deve ser um inteiro positivo.']);
+ exit();
+ }
+
+ $sqlRemover = "DELETE FROM funcionario_remuneracao WHERE idfuncionario_remuneracao =:idRemuneracao";
+
+ $stmt = $pdo->prepare($sqlRemover);
+
+ $stmt->bindParam(':idRemuneracao', $id_remuneracao);
+
+ $stmt->execute();
+
$action = "listar";
- } catch (\Throwable $th) {
- //throw $th;
+ } catch (PDOException $e) {
+ http_response_code(500);
+ echo json_encode(['erro' => 'Erro ao remover uma remuneração no banco de dados.']);
+ exit();
}
}
-if ($action == "listar"){
+if ($action == "listar") {
+
+ if (!$id_funcionario || !is_numeric($id_funcionario) || $id_funcionario < 1) {
+ http_response_code(400);
+ echo json_encode(['erro' => 'O id de uma remuneração deve ser um inteiro positivo.']);
+ exit();
+ }
+
try {
$sql = "SELECT
rem.idfuncionario_remuneracao as id_remuneracao, rem.funcionario_remuneracao_tipo_idfuncionario_remuneracao_tipo as id_tipo, tipo.descricao, rem.inicio, rem.fim, rem.valor
FROM funcionario_remuneracao rem
JOIN funcionario_remuneracao_tipo tipo ON tipo.idfuncionario_remuneracao_tipo = rem.funcionario_remuneracao_tipo_idfuncionario_remuneracao_tipo
- WHERE rem.funcionario_id_funcionario = $id_funcionario;";
-
- $lista = ($pdo->query($sql))->fetchAll(PDO::FETCH_ASSOC);
+ WHERE rem.funcionario_id_funcionario =:idFuncionario";
+
+ $stmt = $pdo->prepare($sql);
+ $stmt->bindParam(':idFuncionario', $id_funcionario);
+ $stmt->execute();
+
+ $lista = $stmt->fetchAll(PDO::FETCH_ASSOC);
//Formata data para o formato brasileiro
- foreach($lista as $num => $remuneracao){
+ foreach ($lista as $num => $remuneracao) {
$dataInicio = new DateTime($remuneracao['inicio']);
$dataFim = new DateTime($remuneracao['fim']);
@@ -84,7 +206,9 @@
$lista[$num]['fim'] = $dataFim->format('d/m/Y');
}
echo json_encode($lista);
- } catch (\Throwable $th) {
- echo json_encode($th);
+ } catch (PDOException $e) {
+ http_response_code(500);
+ echo json_encode(['erro' => 'Erro ao listar as remunerações do banco de dados.']);
+ exit();
}
}
diff --git a/html/geral/documentos_funcionario.php b/html/geral/documentos_funcionario.php
index dd9e111b6..586eb0279 100644
--- a/html/geral/documentos_funcionario.php
+++ b/html/geral/documentos_funcionario.php
@@ -229,7 +229,7 @@ function adicionar_cargo(){
$id_cargo = $row['id_docfuncional'];
$cargo = $row['nome_docfuncional'];
if($id_cargo != 1 && $id_cargo != 2)
- echo "
-
-
- prepare("SELECT *, sp.nome_sistema as sistema_pagamento, DATE_FORMAT(lc.data, '%d/%m/%Y') as data_geracao, DATE_FORMAT(lc.data_venc_boleto, '%d/%m/%Y') as data_vencimento, s.id_socio as socioid FROM socio AS s LEFT JOIN pessoa AS p ON s.id_pessoa = p.id_pessoa LEFT JOIN socio_tipo AS st ON s.id_sociotipo = st.id_sociotipo LEFT JOIN log_contribuicao AS lc ON lc.id_socio = s.id_socio LEFT JOIN sistema_pagamento as sp ON sp.id = lc.id_sistema WHERE s.id_socio");
- $stmt->execute();
- $query = $stmt->get_result();
- while ($resultado = mysqli_fetch_assoc($query)) {
- $nome = $resultado['nome'];
- $id_log = $resultado['id_log'];
- $sistema_pag = $resultado['sistema_pagamento'];
- if (is_null($id_log)) {
- break;
- }
- $data_geracao = $resultado['data_geracao'];
- $valor = $resultado['valor_boleto'];
- $data_vencimento = $resultado['data_vencimento'];
- echo ("
$nome
$sistema_pag
$data_geracao
R$ $valor
$data_vencimento
");
- }
- ?>
-
-
-
-
Nome
-
Sistema
-
Data geração
-
Valor
-
Data de vencimento
-
-
-
-
-
-
-
-
+
diff --git a/html/socio/sistema/controller/query_geracao_auto.php b/html/socio/sistema/controller/query_geracao_auto.php
index 24ce3e734..5f522ffbb 100755
--- a/html/socio/sistema/controller/query_geracao_auto.php
+++ b/html/socio/sistema/controller/query_geracao_auto.php
@@ -1,4 +1,5 @@
\ No newline at end of file
+ }else */
+
+// Obtendo informações sobre a requisição
+$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'Referer não disponível';
+
+// Mensagem de erro
+$mensagem = [
+ "erro" => true,
+ "mensagem" => "query_geracao_auto.php foi descontinuada. A execução de queries diretamente como parâmetro de requisição não é mais permitida por razões de segurança.",
+ "solucao" => "Atualize sua aplicação para utilizar métodos seguros de acesso ao banco de dados.",
+ "referer" => $referer
+];
+
+// Retorno da mensagem
+header('Content-Type: application/json');
+echo json_encode($mensagem);
+exit;
diff --git a/html/socio/sistema/controller/script/geracao_auto_v3.js b/html/socio/sistema/controller/script/geracao_auto_v3.js
index 004f34b21..a18006a28 100644
--- a/html/socio/sistema/controller/script/geracao_auto_v3.js
+++ b/html/socio/sistema/controller/script/geracao_auto_v3.js
@@ -2,8 +2,8 @@ $(document).ready(function () {
// Geração para sócio único
function procurar_desejado(id_socio) {
- $.post("./controller/query_geracao_auto.php", {
- "query": `SELECT * FROM socio s JOIN pessoa p ON p.id_pessoa = s.id_pessoa WHERE s.id_socio = ${id_socio}`
+ $.get("./get_socio.php", {
+ "id": id_socio
})
.done(function (dados) {
var socios = JSON.parse(dados);
diff --git a/html/socio/sistema/get_socio.php b/html/socio/sistema/get_socio.php
new file mode 100644
index 000000000..de59bb942
--- /dev/null
+++ b/html/socio/sistema/get_socio.php
@@ -0,0 +1,24 @@
+set_charset("utf8");
+
+$stmt = mysqli_prepare($conexao, $query);
+$stmt->bind_param("i", $idSocio);
+$stmt->execute();
+
+$resultado = $stmt->get_result();
+$dados;
+
+while ($linha = $resultado->fetch_assoc()) {
+ $dados[] = $linha;
+}
+
+$stmt->close();
+echo json_encode($dados);