1
resposta

[Projeto] Compra de ingresso , controlando compra com array

Neste código o sistema tem um limite e compras, ele foi pensado em uma situação, imaginária onde precise vender o ingresso mas não tem um banco de dados para controlar. Não foi criado um campo CPF isso é mais educativo, quem quiser experimentar

let limitQtd = 5;
function comprar(){
    
    let cpf="2"
    
    let tipo = document.getElementById("tipo-ingresso");
    // converte para inteiro(parseInt) e pegar o valor inserido(value)
    let qtd = parseInt(document.getElementById("qtd").value);
   /* alert(tipo.value);// o uso do value para pegar o valor
    console.log(qtd.value);*/
    if(qtd > limitQtd){
        alert(`Apenas pode comprar ${limitQtd} por pessoa`)
        return false
    }
    

    // Compra de diferentes ingressos
   
    if (tipo.value == 'pista'){
        comprarPista(qtd);
    } else if (tipo.value == 'superior'){
        comprarSuperior(qtd);
    } else { (tipo.value == 'inferior')
        comprarInferior(qtd)
    }
    verificaCPF(cpf, qtd)
}
// Arrays para armazenar os CPFs e a quantidade de ingressos
let armazenaCPF = [];
let armazenaQtIngresso = [];

function verificaCPF(cpf, qtd) {
    // Verifica se o CPF já está registrado
    let indice = armazenaCPF.indexOf(cpf);
    
    if (indice !== -1) {
        // Se o CPF já existe, soma a nova quantidade de ingressos à anterior
        let totalIngressos = armazenaQtIngresso[indice] + qtd;
        
        if (totalIngressos > limitQtd) {
            alert(`CPF ${cpf} já comprou ${armazenaQtIngresso[indice]} ingressos. 
                   O limite é ${limitQtd}. Compra não permitida.`);
            return false;
        } else {
            armazenaQtIngresso[indice] = totalIngressos;
        }
    } else {
        // Se o CPF ainda não foi registrado, adiciona ao array
        armazenaCPF.push(cpf);
        armazenaQtIngresso.push(qtd);
    }

    console.log("CPFs registrados:", armazenaCPF);
    console.log("Ingressos comprados por CPF:", armazenaQtIngresso);
    return true;
}

function comprarPista(qtd){
    // Captura o valor, converte para inteiro(parseInt) e altera o valor pois não é um formulario
    let qtdPista = parseInt(document.getElementById('qtd-pista').textContent);
    if (qtd > qtdPista){
        alert("Quantidade indisponivel para pista");
    }else{
        //Decrementa a quantidade de ingressos
        qtdPista -= qtd;
        //Recupera o elemento da pagina cm o novo valor da variavel qtdPista
        document.getElementById('qtd-pista').textContent = qtdPista;
        alert("compra realizada dom sucesso");
    }

}
function comprarSuperior(qtd){
    // Captura o valor, converte para inteiro(parseInt) e altera o valor pois não é um formulario
    let qtdSuperior = parseInt(document.getElementById('qtd-superior').textContent);
    if (qtd > qtdSuperior){
        alert("Quantidade indisponivel para Superiro");
    }else{
        qtdSuperior = qtdSuperior - qtd;
        //Recupera o elemento da pagina cm o novo valor da variavel qtdPista
        document.getElementById('qtd-superior').textContent = qtdSuperior;
        alert("compra realizada dom sucesso");
    }
}

function comprarInferior(qtd){
    // Captura o valor, converte para inteiro(parseInt) e altera o valor pois não é um formulario
    let qtdInferior = parseInt(document.getElementById('qtd-inferior').textContent);
    if (qtd > qtdInferior){
        alert("Quantidade indisponivel para Inferior");
    }else{
        qtdInferior = qtdInferior - qtd;
        //Recupera o elemento da pagina cm o novo valor da variavel qtdPista
        document.getElementById('qtd-inferior').textContent = qtdInferior;
        alert("compra realizada dom sucesso");
    }
}
1 resposta

Oi, Ivan! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu projeto tá bem encaminhado! A lógica de controle de quantidade e verificação por CPF sem banco de dados mostra um ótimo entendimento sobre uso de arrays e funções para simular persistência de dados.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!