From 7df8262b58e3ac50fa7b69fee67285ac10812066 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Thu, 5 Dec 2024 10:40:57 -0300 Subject: [PATCH 01/12] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20de=20SQL=20Injectio?= =?UTF-8?q?n=20em=20remuneracao.php=20[Issue=20#822]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/funcionario/remuneracao.php | 196 +++++++++++++++++++++++++------ 1 file changed, 160 insertions(+), 36 deletions(-) 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(); } } From 3a26f28e9595e9495ce32117f794b488011920f8 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Thu, 5 Dec 2024 11:35:35 -0300 Subject: [PATCH 02/12] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20XSS=20[Issue=20#815?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/funcionario/profile_funcionario.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/funcionario/profile_funcionario.php b/html/funcionario/profile_funcionario.php index 320a2f742..466a3d7fb 100755 --- a/html/funcionario/profile_funcionario.php +++ b/html/funcionario/profile_funcionario.php @@ -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 (""); } ?> From b1b4ac875bda137af439584cfc0fff7e4d511ef6 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Fri, 6 Dec 2024 08:19:06 -0300 Subject: [PATCH 03/12] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20XSS=20[Issue=20#816?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/funcionario/profile_funcionario.php | 8 ++++---- html/geral/documentos_funcionario.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/html/funcionario/profile_funcionario.php b/html/funcionario/profile_funcionario.php index 466a3d7fb..239547ba9 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']; - $idInfoAdicional = $infoAdd[$i]['idfunncionario_outrasinfo']; + $dado = htmlspecialchars($infoAdd[$i]['dado']); + $desc_id = htmlspecialchars($infoAdd[$i]['funcionario_listainfo_idfuncionario_listainfo']); + $idInfoAdicional = htmlspecialchars($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 " 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 "$id_cargoDeletar"; + echo "$id_cargoDeletar"; } ?> From bb27f568c8123b7eca78e99bb3cc86245516d5c0 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Fri, 6 Dec 2024 09:27:51 -0300 Subject: [PATCH 04/12] =?UTF-8?q?Cria=C3=A7=C3=A3o=20dos=20componentes=20d?= =?UTF-8?q?a=20p=C3=A1gina=20din=C3=A2mica=201=20de=20mensalidade.php=20[I?= =?UTF-8?q?ssue=20#767]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/view/boleto.php | 1 + html/apoio/view/components/btn_avanca.php | 6 ++ .../contribuicao_dia_vencimento.php | 9 +++ .../view/components/contribuicao_parcelas.php | 5 ++ .../view/components/contribuicao_valor.php | 6 -- html/apoio/view/mensalidade.php | 63 +++++++++++++++++++ html/funcionario/profile_funcionario.php | 2 +- 7 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 html/apoio/view/components/btn_avanca.php create mode 100644 html/apoio/view/components/contribuicao_dia_vencimento.php create mode 100644 html/apoio/view/components/contribuicao_parcelas.php create mode 100644 html/apoio/view/mensalidade.php 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/mensalidade.php b/html/apoio/view/mensalidade.php new file mode 100644 index 000000000..d7e746869 --- /dev/null +++ b/html/apoio/view/mensalidade.php @@ -0,0 +1,63 @@ + +
+
+ + + + +
+ + + +
+ + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/funcionario/profile_funcionario.php b/html/funcionario/profile_funcionario.php index 239547ba9..749215f8f 100755 --- a/html/funcionario/profile_funcionario.php +++ b/html/funcionario/profile_funcionario.php @@ -1104,7 +1104,7 @@ class="form-control serie_reservista" maxlength="3" for ($i = 0; $i < $tam; $i++) { $dado = htmlspecialchars($infoAdd[$i]['dado']); $desc_id = htmlspecialchars($infoAdd[$i]['funcionario_listainfo_idfuncionario_listainfo']); - $idInfoAdicional = htmlspecialchars($infoAdd[$i]['idfunncionario_outrasinfo']); + $idInfoAdicional = $infoAdd[$i]['idfunncionario_outrasinfo']; $descricao = $pdo->query("SELECT descricao FROM funcionario_listainfo WHERE idfuncionario_listainfo = '$desc_id';")->fetchAll(PDO::FETCH_ASSOC); $nome_desc = htmlspecialchars($descricao[0]['descricao']); echo From 138435b0649169e6b83cb84ce0b9b7acbef86d6e Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Fri, 6 Dec 2024 10:39:06 -0300 Subject: [PATCH 05/12] =?UTF-8?q?Cria=C3=A7=C3=A3o=20das=20fun=C3=A7=C3=B5?= =?UTF-8?q?es=20espc=C3=ADficas=20de=20mensalidade.js=20[Issue=20#767]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ContribuicaoLogController.php | 8 ++ html/apoio/public/js/mensalidade.js | 101 ++++++++++++++++++ html/apoio/public/js/util.js | 51 ++++++++- html/apoio/view/mensalidade.php | 4 +- 4 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 html/apoio/public/js/mensalidade.js diff --git a/html/apoio/controller/ContribuicaoLogController.php b/html/apoio/controller/ContribuicaoLogController.php index 15692e674..b5f6938f6 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 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/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/view/mensalidade.php b/html/apoio/view/mensalidade.php index d7e746869..c6937e59a 100644 --- a/html/apoio/view/mensalidade.php +++ b/html/apoio/view/mensalidade.php @@ -1,9 +1,9 @@
From f7330991aa84bb7e2f7f3eac39be30db8f06a592 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Mon, 9 Dec 2024 10:48:17 -0300 Subject: [PATCH 06/12] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20SQL=20Injection=20[?= =?UTF-8?q?Issue=20#825]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sistema/controller/query_geracao_auto.php | 20 ++++++++++++++-- .../controller/script/geracao_auto_v3.js | 4 ++-- html/socio/sistema/get_socio.php | 24 +++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 html/socio/sistema/get_socio.php 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); From b0fcc6fe004ce84f22ddf15c9f25715c9e868f98 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Mon, 9 Dec 2024 12:23:04 -0300 Subject: [PATCH 07/12] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20XSS=20[Issue=20#826?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/Personalizacao_campo.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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()) . ' '); From adebd99529069ec5473203e2f0401616c7311b69 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 10 Dec 2024 08:07:45 -0300 Subject: [PATCH 08/12] =?UTF-8?q?Adi=C3=A7=C3=A3o=20da=20fun=C3=A7=C3=A3o?= =?UTF-8?q?=20htmlspecialchars=20nos=20m=C3=A9todos=20display=5Ftxt=20e=20?= =?UTF-8?q?display=5Fstr=20da=20classe=20Display=5Fcampo=20[Issue=20#826]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/Personalizacao_display.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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('

' . $this->getCampo() . '

-

' . nl2br($this->getConteudo()) . '

+

' . nl2br(htmlspecialchars($this->getConteudo())) . '

'); }else{ $this->setConteudo(NO_DATA); echo('

' . $this->getCampo() . '

-

' . nl2br($this->getConteudo()) . '

+

' . nl2br(htmlspecialchars($this->getConteudo())) . '

'); } } @@ -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()))); } } From b2410ad9ee40bcc5bc6c342458741899d77f2052 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 10 Dec 2024 09:41:04 -0300 Subject: [PATCH 09/12] =?UTF-8?q?Altera=C3=A7=C3=A3o=20do=20bot=C3=A3o=20S?= =?UTF-8?q?imular=20gera=C3=A7=C3=A3o=20para=20Gerar=20Boleto=20[Issue=20#?= =?UTF-8?q?805]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sistema/controller/import_conteudo_psociogeracao.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/socio/sistema/controller/import_conteudo_psociogeracao.php b/html/socio/sistema/controller/import_conteudo_psociogeracao.php index 1e69a54df..4b430db94 100755 --- a/html/socio/sistema/controller/import_conteudo_psociogeracao.php +++ b/html/socio/sistema/controller/import_conteudo_psociogeracao.php @@ -106,8 +106,8 @@
From efb3ea460b179ca6e0c2fb32f38136f47d515a26 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 10 Dec 2024 10:06:37 -0300 Subject: [PATCH 10/12] =?UTF-8?q?Remo=C3=A7=C3=A3o=20da=20tabela=20de=20?= =?UTF-8?q?=C3=BAltimas=20doa=C3=A7=C3=B5es=20[Issue=20#820]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/import_conteudo_socios.php | 63 +------------------ 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/html/socio/sistema/controller/import_conteudo_socios.php b/html/socio/sistema/controller/import_conteudo_socios.php index 20afe8134..13262a48f 100755 --- a/html/socio/sistema/controller/import_conteudo_socios.php +++ b/html/socio/sistema/controller/import_conteudo_socios.php @@ -214,68 +214,7 @@ -
-
-

Últimas doações

- -
- -
- -
- -
- - - - - - - - - - - - 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 (""); - } - ?> - - - - - - - - - - -
NomeSistemaData geraçãoValorData de vencimento
$nome$sistema_pag$data_geracaoR$ $valor$data_vencimento
NomeSistemaData geraçãoValorData de vencimento
- - -
- -
+
From 8ec1d5dfc1b08638ebe0bea7551e9cf656fe1b7a Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 10 Dec 2024 12:54:23 -0300 Subject: [PATCH 11/12] =?UTF-8?q?Cria=C3=A7=C3=A3o=20da=20p=C3=A1gina=20pi?= =?UTF-8?q?x.php=20[Issue=20#767]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ContribuicaoLogController.php | 8 +- html/apoio/public/js/pix.js | 102 ++++++++++++++++++ html/apoio/service/PagarMePixService.php | 8 +- html/apoio/view/pix.php | 66 ++++++++++++ 4 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 html/apoio/public/js/pix.js create mode 100644 html/apoio/view/pix.php diff --git a/html/apoio/controller/ContribuicaoLogController.php b/html/apoio/controller/ContribuicaoLogController.php index b5f6938f6..9c472236c 100755 --- a/html/apoio/controller/ContribuicaoLogController.php +++ b/html/apoio/controller/ContribuicaoLogController.php @@ -332,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'); @@ -412,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/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/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/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 @@ + +
+
+ + + + +
+ + + +
+ + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + \ No newline at end of file From 8352abd64090dc6533bcf2e2e251910a39c9e141 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Wed, 11 Dec 2024 08:24:37 -0300 Subject: [PATCH 12/12] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20SQL=20Injection=20[?= =?UTF-8?q?Issue=20#827]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controle/SaudeControle.php | 293 +++++++++++++++++++------------------ 1 file changed, 154 insertions(+), 139 deletions(-) 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 +}