package com.entronomia.aplicaciones.ProyectoSeis.principal;
import com.entronomia.aplicaciones.ProyectoSeis.Repositorio.SerieRepository;
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<>();
private SerieRepository serieRepository;
public Principal(SerieRepository serieRepository) {
this.serieRepository = serieRepository;
}
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);
Serie serie = new Serie(datosSerie);
serieRepository.save(serie);
System.out.println(datosSerie);
}
private void mostrarSeries() {
// List<Serie> listaSeries = new ArrayList<>();
// listaSeries = listaDatosSeries.stream().map(Serie::new).collect(Collectors.toList());
List<Serie> listaSeries = serieRepository.findAll();
listaSeries.forEach(System.out::println);
}
}