package mx.gob.jumapacelaya.services;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DatabaseService {

    private final String url = "jdbc:mysql://mhdb.jumapacelaya.gob.mx:33006/Mantenimientos";
    private final String user = "root";
    private final String pass = "mantenimientos";


    private Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, pass);
    }

    // Método para obtener los tipos de mantenimientos
    public List<String> getTiposDeMantenimientos() {
        List<String> tiposDeMantenimientos = new ArrayList<>();
        String query = "SELECT * FROM TIPOMANT";

        try (Connection connection = DriverManager.getConnection("jdbc:mysql://mhdb.jumapacelaya.gob.mx:33006/Mantenimientos", "root", "mantenimientos");
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery(query)) {

                while (resultSet.next()) {
                    tiposDeMantenimientos.add(resultSet.getString("NOMBRE"));
                }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return tiposDeMantenimientos;
    }

    // Método para obtener las nomenclaturas
    public String getNomenclatura(String tipoMantenimiento ) {
        String nomenclatura = "";
        String query = "SELECT nomenclatura FROM TIPOMANT where NOMBRE = ?";

        try (Connection connection = getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement(query)) {

            preparedStatement.setString(1, tipoMantenimiento);
            ResultSet resultSet = preparedStatement.executeQuery();

            if (resultSet.next()) {
                nomenclatura = resultSet.getString("nomenclatura");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return nomenclatura;
    }


    /* -------------- Metodo para obtener a los usuarios ---------------- */
    public List<String> getUsuarios() {
        List<String> usuarios = new ArrayList<>();
        String query = "select USUARIOID from USUARIOSFINAN";

        try (Connection connection = getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery(query)) {

            while (resultSet.next()) {
                usuarios.add(resultSet.getString("usuarioid"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return usuarios;
    }


    /* -------------- Metodo para obtener los departamentos ---------------- */
    public List<String> getDepartamentos() {
        List<String> departamentos = new ArrayList<>();
        String query = "select DESCRIPCION from DEPARTAMENTOSFINAN";

        try (Connection connection = getConnection();
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query)) {

            while (resultSet.next()) {
                departamentos.add(resultSet.getString("descripcion"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return departamentos;
    }



    /* -------------- Metodo para obtener los tipos de hardware ---------------- */
    public List<String> getTiposHardware() {
        List<String> tiposHardware = new ArrayList<>();
        String query = "select NOMBRETIPO from TIPOSHARDWARE";

        try (Connection connection = getConnection();
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query)) {

            while (resultSet.next()) {
                tiposHardware.add(resultSet.getString("nombretipo"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return tiposHardware;
    }
}
