package capitulo08.bloque01y02.operaciones;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;

public class Update {
    public static void actualizarFabricante(Connection conn, int id, String cif, String nombre) throws SQLException {
        if (!(Objects.equals(cif, "") || cif == null)) {
            actualizarCampoString(conn, "fabricante", id, "cif", cif);
        }
        if (!(Objects.equals(nombre, "") || nombre == null)) {
            actualizarCampoString(conn, "fabricante", id, "nombre", nombre);
        }
    }

    public static void actualizarCoche(Connection conn, int id, int idFabricante, String numBastidor, String modelo, String color) throws SQLException {
        if (idFabricante != 0) {
            actualizarCampoInt(conn, "coche", id, "idfabricante", idFabricante);
        }
        if (!(Objects.equals(numBastidor, "") || numBastidor == null)) {
            actualizarCampoString(conn, "coche", id, "bastidor", numBastidor);
        }
        if (!(Objects.equals(modelo, "") || modelo == null)) {
            actualizarCampoString(conn, "coche", id, "modelo", modelo);
        }
        if (!(Objects.equals(color, "") || color == null)) {
            actualizarCampoString(conn, "coche", id, "color", color);
        }
    }

    public static void actualizarConcesionario(Connection conn, int id, String cif, String nombre, String localidad) throws SQLException {
        if (!(Objects.equals(cif, "") || cif == null)) {
            actualizarCampoString(conn, "concesionario", id, "cif", cif);
        }
        if (!(Objects.equals(nombre, "") || nombre == null)) {
            actualizarCampoString(conn, "concesionario", id, "nombre", nombre);
        }
        if (!(Objects.equals(localidad, "") || localidad == null)) {
            actualizarCampoString(conn, "concesionario", id, "localidad", localidad);
        }
    }


    public static void actualizarCliente(Connection conn, int id, String nombre, String apellidos, String localidad, String dniNie, Date fechaNac, int activo) throws SQLException {
        if (!(Objects.equals(nombre, "") || nombre == null)) {
            actualizarCampoString(conn, "cliente", id, "nombre", nombre);
        }
        if (!(Objects.equals(apellidos, "") || apellidos == null)) {
            actualizarCampoString(conn, "cliente", id, "apellidos", apellidos);
        }
        if (!(Objects.equals(localidad, "") || localidad == null)) {
            actualizarCampoString(conn, "cliente", id, "localidad", localidad);
        }
        if (!(Objects.equals(dniNie, "") || dniNie == null)) {
            actualizarCampoString(conn, "cliente", id, "dniNie", dniNie);
        }
        if (fechaNac != null) {
            actualizarCampoDate(conn, "cliente", id, "fechaNac", fechaNac);
        }
        if ((activo == 0 || activo == 1)) {
            actualizarCampoInt(conn, "cliente", id, "activo", activo);
        }
    }

    public static void actualizarVenta(Connection conn, int id, int idCliente, int idConcesionario, int idCoche, Date fecha, int precioVenta) throws SQLException {
        if (idCliente != 0) {
            actualizarCampoInt(conn, "venta", id, "idCliente", idCliente);
        }
        if (idConcesionario != 0) {
            actualizarCampoInt(conn, "venta", id, "idConcesionario", idConcesionario);
        }
        if (idCoche != 0) {
            actualizarCampoInt(conn, "venta", id, "idCoche", idCoche);
        }
        if (fecha != null) {
            actualizarCampoDate(conn, "venta", id, "fecha", fecha);
        }
        if (precioVenta != 0) {
            actualizarCampoInt(conn, "venta", id, "precioVenta", precioVenta);
        }

    }







    private static int actualizarCampoString(Connection conn, String tabla, int id, String campo, String nuevoValor) throws SQLException {
        Statement st = conn.createStatement();
        return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + nuevoValor + "' where id=" + id + ";");
    }
    private static int actualizarCampoInt(Connection conn, String tabla, int id, String campo, int nuevoValor) throws SQLException {
        Statement st = conn.createStatement();
        return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "=" + nuevoValor + " where id=" + id + ";");
    }
    private static int actualizarCampoDate(Connection conn, String tabla, int id, String campo, Date nuevoValor) throws SQLException {
        Statement st = conn.createStatement();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + sdf.format(nuevoValor) + "' where id=" + id + ";");
    }}
