Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Entrega de atividade

boa tarde, espero que estejam bem... Vamos praticar?

  1. No projeto Alugames, implemente uma confirmação de devolução. /esse meu código, está funcionando, porém sei que pode melhorar, mas não estou conseguindo, tentei deixar melhor, e não consegui, no caso está perguntando 2 vezes na hora de devolver o jogo, tirei o prompt do nome para devolver mas não deu certo, alguem poderia me falar como posso melhorar e deixar mas fácil para compreender? var totalJogosAlugados = 0;

function alterarStatus(id) { let gameClicado = document.getElementById(game-${id}); let imagem = gameClicado.querySelector('.dashboard__item__img'); let botao = gameClicado.querySelector('.dashboard__item__button'); let nomeJogo = gameClicado.querySelector('.dashboard__item__name'); let nomePessoa = prompt("Qual é o seu nome?");

// Verifica se o usuário cancelou a operação

//antes, tinha colocado a variavel "var totalJogosAlugados aqui, mas não funcionou, não entendi o porque?

if (nomePessoa === null) {
    return;
}

// Incrementa o total de jogos alugados apenas se a ação for "Alugar"
if (botao.textContent === "Alugar") {
    totalJogosAlugados++;
}

if (botao.textContent === "Alugar") {
    botao.textContent = "Devolver";

    alert(`Tudo bem ${nomePessoa}, já pode pegar o jogo ${nomeJogo.textContent}, no total da loja, ${totalJogosAlugados} já foram alugados.`);
} else if (botao.textContent === "Devolver") {
    // Verifica se a pessoa que está devolvendo é a mesma que alugou
    let nomeAluguel = prompt("Qual é o nome da pessoa que alugou o jogo?");
    
    if (nomeAluguel === null || nomeAluguel.toLowerCase() !== nomePessoa.toLowerCase()) {
        alert("Entre com o nome correto da pessoa que alugou o jogo, para que ele possa ser devolvido.");
        return;
    }

    botao.textContent = "Alugar";
    alert(`Tudo bem ${nomePessoa}, obrigado por devolver o jogo ${nomeJogo.textContent}`);
}

if (imagem.classList.contains('dashboard__item__img--rented')) {
    imagem.classList.remove('dashboard__item__img--rented');
    botao.classList.remove('dashboard__item__button--return');
    botao.textContent = 'Alugar';
} else {
    imagem.classList.add('dashboard__item__img--rented');
    botao.classList.add('dashboard__item__button--return');
    botao.textContent = 'Devolver';
}

}

  1. No projeto Alugames, crie uma função para imprimir no console a informação sobre quantos jogos foram alugados. Está no código acima, entretanto, coloquei como alert, agora uma outra dúvida, a variável "var nomePessoa", parece que está armazenando todos os nomes , exemplo: va hora que vai alugar, pergunta o nome, e salva, na hora que devolve, ele aceita qualquer outro nome que tenha escrito antes, no caso: alugar o monópolis, qual nome pessoa = Lia. alugar jogo Ticket to Ride, nome pessoa = Tadeu. se para devover o jogo monópolis ele aceita o nom Tadeu, que alugou o jogo Ticket to Ride, como faço para somente cada pessoa que pegou determinado jogo, devolva o jogo correto?
3 respostas

E aí, blz? Olha, dei uma olhada no seu código e posso te ajudar a resolver essa parada.

Sobre a parada de perguntar o nome duas vezes, acho que é porque você tá pedindo o nome de quem tá devolvendo depois de já ter mudado o texto do botão. Aí, quando cê pede o nome lá embaixo, ele já mudou pra "Alugar" de novo, e confunde tudo.

Sugestão: Manda essa parte:

let nomePessoa = prompt("Qual é o seu nome?");

Lá pra cima, assim que clicar em "Devolver", sacou? Assim, você pede o nome antes de mudar o texto do botão. Tipo assim:

if (botao.textContent === "Alugar") {
    let nomePessoa = prompt("Qual é o seu nome?");
    // o resto do seu código...

Quanto à parada de aceitar qualquer nome na devolução, acho que rola tu criar um objeto lá no começo do código, tipo pessoasQueAlugaram, que armazena os nomes de quem alugou cada jogo. Cria um objeto assim:

let pessoasQueAlugaram = {};

Aí, quando alguém alugar, guarda o nome desse alguém no objeto, tipo assim:

pessoasQueAlugaram[nomeJogo.textContent] = nomePessoa;

E na hora de devolver, verifica se a pessoa que tá devolvendo é a mesma que alugou, tipo assim:

if (nomeAluguel === null || pessoasQueAlugaram[nomeJogo.textContent].toLowerCase() !== nomePessoa.toLowerCase()) {
    // o resto do seu código...

Acho que assim só quem alugou pode devolver o jogo certo. Testa aí e vê se resolve!

meu amigo, muito obrigado, vou testar e já te dou o retorno, borigado mesmo pelas dicas, já volto...

solução!

meu amigo, deu super certo, ficou perfeito, só tive que mudar lá no HTML, o texto do botão devolver, e retirar " botao.textContent = 'Alugar';--reinted, pois no último jogo, estava sendo necessário clicar duas vezes, para que na 2ª vez normalizasse, ficou ótimo, muito obrigado pelo seu comentário e tempo, forte abraço meu amigo...