package examenes.examen20250131.utils;

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<String> ordenarBurbujaListaStrings(List<String> lista) {
        boolean ordenando;
        do {
            ordenando = false;
            for (int i = 0; i < lista.size(); i++) {
                if (i != (lista.size() - 1) && comparaCadenas(lista.get(i), lista.get(i + 1)) == 1) {
                    String elementoTemporal = lista.get(i);
                    lista.set(i, lista.get(i + 1));
                    lista.set(i + 1, elementoTemporal);
                    ordenando = true;
                }
            }
        } while (ordenando);
        return lista;
    }

    /**
     * Este método es del profesor
     * @param string1
     * @param string2
     * @return
     */
    public static int comparaCadenas(String string1, String string2) {

        String s1 = string1.toLowerCase();
        String s2 = string2.toLowerCase();

        int menorLongitud = Math.min(s1.length(), s2.length());

        for (int i = 0; i < menorLongitud; i++) {
            if (s1.charAt(i) < s2.charAt(i)) return -1;
            else if (s1.charAt(i) > s2.charAt(i)) return 1;
        }

        if (s1.length() == s2.length()) return 0;
        return (s1.length() < s2.length())? -1 : 1;
    }

    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);
            }
        }
    }
}
