package fr.uge.poo.pokemon.retrieve;

import com.pokemonapi.PokemonAPI;

import java.util.Scanner;

public class PokeRetriever {

    private final PokemonAPI pokemonAPI = new PokemonAPI();

    private final Scanner scanner = new Scanner(System.in);

    private void usage() {
        System.out.println("1. Print the list of all pokémon names");
        System.out.println("2. Detailed info on a pokémon");
    }

    private void printAllPokemonNames() {
        var pokemonIds = pokemonAPI.allIds();
        var names = pokemonIds.stream().map(pokemonAPI::nameFromId).toList();
        System.out.println(names);

    }

    public void launch() {
        usage();
        while (scanner.hasNextLine()){
            var cmd = scanner.nextLine();
            switch (cmd) {
                case "1" -> printAllPokemonNames();
                case "2" -> queryPokemonInfo();
                default -> System.out.println("Unrecognized command "+ cmd);
            }
            usage();
        }

    }

    private void queryPokemonInfo() {
        System.out.println("Enter the name of your Pokemon :");
        var name = scanner.nextLine();
        var id = pokemonAPI.idFromName(name);
        if (id == null) {
            System.out.println("Unknow Pokemon " + name);
            return;
        }
        var defense = pokemonAPI.defenseFromId(id);
        var strength = pokemonAPI.strengthFromId(id);
        var hitPoints = pokemonAPI.hitPointsFromId(id);

        System.out.println("Pokemon{" +
                "name='" + name + '\'' +
                ", strength=" + strength +
                ", defense=" + defense +
                ", hitPoints=" + hitPoints +
                '}');
    }

    public static void main(String[] args) {
        new PokeRetriever().launch();
    }
}
