package desafio;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Compras {
private int dinheiro = 5000;
private String produto;
private boolean comprando = true;
private Scanner leitura = new Scanner(System.in);
private Map<String,Produto> produtosDisponiveis = new HashMap<>();
private List<Produto> produtosComprados = new ArrayList<>();
public static void main(String[] args) {
Compras compras = new Compras();
System.out.println("Saldo Inicial: " + compras.dinheiro);
compras.estocarProdutos();
do {
System.out.print("O que você quer comprar? : ");
compras.produto = compras.leitura.nextLine().toLowerCase();
if(!compras.produtosDisponiveis.containsKey(compras.produto)) {
System.out.println("Produto não disponivel");
}else {
if(compras.dinheiro >= compras.produtosDisponiveis.get(compras.produto).getPreco()) {
compras.dinheiro -= compras.produtosDisponiveis.get(compras.produto).getPreco();
compras.produtosDisponiveis.get(compras.produto).diminuirQuantidade();
System.out.println("\nCompra realizada!\n");
System.out.println("Quantidade no estoque: " + compras.produtosDisponiveis.get(compras.produto).getQuantidade());
System.out.println("Preço do Produto: " + compras.produtosDisponiveis.get(compras.produto).getPreco());
compras.produtosComprados.add(compras.produtosDisponiveis.get(compras.produto));
System.out.println("Saldo Atual: " + compras.dinheiro);
if(compras.produtosDisponiveis.get(compras.produto).getQuantidade() <= 0) {
compras.produtosDisponiveis.remove(compras.produto);
}
}else {
System.out.println("Dinheiro Insuficiente");
}
}
String escolha;
do {
System.out.print("\nContinuar Comprando? : ");
escolha = compras.leitura.nextLine().toLowerCase();
if(escolha.equals("sim") || escolha.equals("1")) {
compras.comprando = true;
System.out.println("Continuando...\n");
}else if(escolha.equals("nao") || escolha.equals("0")) {
compras.comprando = false;
System.out.println("Parando...\n");
System.out.println("Tudo que você comprou:");
compras.produtosComprados.sort(Comparator.comparing(Produto :: getPreco));
compras.produtosComprados.forEach(produto ->{
System.out.println(produto.getNome() + ", preço: " + produto.getPreco());
});
}
}while(!escolha.equals("sim") && !escolha.equals("1") && !escolha.equals("nao") && !escolha.equals("0"));
}while(compras.comprando);
}
private void estocarProdutos() {
Object[][] produtosEPrecos = {
{"sapato", 120, 12}, {"tenis", 200, 30}, {"pizza", 40, 100}, {"fita", 5, 300}, {"sandalia", 60, 8},
{"hamburguer", 15, 42}, {"fone", 50, 4},{"refrigerante", 3, 16}, {"batata", 6, 32}, {"banana", 2, 36},
{"maçã", 1, 18}, {"mochila", 100, 6}, {"controle", 150, 8}, {"video", 20, 600},{"video game", 2000, 2},
{"skate", 250, 19}, {"agua", 1, 60}, {"coca cola", 4, 26}, {"cafe", 7, 20}, {"bone", 30, 12}, {"caderno", 10, 7},
{"lapis", 1, 13}, {"caneta", 1, 13}, {"lapiseira", 5, 13}, {"giz", 2, 13}, {"espada", 300, 1}, {"estojo", 15, 20},
{"curativo", 10, 64}, {"bandagem", 8, 32}, {"relogio", 500, 3}, {"churrasco", 25, 34}, {"musica", 10, 450},
{"churrasqueira", 150, 4}, {"caneca", 20, 6},{"copo", 5, 24}, {"microfone", 100, 10}, {"sorvete", 10, 21},
{"computador", 4000, 2}, {"teclado gamer", 300, 5}, {"teclado", 100, 11},{"mouse gamer", 200, 5}, {"mouse", 80, 11},
{"arroz", 3, 30}, {"feijao", 4, 30}, {"tapete", 30, 6}, {"cadeira", 200, 12}, {"mesa", 150, 4},
{"lampada", 15, 14}, {"camisa", 50, 32}, {"camiseta", 40, 32}, {"calça", 80, 32}, {"vassoura", 10, 6},
{"sabão", 5, 10}, {"liquificador", 120, 4}, {"caneca java", 30 , 1}, {"travesseiro", 60, 6}, {"colchão", 10, 7},
{"escova", 3, 17}, {"pente", 4, 7}, {"pasta de dente", 2, 20}, {"escova de dentes", 5, 24}, {"blusa", 80, 32},
{"cinto", 40, 12}, {"oculos", 20, 16}, {"leite", 4, 20},{"celular", 1500, 12}
};
for(int i = 0;i < produtosEPrecos.length;i++) {
produtosDisponiveis.put((String)produtosEPrecos[i][0],new Produto((String)produtosEPrecos[i][0],(Integer)produtosEPrecos[i][1],(Integer)produtosEPrecos[i][2]));
}
}
}
class Produto {
private String nome;
private int preco;
private int quantidade;
public Produto(String nome,int preco,int quantidade) {
this.preco = preco;
this.quantidade = quantidade;
this.nome = nome;
}
public String getNome() {
return nome;
}
public int getPreco() {
return preco;
}
public int getQuantidade() {
return quantidade;
}
public void diminuirQuantidade() {
quantidade--;
}
}