/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import Modelo.Cargo;
import Modelo.Conexion;
import Modelo.Tipo;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author Claque
 */
public class TipoBD {
     public static synchronized boolean ingresartipo(Tipo varTipo) {
        Connection cn = null;
        boolean rpta = false;
        try {
            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            //asignamos caracteristicas del tipo
            String nombre=varTipo.getTipo_nombre();
            int dias=varTipo.getTipo_dias();
            String descripcion=varTipo.getTipo_descripcion();
               //sql para insertar
            int m = st.executeUpdate("INSERT INTO tipo (tipo_nombre,tipo_dias,tipo_descripcion) "
                    + "VALUES ('" + nombre + "','" + dias + "','" + descripcion + "')");
            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 actualizartipo(Tipo varTipo) {
        Connection cn = null;
        boolean rpta = false;
        try {
            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            //asignamos caracteristicas del producto
            String nombre=varTipo.getTipo_nombre();
            int dias=varTipo.getTipo_dias();
            String descripcion=varTipo.getTipo_descripcion();
            //sql para insertar
            int m = st.executeUpdate("update tipo set tipo_nombre='" + nombre + "',"
                    + "tipo_dias='" + dias + "',tipo_descripcion='" + descripcion + "'"
                    + " where tipo_id='" + varTipo.getTipo_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 eliminarcargo(Tipo varTipo) {
        Connection cn = null;
        boolean rpta = false;
        try {
            cn = Conexion.getConexion();
            Statement st = cn.createStatement();
            int m = st.executeUpdate("delete from tipo where tipo_id='" + varTipo.getTipo_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<Tipo> obternetipos() {
        //El array que contendra todos nuestros productos
        ArrayList<Tipo> lista = new ArrayList<Tipo>();
        Connection cn = null;
        ResultSet rs = null;
        try {
            //SQL
            String sql = "SELECT tipo_id,tipo_nombre,tipo_dias,tipo_descripcion from tipo";
            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()) {
                Tipo t=new Tipo();
                 //Obtenemos los valores de la consulta y creamos
                //nuestro objeto producto
                t.setTipo_id(rs.getInt("tipo_id"));
                t.setTipo_nombre(rs.getString("tipo_nombre"));
                t.setTipo_descripcion(rs.getString("tipo_descripcion"));
                t.setTipo_dias(rs.getInt("tipo_dias"));
               
                //Lo adicionamos a nuestra lista
                lista.add(t);
            }
            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.cerrarConexion(cn);
        }
        return lista;
    }

    public static synchronized Tipo obtenertipo(int id) {
        //El array que contendra todos nuestros productos
        Connection cn = null;
        ResultSet rs = null;
        Tipo t=new Tipo();
                try {
            //SQL
            String sql = "SELECT tipo_id,tipo_nombre,tipo_dias,tipo_descripcion from tipo where tipo_id='" + id + "'";
            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()) {
                //Obtenemos los valores de la consulta y creamos
                //nuestro objeto producto
                t.setTipo_id(rs.getInt("tipo_id"));
                t.setTipo_nombre(rs.getString("tipo_nombre"));
                t.setTipo_descripcion(rs.getString("tipo_descripcion"));
                t.setTipo_dias(rs.getInt("tipo_dias"));
                //Lo adicionamos a nuestra lista
                 }
            
            Conexion.cerrarConexion(cn);
        } catch (SQLException e) {
            Conexion.cerrarConexion(cn);
        } catch (Exception e) {
            Conexion.cerrarConexion(cn);
        }
        return t;
    }

    public int contartabla() throws SQLException {
        int ValCount = 0;
        Connection cn = null;
        String sql = "SELECT Count(*) FROM Tipo";
        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;
    }
    
}
