package com.entronomia.aplicaciones.ProyectoSeis.principal;
import com.entronomia.aplicaciones.ProyectoSeis.modelo.DatosSerie;
import com.entronomia.aplicaciones.ProyectoSeis.modelo.DatosTemporada;
import com.entronomia.aplicaciones.ProyectoSeis.modelo.Serie;
import com.entronomia.aplicaciones.ProyectoSeis.servicio.ConsumoAPI;
import com.entronomia.aplicaciones.ProyectoSeis.servicio.ConversorDatos;
import com.sun.source.tree.WhileLoopTree;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import static java.lang.Integer.parseInt;
public class Principal {
    private Scanner entrada = new Scanner(System.in);
    private ConsumoAPI consumoAPI = new ConsumoAPI();
    private final String URL_START = "https://www.omdbapi.com/?t=";
    private final String URL_END = "&apikey=d2b017ac";
    private ConversorDatos conversorDatos = new ConversorDatos();
    private List<DatosSerie> listaDatosSeries = new ArrayList<>();
    public void mostrarMenu() {
        Integer opcion = -1;
        String menu = """
        1. Buscar Serie
        2. Buscar Temporadas en una Serie
        3. Mostrar Series buscadas
        0. Salir
        """;
        while(opcion != 0) {
            System.out.println(menu);
            System.out.println("Elija una entrada por favor: " );
            opcion = Integer.parseInt(entrada.nextLine());
            switch (opcion) {
                case 1:
                    buscarSerie();
                    break;
                case 2:
                    buscarTemporadasPorSerie();
                    break;
                case 3:
                    mostrarSeries();
                    break;
                case 0:
                    System.out.println("Proceso terminado");
                    break;
                default:
                    System.out.println("Error en la entrada elegida");
            }
        }
    }
    private DatosSerie getDatosSerie() {
        System.out.println("Escriba el nombre de la serie, cuyos datos está buscando");
        String nombreSerie = entrada.nextLine();
        var json = consumoAPI.obtenerDatos(URL_START + nombreSerie.replace(" ","+") + URL_END);
        return conversorDatos.obtenerDatos(json, DatosSerie.class);
    }
    private void buscarTemporadasPorSerie() {
        var datosSerie = getDatosSerie();
        List<DatosTemporada> listaTemporadas = new ArrayList<>();
        for (int i = 1; i <= datosSerie.numeroDeTemporadas() ; i++) {
            var json = consumoAPI.obtenerDatos(URL_START + datosSerie.titulo().replace(" ","+") + "&Season=" + i + URL_END);
            var datosTemporada = conversorDatos.obtenerDatos(json, DatosTemporada.class);
            listaTemporadas.add(datosTemporada);
        }
        listaTemporadas.forEach(System.out::println);
    }
    private void buscarSerie() {
        var datosSerie = getDatosSerie();
        listaDatosSeries.add(datosSerie);
        System.out.println(datosSerie);;
    }
    private void mostrarSeries() {
        List<Serie> listaSeries = new ArrayList<>();
        listaSeries = listaDatosSeries.stream().map(Serie::new).collect(Collectors.toList());
        listaSeries.forEach(System.out::println);
    }
}
 
            