package examenes.examen20250221.utils;

import examenes.examen20250221.ejercicio01.Producto;
import examenes.examen20250221.ejercicio02.Letra;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class Utils {
    public static int solicitarIntScannerInline(String pregunta) {
        System.out.print(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }

    public static String solicitarStringScannerInline(String pregunta) {
        System.out.print(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextLine();
    }

    public static double solicitarDoubleScannerInline(String pregunta) {
        System.out.print(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextDouble();
    }

    public static List<Producto> ordenarBurbujaProductosPorPrecio(List<Producto> lista) {
        boolean ordenando;
        do {
            ordenando = false;
            for (int i = 0; i < lista.size(); i++) {
                if (i != (lista.size() - 1) && lista.get(i).getPrecio() < lista.get(i + 1).getPrecio()) {
                    Producto elementoTemporal = lista.get(i);
                    lista.set(i, lista.get(i + 1));
                    lista.set(i + 1, elementoTemporal);
                    ordenando = true;
                }
            }
        } while (ordenando);
        return lista;
    }

    public static List<Letra> ordenarBurbujaLetras(List<Letra> lista) {
        boolean ordenando;
        do {
            ordenando = false;
            for (int i = 0; i < lista.size(); i++) {
                if (i != (lista.size() - 1) && lista.get(i).getConteoLetra() < lista.get(i + 1).getConteoLetra()) {
                    Letra elementoTemporal = lista.get(i);
                    lista.set(i, lista.get(i + 1));
                    lista.set(i + 1, elementoTemporal);
                    ordenando = true;
                }
            }
        } while (ordenando);
        return lista;
    }

    public static Date solicitarFechaInline(String formato) {

        Scanner sc = new Scanner(System.in);
        SimpleDateFormat formatoFecha = new SimpleDateFormat(formato);

        while (true) {
            System.out.print("Introduzca una fecha con este formato ( " + formato + " ) > ");
            String fechaIntroducida = sc.nextLine();

            try {
                return formatoFecha.parse(fechaIntroducida);
            } catch (ParseException e) {
                System.out.println("\nVuelva a introducir la fecha, en el formato correcto: " + formato);
            }
        }
    }
}
