package Datos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import Modelo.Usuario;

public class UsuarioDB {

    public static boolean credencialesCorrectas(String correo, String contraseña) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        String query = "SELECT U.correo FROM USUARIO U "
                + "WHERE U.correo = ? AND U.contraseña = ?";
        boolean res = false;
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, correo);
            ps.setString(2, contraseña);
            rs = ps.executeQuery();
            res = rs.next();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return res;
    }

    public static Usuario getUsuario(String correo) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        String query = "SELECT * FROM USUARIO U "
                + "WHERE U.correo = ?";
        Usuario usuario = null;
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, correo);
            rs = ps.executeQuery();
            if(!rs.next()){
                usuario = new Usuario("","","","","","");
            }else{
                String contraseña = rs.getString("contraseña");
                String nombre = rs.getString("nombre");
                String apellidos = rs.getString("apellidos");
                String tipo_usuario = rs.getString("tipo_usuario");
                String id_usuario = rs.getString("id_usuario");
                usuario = new Usuario(id_usuario, correo, contraseña, nombre, apellidos, tipo_usuario);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return usuario;
    }
    
    public static Usuario getUsuarioId(String id_usuario) {
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        ResultSet rs;
        String query = "SELECT * FROM USUARIO U "
                + "WHERE U.id_usuario = ?";
        Usuario usuario = null;
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, id_usuario);
            rs = ps.executeQuery();
            rs.next();
            String contraseña = rs.getString("contraseña");
            String nombre = rs.getString("nombre");
            String apellidos = rs.getString("apellidos");
            String tipo_usuario = rs.getString("tipo_usuario");
            String correo = rs.getString("correo");
            usuario = new Usuario(id_usuario, correo, contraseña, nombre, apellidos, tipo_usuario);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        return usuario;
    }

    public static boolean addUsuario(Usuario u, String contraseña) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "INSERT INTO USUARIO VALUES(?,?,?,?,?,?)";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, u.getId_usuario());
            ps.setString(2, u.getCorreo());
            ps.setString(3, contraseña);
            ps.setString(4, u.getNombre());
            ps.setString(5, u.getApellidos());
            ps.setString(6, u.getTipo_usuario());
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        if (resultado == 1) {
            return true;
        }
        return false;
    }
    
    public static boolean updateUsuario(Usuario u) {
        int resultado = 0;
        ConnectionPool cp = ConnectionPool.getInstance();
        Connection c = cp.getConnection();
        PreparedStatement ps;
        String query = "UPDATE USUARIO "+   
                       "SET id_usuario = ? ," +
                             "correo = ? ,"+
                             " contraseña = ? ,"+
                             " nombre = ? ,"+
                             " apellidos = ? , "+
                             " tipo_usuario = ? "+
                       "WHERE id_usuario = ? ";
        try {
            ps = c.prepareStatement(query);
            ps.setString(1, u.getId_usuario());
            ps.setString(2, u.getCorreo());
            ps.setString(3, u.getContraseña());
            ps.setString(4, u.getNombre());
            ps.setString(5, u.getApellidos());
            ps.setString(6, u.getTipo_usuario());
            ps.setString(7, u.getId_usuario());
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        cp.freeConnection(c);
        if (resultado == 1) {
            return true;
        }
        return false;
    }
}
