package dao;

import Modelo.Conexion;
import Modelo.Solicitud;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class SolicitudBD {

    public static synchronized boolean ingresarsolicitud(Solicitud varSolicitud) {
        Connection cn = null;
        boolean rpta = false;
        try {
            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            //asignamos caracteristicas del producto
            int sol_folio = varSolicitud.getSol_folio();
            String sol_fecha_ingreso = varSolicitud.getSol_fecha_ingreso();
            int tipo_id = varSolicitud.getTipo_id();
            int enca_id = varSolicitud.getEnca_id();
            int jard_id = varSolicitud.getJard_id();
            int esta_id = varSolicitud.getEsta_id();

            String descripcion = varSolicitud.getSol_descripcion();
            //sql para insertar
            int m = st.executeUpdate("INSERT INTO solicitud (sol_folio,sol_fecha_ingreso,tipo_id,enca_id,jard_id,sol_descripcion,esta_id)"
                    + " VALUES ('" + sol_folio + "','" + sol_fecha_ingreso + "','" + tipo_id + "','" + enca_id + "','" + jard_id + "','" + descripcion + "','" + esta_id + "')");
            if (m > 0) {
                rpta = true;
            } else {

                Conexion.deshacerCambios(cn);
            }
            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.deshacerCambios(cn);
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.deshacerCambios(cn);
            Conexion.cerrarConexion(cn);
        }
        return rpta;
    }

    public static synchronized boolean actualizarsolicitud(Solicitud varSolicitud) {
        Connection cn = null;
        boolean rpta = false;
        try {
            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            //asignamos caracteristicas del producto
            int sol_folio = varSolicitud.getSol_folio();
            String sol_fecha_ingreso = varSolicitud.getSol_fecha_ingreso();
            int tipo_id = varSolicitud.getTipo_id();
            int enca_id = varSolicitud.getEnca_id();
            int jard_id = varSolicitud.getJard_id();
            int cobr_id = varSolicitud.getCobr_id();
            int esta_id = varSolicitud.getEsta_id();
            String sol_fecha_inicio = varSolicitud.getSol_fecha_inicio();
            String sol_fecha_termino = varSolicitud.getSol_fecha_termino();
            String sol_fecha_cobro = varSolicitud.getSol_fecha_cobro();
            int usua_id = varSolicitud.getUsua_id();
            String descripcion = varSolicitud.getSol_descripcion();
            //sql para insertar
            int m = st.executeUpdate("update solicitud set sol_folio='" + sol_folio + "',"
                    + "sol_fecha_ingreso='" + sol_fecha_ingreso + "',tipo_id='" + tipo_id + "',"
                    + "enca_id='" + enca_id + "',jard_id='" + jard_id + "',"
                    + "cobr_id='" + cobr_id + "',esta_id='" + esta_id + "',"
                    + "sol_fecha_inicio='" + sol_fecha_inicio + "',sol_fecha_termino='" + sol_fecha_termino + "',"
                    + "sol_fecha_cobro='" + sol_fecha_cobro + "',usua_id='" + usua_id + "',"
                    + "sol_descripcion='" + descripcion + "' where sol_id='" + varSolicitud.getSol_id() + "'");
            if (m > 0) {
                rpta = true;
            } else {

                Conexion.deshacerCambios(cn);
            }
            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.deshacerCambios(cn);
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.deshacerCambios(cn);
            Conexion.cerrarConexion(cn);
        }
        return rpta;
    }

    public static synchronized boolean eliminarsolicitud(Solicitud varSolicitud) {
        Connection cn = null;
        boolean rpta = false;
        try {
            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            int m = st.executeUpdate("delete from solicitud where sol_id='" + varSolicitud.getSol_id() + "'");
            if (m > 0) {
                rpta = true;
            } else {

                Conexion.deshacerCambios(cn);
            }
            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.deshacerCambios(cn);
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.deshacerCambios(cn);
            Conexion.cerrarConexion(cn);
        }
        return rpta;
    }

    public static synchronized ArrayList<Solicitud> obtenersolicitudes() {
        //El array que contendra todos nuestros productos
        ArrayList<Solicitud> lista = new ArrayList<Solicitud>();
        Connection cn = null;
        ResultSet rs = null;
        try {
            //SQL
            String sql = "SELECT sol_id,sol_folio,sol_fecha_ingreso,sol_fecha_inicio,"
                    + "sol_fecha_termino,sol_fecha_cobro,usua_id,tipo_id,cobr_id,"
                    + "esta_id,enca_id,jard_id,sol_descripcion from solicitud";

            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            //almacenamos datos en un resultset
            rs = st.executeQuery(sql);
            //insertamos los datos de la bd en una lista
            while (rs.next()) {
                Solicitud s = new Solicitud();
                //Obtenemos los valores de la consulta y creamos
                //nuestro objeto producto
                s.setSol_id(rs.getInt("sol_id"));
                s.setSol_folio(rs.getInt("sol_folio"));
                s.setSol_fecha_ingreso(rs.getString("sol_fecha_ingreso"));
                s.setTipo_id(rs.getInt("tipo_id"));
                s.setEnca_id(rs.getInt("enca_id"));
                s.setJard_id(rs.getInt("jard_id"));
                s.setCobr_id(rs.getInt("cobr_id"));
                s.setEsta_id(rs.getInt("esta_id"));
                s.setSol_fecha_inicio(rs.getString("sol_fecha_inicio"));
                s.setSol_fecha_termino(rs.getString("sol_fecha_termino"));
                s.setSol_fecha_cobro(rs.getString("sol_fecha_cobro"));
                s.setUsua_id(rs.getInt("usua_id"));
                s.setSol_descripcion(rs.getString("sol_descripcion"));
                //Lo adicionamos a nuestra lista

                lista.add(s);
            }
            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.cerrarConexion(cn);
        }
        return lista;
    }

    public static synchronized Solicitud obtenersolicitud(int id) {
        //El array que contendra todos nuestros productos
        Connection cn = null;
        ResultSet rs = null;
        Solicitud s = new Solicitud();
        try {
            //SQL
            String sql = "SELECT sol_id,sol_folio,sol_fecha_ingreso,sol_fecha_inicio,"
                    + "sol_fecha_termino,sol_fecha_cobro,usua_id,tipo_id,cobr_id,"
                    + "esta_id,enca_id,jard_id,sol_descripcion from solicitudes "
                    + "where where sol_id='" + id + "'";
            cn = Conexion.getConexion();
            System.out.println(sql);
            System.out.println("hola");
            Statement st = cn.createStatement();
            //almacenamos datos en un resultset

            rs = st.executeQuery(sql);
            //insertamos los datos de la bd en una lista

            while (rs.next()) {
                //Obtenemos los valores de la consulta y creamos
                //nuestro objeto producto
                s.setSol_id(rs.getInt("sol_id"));
                s.setSol_folio(rs.getInt("sol_folio"));
                s.setSol_fecha_ingreso(rs.getString("sol_fecha_ingreso"));
                s.setTipo_id(rs.getInt("tipo_id"));
                s.setEnca_id(rs.getInt("enca_id"));
                s.setJard_id(rs.getInt("jard_id"));
                s.setCobr_id(rs.getInt("cobr_id"));
                s.setEsta_id(rs.getInt("esta_id"));
                s.setSol_fecha_inicio(rs.getString("sol_fecha_inicio"));
                s.setSol_fecha_termino(rs.getString("sol_fecha_termino"));
                s.setSol_fecha_cobro(rs.getString("sol_fecha_cobro"));
                s.setUsua_id(rs.getInt("usua_id"));
                s.setSol_descripcion(rs.getString("descripcion"));
                //Lo adicionamos a nuestra lista
            }

            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.cerrarConexion(cn);
        }
        return s;
    }

    public int contartabla() throws SQLException {
        int ValCount = 0;
        Connection cn = null;
        String sql = "SELECT Count(*) FROM solicitud";
        cn = Conexion.getConexion();
        Statement st = cn.createStatement();

        try (ResultSet rs = st.executeQuery(sql)) {
            rs.next();
            ValCount = rs.getInt(1);
        } catch (SQLException se) {
            //handle catch
        } finally {
            Conexion.cerrarConexion(cn);
        }
        return ValCount;
    }
}
