Skip to content

Commit

Permalink
Criação das funções espcíficas de mensalidade.js [Issue #767]
Browse files Browse the repository at this point in the history
  • Loading branch information
GabrielPintoSouza committed Dec 6, 2024
1 parent bb27f56 commit 138435b
Show file tree
Hide file tree
Showing 4 changed files with 161 additions and 3 deletions.
8 changes: 8 additions & 0 deletions html/apoio/controller/ContribuicaoLogController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
101 changes: 101 additions & 0 deletions html/apoio/public/js/mensalidade.js
Original file line number Diff line number Diff line change
@@ -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);
51 changes: 50 additions & 1 deletion html/apoio/public/js/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand Down Expand Up @@ -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";
Expand Down
4 changes: 2 additions & 2 deletions html/apoio/view/mensalidade.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?php
$title = 'Emitir boleto';
$title = 'Emitir mensalidade';
require_once './templates/header.php';

$textoTipoContribuicao = 'GERAR MENSALIDADE';
$tipoContribuicao = 'CARNE';
$tipoContribuicao = 'MENSALIDADE';

?>
<div class="container-contact100">
Expand Down

0 comments on commit 138435b

Please sign in to comment.