0
respostas

Resolução - 21 Painel de controle de produtos

Achei bem interessante esta ultima atividade, foi possível praticar bem funções e métodos.

// 21 Painel de controle de produtos

// Você está desenvolvendo um painel de vendas para a área comercial de uma empresa. O time quer uma visão clara de quais produtos venderam bem, quanto cada um arrecadou, e qual gerou mais lucro.

// Você precisa:

// Mostrar todos os produtos (nome, preço, quantidade).
// Filtrar os que venderam mais de 100 unidades e exibir seus nomes.
// Calcular os totais de venda de cada produto.
// Descobrir o mais lucrativo.

// Exemplo de entrada:

// const produtos = [
//   { nome: 'Notebook', preco: 2500, quantidadeVendida: 75 },
//   { nome: 'Mouse', preco: 100, quantidadeVendida: 180 },
//   { nome: 'Teclado', preco: 150, quantidadeVendida: 125 },
//   { nome: 'Monitor', preco: 900, quantidadeVendida: 95 }
// ];

// Saída esperada:
// Relatório de produtos vendidos:

// Produto: Notebook | Preço: 2500 | Quantidade vendida: 75
// Produto: Mouse | Preço: 100 | Quantidade vendida: 180
// Produto: Teclado | Preço: 150 | Quantidade vendida: 125
// Produto: Monitor | Preço: 900 | Quantidade vendida: 95

// Produtos com alto volume de vendas (> 100 unidades):
// Mouse
// Teclado

// Total de vendas por produto:
// Notebook: R$ 187500
// Mouse: R$ 18000
// Teclado: R$ 18750
// Monitor: R$ 85500

// Produto mais lucrativo: Notebook com R$ 187500 em vendas.

Resolução:

// Mostrar todos os produtos (nome, preço, quantidade).
function listarProdutos(lista){
  lista.forEach(produto => console.log(`Produto: ${produto.nome} | Preço: ${produto.preco.toFixed(2)} | Quantidade vendida: ${produto.quantidadeVendida}`));
}

// Filtrar os que venderam mais de 100 unidades e exibir seus nomes.
function filtrarProdutos(lista){
  return lista.filter(produto => produto.quantidadeVendida > 100)
}

// Calcular os totais de venda de cada produto.
function calcularVendaPorProduto(lista){
  return lista.map(produto => ({
    nome: produto.nome,
    totalVenda: produto.preco * produto.quantidadeVendida
  }));
}

const produtos = [
  { nome: 'Notebook', preco: 2500, quantidadeVendida: 75 },
  { nome: 'Mouse', preco: 100, quantidadeVendida: 180 },
  { nome: 'Teclado', preco: 150, quantidadeVendida: 125 },
  { nome: 'Monitor', preco: 900, quantidadeVendida: 95 }
];

// fintrando (> 100 unidades)
const maisVendidos = filtrarProdutos(produtos);

// calculando total de vendas
const totalVendas = calcularVendaPorProduto(produtos);

// verificando o mais lucrativo
const maisLucrativo = totalVendas.reduce((max, produto) => produto.totalVenda > max.totalVenda ? produto : max);

// exibindo relatórios
console.log("Relatório de produtos vendidos:");
listarProdutos(produtos);

// exibindo produtos com mais de 100 unidades vendidas
console.log("\nProdutos com alto volume de vendas (> 100 unidades):");
maisVendidos.forEach(produto => console.log(produto.nome));

// exibindo total de vendas por produto
console.log("\nTotal de vendas por produto:");
totalVendas.forEach((produto) => {
  console.log(`${produto.nome}: R$ ${produto.totalVenda.toFixed(2)}`);
});

// exibindo produto mais lucrativo
console.log(`\nProduto mais lucrativo: ${maisLucrativo.nome} com R$ ${maisLucrativo.totalVenda.toFixed(2)} em vendas.`);