1
resposta

[Sugestão] Fiz de outra maneira

Boa noite!! Sei que está muito redundante e pode ser bastante melhorado, mas tive essa ideia


let produtoSelecionado = '';
let qtdIngressosDisponivel = 0;


function comprar() {

    produtoSelecionado = document.getElementById('tipo-ingresso').value;
    console.log(`o produto selecionado foi ${produtoSelecionado}`);

    let quantidadeInformada = parseInt(document.getElementById('qtd').value);
    console.log(`a quantidade de ingresso informado é: ${quantidadeInformada}`);

    let elementoQtdPista = document.getElementById('qtd-pista');
    let qtdPista = parseInt(elementoQtdPista.textContent);

    let elementoQtdSuperior = document.getElementById('qtd-superior');
    let qtdSuperior = parseInt(elementoQtdSuperior.textContent);


    let elementoQtdInferior = document.getElementById('qtd-inferior');
    let qtdInferior = parseInt(elementoQtdInferior.textContent);


    if (produtoSelecionado === 'pista') {

        qtdIngressosDisponivel = qtdPista;

        if (quantidadeInformada > 0 && quantidadeInformada <= qtdPista) {
            qtdIngressosDisponivel = qtdPista - quantidadeInformada;
            console.log('qtd pista: ' + qtdIngressosDisponivel);
            elementoQtdPista.textContent = `${qtdIngressosDisponivel}`;

        } else {
            mensagemDeErro(produtoSelecionado, qtdIngressosDisponivel);
        }


    } else if (produtoSelecionado === 'superior') {

        qtdIngressosDisponivel = qtdSuperior;

        if (quantidadeInformada > 0 && quantidadeInformada <= qtdSuperior) {
            qtdIngressosDisponivel = qtdSuperior - quantidadeInformada;
            console.log('qtd superior: ' + qtdIngressosDisponivel);
            elementoQtdSuperior.textContent = `${qtdIngressosDisponivel}`;

        } else {
            mensagemDeErro(produtoSelecionado, qtdIngressosDisponivel);
        }

    } else if (produtoSelecionado === 'inferior') {

        qtdIngressosDisponivel = qtdInferior;

        if (quantidadeInformada > 0 && quantidadeInformada <= qtdInferior) {
            qtdIngressosDisponivel = qtdInferior - quantidadeInformada;
            console.log('qtd inferior: ' + qtdIngressosDisponivel);
            elementoQtdInferior.textContent = `${qtdIngressosDisponivel}`;

        } else {
            mensagemDeErro(produtoSelecionado, qtdIngressosDisponivel);
        }
    }

}

function mensagemDeErro(produto, quantidadeIngressoDisponivel) {
    alert(`Valor informado inferior ao minimo 1 ou maior que o disponível para esse setor "${produto}" qtd ingressos disponíveis: ${quantidadeIngressoDisponivel}`);
}
1 resposta

Olá, João! Boa noite!

Que legal que você está experimentando e tentando resolver o desafio de uma maneira diferente! Isso é uma excelente forma de aprender. Vamos dar uma olhada no seu código.

Seu código parece estar funcionando para o propósito de selecionar o tipo de ingresso e subtrair a quantidade de ingressos disponíveis. No entanto, você mencionou que ele pode ser melhorado. Aqui estão algumas sugestões para refinar o seu código:

  1. Reduzir Redundância: Você pode criar uma função auxiliar para lidar com a lógica repetitiva de verificar e atualizar a quantidade de ingressos disponíveis. Isso vai tornar o código mais limpo e fácil de manter.

    function atualizarQuantidade(produto, quantidadeInformada, elementoQtd) {
        let qtdDisponivel = parseInt(elementoQtd.textContent);
        if (quantidadeInformada > 0 && quantidadeInformada <= qtdDisponivel) {
            qtdDisponivel -= quantidadeInformada;
            console.log(`qtd ${produto}: ${qtdDisponivel}`);
            elementoQtd.textContent = `${qtdDisponivel}`;
        } else {
            mensagemDeErro(produto, qtdDisponivel);
        }
    }
    

    E então, dentro da função comprar(), você pode chamar essa função auxiliar:

    if (produtoSelecionado === 'pista') {
        atualizarQuantidade('pista', quantidadeInformada, elementoQtdPista);
    } else if (produtoSelecionado === 'superior') {
        atualizarQuantidade('superior', quantidadeInformada, elementoQtdSuperior);
    } else if (produtoSelecionado === 'inferior') {
        atualizarQuantidade('inferior', quantidadeInformada, elementoQtdInferior);
    }
    
  2. Validação de Entrada: Certifique-se de que a entrada do usuário é válida antes de tentar processá-la. Por exemplo, verificar se a quantidade informada é um número válido.

    let quantidadeInformada = parseInt(document.getElementById('qtd').value);
    if (isNaN(quantidadeInformada)) {
        alert('Por favor, insira uma quantidade válida.');
        return;
    }
    
  3. Feedback ao Usuário: Além de usar console.log, você pode considerar fornecer feedback visual ao usuário na página, talvez exibindo uma mensagem de sucesso ou erro diretamente na interface.

Espero que essas sugestões ajudem a melhorar seu código e que você continue se divertindo enquanto aprende lógica de programação! Bons estudos!