package com.mycompany.app;

import com.mycompany.app.util.ConexionBaseDatos;

import java.sql.SQLException;
import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * Hello world!
 *
 */

public class Juego
{
    public static void mensajes() {
        System.out.println("1. Seleccionar juego");
        System.out.println("2. Ingresar saldo inicial del jugador");
        System.out.println("3. Consultar saldo del jugador");
        System.out.println("4. Consultar historico de resultados");
        System.out.println("5. Salir");
        System.out.println("Escribe una de las opciones: ");
    }

    public static void main( String[] args ) {
        Scanner entrada = new Scanner(System.in);
        int contador = 0;
        Float carta = 0F;
        boolean salir = false;
        String nombre;
        int opcion;
        int eleccion;
        int saldo;
        System.out.println("Escribe su nick: ");
        nombre = entrada.nextLine();
        mensajes();
        while (!salir) {
            try {
                ConexionBaseDatos conn = new ConexionBaseDatos();
                opcion = entrada.nextInt();

                switch (opcion) {
                    case 1:
                        Jugador jugador = conn.consultarSaldo(nombre);
                        if(jugador.getSaldo() == null) {
                            System.out.println("Ingrese su saldo en el menu");
                        }
                        else {
                            Float puntuacion = 0F;
                            Crupier crupier = new Crupier();
                            crupier.getBarajar();
                            BlackJack blackJack = new BlackJack();
                            blackJack.getLista().add(jugador);
                            Mano mano = new Mano();
                            System.out.println("Apuesta: ");
                            int apuesta = entrada.nextInt();
                            System.out.println("1. BlackJack");
                            int opt = entrada.nextInt();
                            do {
                                contador = 0;
                                while(contador<2) {
                                    System.out.println("1 (pedir carta) o 2 (mostrar cartas)");
                                    eleccion = entrada.nextInt();
                                    if (eleccion == 1) {
                                        carta = crupier.darCarta().getValor();
                                        puntuacion += carta;
                                        System.out.println("Carta del crupier: " + carta);
                                        mano.getCartas().add(crupier.darCarta());
                                        System.out.println(mano.getCartas().get(mano.getCartas().size() - 1).getValor());
                                        mano.setValores();
                                    } else {
                                        System.out.println("Mostrando cartas");
                                        mano.mostrarCartas();
                                        carta = crupier.darCarta().getValor();
                                        puntuacion += carta;
                                        System.out.println("Carta del crupier: " + carta);
                                    }
                                    contador++;
                                }
                                if(contador==2){
                                    if(mano.getValor() > puntuacion && mano.getValor() < 21) {
                                        System.out.println("Ganaste");
                                        conn.actualizarSaldo(nombre, apuesta  + (jugador.getSaldo() - apuesta));
                                    }
                                    else if(mano.getValor() == 21) {
                                        System.out.println("BlackJack");
                                        conn.actualizarSaldo(nombre, apuesta * 3 + (jugador.getSaldo() - apuesta));
                                    }
                                    else if(puntuacion > 21) {
                                        System.out.println("Ganaste");
                                        conn.actualizarSaldo(nombre, apuesta + (jugador.getSaldo() - apuesta));
                                    }
                                    else {
                                        System.out.println("Perdiste");
                                        conn.actualizarSaldo(nombre, (jugador.getSaldo() - apuesta));
                                    }
                                    System.out.println("1. Jugar otra vez");
                                    opt = entrada.nextInt();
                                    if(opt!=1) {
                                        conn.insertarResultados(nombre, blackJack.getRonda());
                                    }
                                    blackJack.nuevaRonda();
                                }
                            }while (opt == 1);
                        }
                        break;
                    case 2:
                        Jugador jugadores = conn.consultarSaldo(nombre);
                        System.out.println("Ingrese su saldo: ");
                        saldo = entrada.nextInt();
                        if(jugadores.getNombre() == null) {
                            conn.insertarSaldo(nombre, (float) saldo);
                        } else {
                            conn.actualizarSaldo(nombre, (float) saldo);
                        }
                        break;
                    case 3:
                        conn.consultarSaldo(nombre);
                        break;
                    case 4:
                        conn.consultarResultados(nombre);
                        break;
                    case 5:
                        salir = true;
                        break;
                    default:
                        System.out.println("Solo números entre 1 y 4");
                }
                mensajes();
            } catch (InputMismatchException e) {
                System.out.println("Debes insertar un número");
                entrada.next();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
