1
resposta

[Projeto] Minha solução do desafio

Segue minha solução para o Desafio.

Estou fazendo os desafios sem ver a solução dos anteriores.


// Declaração
let quantidadePista;
let quantidadeSuperior;
let quantidadeInferior ;

let quantidadeCompra;
let tipoIngresso;
let tipoIngressoAux;


function comprar() {
    quantidadeCompra = document.getElementById('qtd').value;
    tipoIngresso = document.getElementById('tipo-ingresso').value;

    if (quantidadeCompra > 0) {
        calculaQuantidade(quantidadeCompra,tipoIngresso);
    }else{
        alert('Informar a quantidade de ingresso');
    }
}

//Atualiza valor total
function calculaQuantidade(quantidadeCompra,tipoIngresso) {

    // Pista
    if (tipoIngresso == 'pista' && quantidadeCompra <=quantidadePista){
        quantidadePista = quantidadePista -quantidadeCompra;
        tipoIngressoAux = 'qtd-pista';
        atualizaQuantidade(quantidadePista,tipoIngressoAux);
    } else if (tipoIngresso == 'pista' && quantidadeCompra >quantidadePista){
        alert(`Quantidade Indisponível de ${tipoIngresso}!`);
    }

    // Superior
    if (tipoIngresso == 'superior' && quantidadeCompra <=quantidadeSuperior) {
        quantidadeSuperior = quantidadeSuperior-quantidadeCompra;
        tipoIngressoAux = 'qtd-superior';
        atualizaQuantidade(quantidadeSuperior,tipoIngressoAux);
    } else if (tipoIngresso == 'superior' && quantidadeCompra > quantidadeSuperior){
        alert(`Quantidade Indisponível de ${tipoIngresso}!`);
    }

    // inferior
    if (tipoIngresso == 'inferior' && quantidadeCompra <=quantidadeInferior) {
        quantidadeInferior = quantidadeInferior -quantidadeCompra;
        tipoIngressoAux = 'qtd-inferior';
        atualizaQuantidade(quantidadeInferior,tipoIngressoAux);
    } else if (tipoIngresso == 'inferior' && quantidadeCompra > quantidadeInferior){
        alert(`Quantidade Indisponível de ${tipoIngresso}!`);
    } 
}

function atualizaQuantidade(qtd,tipoIngressoAux) {
    let elementQtd = document.getElementById(tipoIngressoAux);
    elementQtd.innerHTML = `${qtd}`;
}


//Extrai quantidade disponível inicial
function qtdDisponivel() {
    // Extrai disponiveis na pista
    quantidadePista = parseInt(document.getElementById('qtd-pista').textContent);

    // Extrai disponiveis Superior 
    quantidadeSuperior = parseInt(document.getElementById('qtd-superior').textContent);
    
    // Extrai disponiveis inferior 
    quantidadeInferior = parseInt(document.getElementById('qtd-inferior').textContent);
}

// Carrega valores do carrinho ao carregar a página
window.onload = function() {
    qtdDisponivel();
}
1 resposta

Olá, Cristin. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você estruturou a lógica para validar a quantidade disponível de ingressos antes da compra. Separar a atualização de valores em funções específicas facilita a manutenção do código.

Uma sugestão interessante é usar switch case para lidar com os tipos de ingresso. Isso pode deixar o código mais organizado e evitar múltiplas verificações if. Veja este exemplo:


function calculaQuantidade(quantidadeCompra, tipoIngresso) {
    let tipos = {
        pista: "qtd-pista",
        superior: "qtd-superior",
        inferior: "qtd-inferior"
    };

    if (quantidadeCompra <= window[`quantidade${tipoIngresso.charAt(0).toUpperCase() + tipoIngresso.slice(1)}`]) {
        window[`quantidade${tipoIngresso.charAt(0).toUpperCase() + tipoIngresso.slice(1)}`] -= quantidadeCompra;
        atualizaQuantidade(window[`quantidade${tipoIngresso.charAt(0).toUpperCase() + tipoIngresso.slice(1)}`], tipos[tipoIngresso]);
    } else {
        alert(`Quantidade Indisponível de ${tipoIngresso}!`);
    }
}

Isso elimina repetições e usa um objeto para mapear os IDs dos elementos HTML.

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