Package SistemaDeKioscos

Source Code of SistemaDeKioscos.ServicioDeAccesoABaseDeDatos

package SistemaDeKioscos;

import Administracion.Mesero;
import Inventario.almacen.Ingrediente;
import Pedidos.Comanda;
import Pedidos.Mesa;
import Pedidos.Platillo;
import com.mysql.jdbc.CommunicationsException;
import java.net.ConnectException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Hashtable;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

/**
* Clase que provee de una manera más segura la conexión, envío de mensajes
* predeterminados y la desconexión de una base de datos
*/
public class ServicioDeAccesoABaseDeDatos {

    public static String ruta;
    static Connection conexion;
    Statement consulta;
    private ResultSet resultados;

    /////////// valores fijos con nombre ////////////////////
    public static final int SINDATOS = -1;
    public static final int MESA_DESOCUPADA = 0;
    public final int MESA_OCUPADA = 1;
    /**
     * Indica que un usuario no tiene privilegios en el sistema
     */
    public final int SINPRIVILEGIOS = 2;
    /**
     * Indica que un usuario tiene privilegios de mesero en el sistema
     */
    public final int MESERO = 3;
    public final int ADMINISTRADOR = 4;

    public ServicioDeAccesoABaseDeDatos() {

        //ruta = "ciaovela.db";
        //ruta = "//localhost/bellissima"; //´para usuario any
        ruta = "//localhost/bellissima?user=ciao&password=bella";
    }

    public void actualizarPlatillo(String nombre, String precio, String iva, String categoria) {
        int id = obtenerIDDePlatillo(nombre);
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("UPDATE platillo SET precio = '" + precio + "',iva='" + iva + "',categoria ='" + categoria + "' WHERE id = '" + id + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void agregarDatosDeUsuario(String usuario, String nombre, String direccion, String telefono, String email) {
        int id = obtenerIDDeUsuario(usuario);
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("INSERT IGNORE INTO info_personal VALUES(NULL,'" + id + "','" + nombre + "','" + direccion + "','" + telefono + "','" + email + "')");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Método que nos permite aregar un nuevo ingrediente a la base de datos
     *
     * @param nombre Nombre del ingrediente
     * @param caducidad Fecha de caducidad
     * @param veces Veces que se puede usar
     * @param descripcion Aquí podemos poner cosas como la presentación, la
     * marca, etc
     */
    public void agregarNuevoIngrediente(String nombre, String caducidad, int veces, String descripcion) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("INSERT INTO ingrediente VALUES('', '" + nombre + "', '" + caducidad + "','" + veces + "', " + descripcion + ")");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void agregarNuevoPlatillo(String platillo, double precio, double iva, String catego) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            String strQuery = "INSERT INTO platillo VALUES(NULL, '" + platillo + "', '" + precio + "','" + iva + "', '" + catego + "')";
            System.out.println(strQuery);
            consulta.executeUpdate(strQuery);
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    /**
     * Permite agregar un nuevo mesero a la BD
     *
     * @param usuario el nombre de usuario
     * @param contraseña la contraseña de acceso
     */
    public void agregarNuevoUsuario(String usuario, String contraseña) {
        conectarABaseDeDatos();
        //TODO cambiar el diseño de bd para que el id sea autoincremental
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("INSERT INTO usuario VALUES(''," + usuario + ",  " + contraseña + ")");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void agregarPlatilloAComanda(Platillo p, Comanda orden, int idDeComanda) {
        //)
        int idplatillo = obtenerIDDePlatillo(p.getNombrePlatillo());
        //obtenerIDDeComanda();
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            String strQuery = "INSERT INTO comanda_has_platillo VALUES('" + idDeComanda + "','" + idplatillo + "','" + p.getCantidad() + "')";
            System.out.println(strQuery);
            consulta.executeUpdate(strQuery);
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void atenderMesa(Mesero mesero, int numeroDeMesa) {

        //////////// obtener id de usuario ////////////////////
        int idusuario = -1;
        conectarABaseDeDatos();
        try {
            // consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT id FROM usuario u WHERE nombre = '" + mesero.getNombre().trim() + "'");
            resultados.next();
            idusuario = resultados.getInt("id");
            System.out.println("Id de usuario:" + idusuario);
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        if (idusuario == -1) {
            System.err.println("problema con el id de usuario");
            return;
        }

        //////////// Apartar Mesa /////////////////////////
        conectarABaseDeDatos();
        try {
            System.out.println("Apartando la mesa " + numeroDeMesa + " ...");
            //consulta = conexion.createStatement();//TODO tal vez se necesite omitir esto
            consulta.executeUpdate("UPDATE mesa SET estado = '" + MESA_OCUPADA + "' WHERE nomesa ='" + numeroDeMesa + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);

            //si hay excepción aquí es que no se modificó la base de datos
        } finally {

        }

        ////////// Asignar mesa a mesero ////////////
        conectarABaseDeDatos();
        try {
            System.out.println("Reservando la mesa...");
            consulta = conexion.createStatement();
            consulta.executeUpdate("Insert IGNORE into usuario_has_mesa values('" + idusuario + "','" + numeroDeMesa + "')");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    private void atenderMesa(Mesero mesero, String nombreMesa) {
        //////////// obtener id de usuario ////////////////////
        int idusuario = -1;
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            System.out.println("Nombre de mesero:\"" + mesero.getNombre().trim() + "\"");
            String consultastr = "SELECT * FROM usuario WHERE nombre = '" + mesero.getNombre() + "'";
            System.out.println("*" + consultastr + "*");
            resultados = consulta.executeQuery(consultastr);
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numberOfColumns = rsmd.getColumnCount();
            if (numberOfColumns < 1) {
                idusuario = resultados.getInt("id");
            } else {
                System.err.println("Sin resulados");
            }

        } catch (SQLException ex) {
            //no ha sido entregada a nadie
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        if (idusuario == -1) {
            System.err.println("problema con el id de usuario");
            return;
        }

        //////////// Apartar Mesa /////////////////////////
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("UPDATE mesa SET estado = '" + MESA_OCUPADA + "' WHERE nomesa ='" + nombreMesa + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }

        ////////// Asignar mesa a mesero ////////////
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("Insert into usuario_has_mesa values('" + idusuario + "','" + nombreMesa + "')");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    /**
     * Método que nos permite obtener todos los platillos con nombre similar al
     * que especifiquemos
     *
     * @param nombrePlatillo El nombre de platillo a buscar
     */
    public Platillo buscarPlatillo(String nombrePlatillo) {
        try {
            conectarABaseDeDatos();

            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT * FROM platillo WHERE nombre like '%" + nombrePlatillo + "%'");
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar
            //String nombrePlatillo = resultados.getString(2);
            //id nombre precio categoria
            resultados.next();
            nombrePlatillo = resultados.getString("nombre");
            int precio = resultados.getInt("precio");
            int iva = resultados.getInt("iva");
            String categoria = resultados.getString("categoria");
            Platillo p = new Platillo();
            p.setNombrePlatillo(nombrePlatillo);
            p.setPrecio(precio);
            p.setIva(iva);
            p.setCategoria(categoria);
            return p;
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public void cambiarNombreDePlatillo(String nombreAnterior, String nuevoNombre) {
        int id = obtenerIDDePlatillo(nombreAnterior);
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("UPDATE platillo SET nombre = '" + nuevoNombre + "' WHERE id = '" + id + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Método que nos permite cambiar el nombre con que inicia sesión un usuario
     * del sistema
     *
     * @param usuario nombre anterior
     * @param nuevoUsuario el nombre que tendrá
     */
    public void cambiarNombreDeUsuario(String usuario, String nuevoUsuario) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("UPDATE usuario SET nombre = '" + nuevoUsuario + "' WHERE nombre = '" + usuario + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void cambiarPasswordDeUsuario(String usuario, String nuevopass) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("UPDATE usuario SET password = '" + nuevopass + "' WHERE nombre = '" + usuario + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void cerrarComanda(int id) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("UPDATE comanda SET cerrada = '1' WHERE idComanda = '" + id + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public boolean comprobarSiAtiendeMesa(Mesero mesero, int nomesa) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT * FROM usuario_has_mesa WHERE usuario_id = '" + getIDMesero(mesero) + "' AND mesa_nomesa='" + nomesa + "'");
            if (resultados.isLast()) {//esta mesa está siendo atendida por nosotros si no por alguien más
                return false;
            }

        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } finally {
            return true;
        }
    }

    /**
     * Método que permite comprobar si una mesa está disponible
     *
     * @param nombreMesa El nombre de mesa un # para mesa barra# para barra
     * @param m Εl mesero que atiende esta mesa
     * @return Regresa Regresa el estado o -1 si algo falla
     */
    public int compruebaEstadoMesa(int nombreMesa, Mesero m) {
        conectarABaseDeDatos();
        int estado = SINDATOS;
        try {
            //consulta = conexion.createStatement();
            String consultaS = "SELECT estado FROM mesa WHERE nomesa ='" + nombreMesa + "'";
            System.out.println(consultaS);
            resultados = consulta.executeQuery(consultaS);
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numberOfColumns = rsmd.getColumnCount();
            System.out.println("Numero de columnas:" + numberOfColumns);
            System.out.println(rsmd.getCatalogName(1));
            System.out.println(rsmd.getColumnName(1));
            System.out.println(rsmd.getColumnClassName(1));
            System.out.println(rsmd.getColumnTypeName(1));
            resultados.next();
            System.out.println("fila actual" + resultados.getRow());
            System.out.println(resultados.getInt(1));
            estado = resultados.getInt(1);
            System.out.println("Estado actual de la mesa:" + estado);
        } catch (SQLException ex) {
            try {
                Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
                System.err.println("No se había reservado mesa");
                //no se puede consultar porque la tabla no existe
                consulta = conexion.createStatement();
                //UPDATE mesa SET estado = '1' WHERE nomesa ='$mesa'
                //SELECT id FROM usuario u WHERE nombre = '$nombremesero'
                System.out.println(m.getNombre() + " atendiendo");
                atenderMesa(m, nombreMesa);
                //Insert into usuario_has_mesa values('$idmesero','$mesa')
                // ResultSet rs = consulta.executeQuery("UPDATE mesa SET estado = '1' WHERE nomesa ='" + nombreMesa + "'");
                //rs = consulta.executeQuery("SELECT id FROM usuario u WHERE nombre = '" + m.getNombre() + "'");
                //int idmesero = rs.getInt("id");
                //rs = consulta.executeQuery("Insert into usuario_has_mesa values('" + idmesero + "','" + nombreMesa + "'");
            } catch (SQLException ex1) {
                Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex1);
            }
        } finally {

        }
        return estado;
    }

    /**
     * Este método nos permitirá conectarnos localmente a una base de datos
     */
    public void conectarABaseDeDatos() {
        try {
            System.out.println("conectando...");
            //Class.forName("org.sqlite.JDBC"); //conexión con BD sqlite
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Clase hallada");
            //conexion = DriverManager.getConnection("jdbc:sqlite:" + ruta);
            conexion = DriverManager.getConnection("jdbc:mysql:" + ruta);
            System.out.println("conectado...");
        } catch (ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        } catch (SQLException ex) {
            System.err.println("No se pudo conectar a la base de datos");
            ServicioDeNotificacion.alertaPersonalizada("Error", "No se pudo conectar a la base de datos");
        }
    }

    public void desReservarMesa(Mesero mesero, int numeroDeMesa) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("UPDATE mesa SET estado = '0' WHERE nomesa ='" + numeroDeMesa + "'");//no atendida
            int idusuario = getIDMesero(mesero);
            resultados = consulta.executeQuery("Delete from usuario_has_mesa WHERE usuario_id='" + idusuario + "' AND mesa_nomesa='" + numeroDeMesa + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void EliminarConexionABaseDeDatos() {
        if (resultados != null) {
            try {
                resultados.close();
            } catch (SQLException e) {
                System.err.println("Problemas al cerrar los sultados");
            }
        }
        if (consulta != null) {
            try {
                consulta.close();
            } catch (SQLException e) {
                System.err.println("Problemas al cerarr la consulta");
            }
        }
        if (conexion != null) {
            try {
                conexion.close();
            } catch (SQLException e) {
                System.err.println("Problemas al cerrar la base de datos");
            }
        }
    }

    public void eliminarIngrediente(String nombre) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("DELETE FROM ingrediente WHERE nombre ='" + nombre + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void eliminarPlatillo(String platillo) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("DELETE FROM platillo WHERE nombre ='" + platillo + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    /**
     * Método que borra un usuario de la BD ojo, este es peligroso, lo ideal es
     * desactivarlos
     *
     * @param usuario nickname
     */
    public void eliminarUsuario(String usuario) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("DELETE FROM usuario WHERE nombre ='" + usuario + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    private int getIDMesero(Mesero mesero) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            if (mesero.getNombre() == null) {
                System.err.println("Mesero sin nombre");
                return -1;//solo en caso de que se esté corriendo sin correr todo el menú
            }
            String strQuery = "SELECT id FROM usuario u WHERE nombre = '" + mesero.getNombre() + "'";
            System.out.println(strQuery);
            resultados = consulta.executeQuery(strQuery);
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numberOfColumns = rsmd.getColumnCount();
            if (resultados.wasNull()) {//if (numberOfColumns > 0) {
                System.err.println("Resultados nulos");
            } else {
                resultados.next();
                return resultados.getInt(1);//("id");
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return -1;
    }

    public void imprimirTicketConCuenta(String nameLocal, String expedition, String box, String ticket, String caissier, String dateTime, String items, String subTotal, String tax, String total) {
        Ticket miticket = new Ticket(nameLocal, expedition, box, ticket, caissier, dateTime, items, subTotal, tax, total);

    }

    /**
     * Realiza un logueo de cualquier usuario
     *
     * @param usuario nickname
     * @param pass password
     * @return is there's a match into DB
     */
    public boolean login(String usuario, String pass) {
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("Select * from usuario Where nombre='" + usuario.trim() + "' and password='" + pass.trim() + "'");
            return resultados.next();
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    /**
     * M[etodo que permite comprobar si un usuario logueado tiene alg[un
     * privilegio de acceso
     *
     * @param usuario El Nickname del usuario
     * @param pass El password del usuario
     * @return regresa si el usuaroi está logueado
     * @See #MESERO
     */
    public int loginUsuario(String usuario, String pass) {
        if (login(usuario, pass)) {
            try {
                consulta = conexion.createStatement();
                //TODO consultar usuario y privilegios
                resultados = consulta.executeQuery("SELECT nombreRol FROM roles INNER JOIN usuario ON (roles.usuario_id = usuario.id) WHERE nombre='" + usuario.trim() + "' and password='" + pass.trim() + "'");
                resultados.next();
                String privilegios = resultados.getString(1);
                if (privilegios == "Administrador") {
                    return ADMINISTRADOR;
                } else {
                    return MESERO;
                }
            } catch (SQLException ex) {
                Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
            }

            //TODO preguntar en la base de datos los privilegios del usuario
            //si es usuario regresar 2
            //si es admin regresar 1
        }
        return SINPRIVILEGIOS;
    }

    public int[] nuevaComandaConPlatillos(Comanda orden, Mesero mesero, int numeroDeMesa, int recomendacionesDeChefPorApuntar) {
        conectarABaseDeDatos();
        int[] ids = new int[2];
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            String fechaDeHoy = new SimpleDateFormat("YYYY/MM/dd").format(hoy);
            int idmesero = getIDMesero(mesero);
            String strQuery = "INSERT IGNORE INTO comanda VALUES('','" + fechaDeHoy + "','0','" + orden.getPrecio() + "','" + orden.getOvservaciones() + "','" + idmesero + "','" + numeroDeMesa + "')";
            System.out.println(strQuery);
            consulta.executeUpdate(strQuery);// lo inserta solo la primera vez
            resultados = consulta.executeQuery("SELECT LAST_INSERT_ID()");// lo inserta solo la primera vez
            //resultados = consulta.executeQuery("SELECT id FROM comanda WHERE fecha='" + fechaDeHoy + "' and cerrada='0' and precio='" + orden.getPrecio() + "' and observaciones ='" + orden.getOvservaciones() + "' and usuario_id='" + idmesero + "' and mesa_nomesa='" + numeroDeMesa + "'");
            resultados.next();

            int idDeComanda = resultados.getInt(1);
            ids[0] = idDeComanda;
            int idChef = obtenerIdRecomendacionDeChef();
            ids[1] = idChef;

            //for (int i = 0; i < comandasPorApuntar; i++) {
            consulta = conexion.createStatement();
            strQuery = "INSERT IGNORE INTO comanda_has_recomendacion_del_chef VALUES('" + idDeComanda + "','" + getIDMesero(mesero) + "','" + numeroDeMesa + "','" + idChef + "','" + recomendacionesDeChefPorApuntar + "')";
            //TODO agregarle cantidad y solo meterle cuantas hay
            System.out.println(strQuery);
            consulta.executeUpdate(strQuery);
            //}

            //resultados = consulta.executeQuery("SELECT LAST_INSERT_ID()");// lo inserta solo la primera vez
            //consultar! D:
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return ids;
    }

    public Vector<String> obtenerCategoriasDePlatillos() {
        conectarABaseDeDatos();
        Vector<String> categoriasDePlatillos = null;
        int idIngrediente_enesimo = -1;
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT DISTINCT categoria FROM platillo");

            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();
            if (numFils != 0) {
                categoriasDePlatillos = new Vector<String>();
                resultados.beforeFirst();//mover antes de empezar
                //resultados.next();
                while (resultados.next()) {
                    String categoria = resultados.getString(1);
                    System.out.println("agregando categoria:" + categoria);
                    categoriasDePlatillos.add(categoria);
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return categoriasDePlatillos;
    }

    public Comanda obtenerComandaExistenteDeMesero(int numeroDeMesa, Mesero mesero) {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        //Vector<Mesa> mesas = new Vector<Mesa>();
        Comanda c = new Comanda();
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            String strQuery = "SELECT * FROM comanda INNER JOIN mesa ON (comanda.mesa_nomesa = mesa.nomesa) INNER JOIN usuario ON (comanda.usuario_id = usuario.id) WHERE mesa.nomesa = '" + numeroDeMesa + "' AND mesa.estado = '" + MESA_OCUPADA + "' AND usuario.nombre = '" + mesero.getNombre() + "'";
            System.out.println(strQuery);
            resultados = consulta.executeQuery(strQuery);
            //asumimos que solamente debe haber un resultado
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar

            while (resultados.next()) { //mientras haya resultados
//
                int idcomanda = resultados.getInt(1);
//int estado =resultados.getInt(3);
                double precio = resultados.getDouble(4);
                String observaciones = resultados.getString(5);
                c.setNumeroDePedido(idcomanda);
                c.setPrecio(precio);
                c.setCerrada(false);

                c.setQuienTomoLaOrden(mesero);
                c.setOvservaciones(observaciones);
                c.setPlatillos(obtenerPlatillosDeComanda(idcomanda));
                Date fechaDeComanda = resultados.getDate(2);//TODO verificar error al guardar la fecha en comanda
                c.setFechaDePedido(fechaDeComanda);
            }
            return c;
        } catch (SQLException ex) {
            c.setFechaDePedido(new Date());//en caso de error le asignamos el dí de hoy
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            return c;
        }
    }

    /**
     * Nos permite saber que cuentas se pagaron hoy
     */
    public Vector<Comanda> obTenerCuentasPagadas() {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        int estado = -1;
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            resultados = consulta.executeQuery("SELECT * FROM comanda WHERE fecha='" + new SimpleDateFormat("dd/MM/YYYY").format(hoy) + "'");
            //estado = rs.getInt("estado");
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar
            while (resultados.next()) { //mientras haya resultados

                Double[] obj = new Double[numCols - 1];
                for (int i = 1; i < numCols - 1; i++) {
                    System.out.println("Probando con columna " + (i + 2)); //1 id 2 nombre 3 precio 4 iva 5 categoría
                    String resultado = resultados.getString(i + 2);
                    System.out.println(resultado);
                    obj[i] = Double.parseDouble(resultado);
                    //obj[j][i]=rs.getObject(i+1);
                }
                String nombrePlatillo = resultados.getString(2);
                System.out.println("nombre del platillo:" + nombrePlatillo);
                // datosplatillos.put(nombrePlatillo, obj);// put nombre platillo, [precio, iva]

            }

            //TODO ciclar todos los resultados
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return null;
    }

    /**
     * Nos permite saber cuentas pendientes de pagar de este día
     */
    public Vector<Comanda> obtenerCuentasParaPagar() {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        int estado = -1;
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            resultados = consulta.executeQuery("SELECT * FROM comanda WHERE fecha='" + new SimpleDateFormat("dd/MM/YYYY").format(hoy) + "'");
            //estado = rs.getInt("estado");
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar
            while (resultados.next()) { //mientras haya resultados

                Double[] obj = new Double[numCols - 1];
                for (int i = 1; i < numCols - 1; i++) {
                    System.out.println("Probando con columna " + (i + 2)); //1 id 2 nombre 3 precio 4 iva 5 categoría
                    String resultado = resultados.getString(i + 2);
                    System.out.println(resultado);
                    obj[i] = Double.parseDouble(resultado);
                    //obj[j][i]=rs.getObject(i+1);
                }
                String nombrePlatillo = resultados.getString(2);
                System.out.println("nombre del platillo:" + nombrePlatillo);
                //datosplatillos.put(nombrePlatillo, obj);// put nombre platillo, [precio, iva]

            }

            //TODO ciclar todos los resultados
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return null;
    }

    public void obtenerPlatillosPorCategoría(String catego, Hashtable<String, Double[]> datosplatillos) {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        int estado = -1;
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT id, nombre, precio, iva FROM platillo where categoria ='" + catego + "'");
            //estado = rs.getInt("estado");
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar
            while (resultados.next()) { //mientras haya resultados

                Double[] obj = new Double[numCols - 1];
                for (int i = 1; i < numCols - 1; i++) {
                    System.out.println("Probando con columna " + (i + 2)); //1 id 2 nombre 3 precio 4 iva 5 categoría
                    String resultado = resultados.getString(i + 2);
                    System.out.println(resultado);
                    obj[i] = Double.parseDouble(resultado);
                    //obj[j][i]=rs.getObject(i+1);
                }
                String nombrePlatillo = resultados.getString(2);
                System.out.println("nombre del platillo:" + nombrePlatillo);
                datosplatillos.put(nombrePlatillo, obj);// put nombre platillo, [precio, iva]
                // j++;

            }

            //TODO ciclar todos los resultados
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    private int obtenerIdPlatillo(String nombreDePlatillo) {
        conectarABaseDeDatos();
        int id = -1;
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT id FROM platillo WHERE nombre = '" + nombreDePlatillo + "'");
            id = resultados.getInt("platillo_id");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return id;
    }

    private int obtenerIDDePlatillo(String nombrePlatillo) {
        conectarABaseDeDatos();
        int i = -1;
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT id FROM platillo WHERE nombre = '" + nombrePlatillo + "'");
            resultados.next();
            i = resultados.getInt("id");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return i;
    }

    private int obtenerIDDeUsuario(String usuario) {
        conectarABaseDeDatos();
        int id = -1;
        Ingrediente i = null;
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT id FROM usuario WHERE nombre = '" + usuario + "'");
            resultados.next();
            id = resultados.getInt("id");

        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return id;
    }

    public int obtenerIdRecomendacionDeChef() {
        conectarABaseDeDatos();
        int id = -1;
        try {
            Date hoy = new Date();
            consulta = conexion.createStatement();
            String consultaTexto = "SELECT idrecomendacion_del_chef FROM recomendacion_del_chef WHERE fecha = '" + new SimpleDateFormat("YYYY/MM/dd").format(hoy) + "'";
            System.out.println(consultaTexto);
            resultados = consulta.executeQuery(consultaTexto);
            if (resultados.next()) {
                id = resultados.getInt("idrecomendacion_del_chef");
                System.out.println("id de recomendación de chef:" + id);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return id;
    }

    public Vector<Ingrediente> obtenerIngredientesDePlatillo(String nombreDePlatillo) {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        Vector<Ingrediente> ingredientesFelices = null;
        int idIngrediente_enesimo = -1;
        try {
            consulta = conexion.createStatement();
            //buscarPlatillo
            int idPlatillo = obtenerIdPlatillo(nombreDePlatillo);
            resultados = consulta.executeQuery("SELECT ingrediente_id FROM platillo_has_ingrediente WHERE platillo_id='" + idPlatillo + "'");

            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();
            if (numFils != 0) {
                ingredientesFelices = new Vector<Ingrediente>();
                resultados.beforeFirst();//mover antes de empezar
                while (resultados.next()) {
                    idIngrediente_enesimo = resultados.getInt(1);
                    Ingrediente ingrediente = obtenerIngredientePorID(idIngrediente_enesimo);
                    ingredientesFelices.add(ingrediente);
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return ingredientesFelices;
    }

    private Ingrediente obtenerIngredientePorID(int idIngrediente) {
        conectarABaseDeDatos();
        Ingrediente i = null;
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("SELECT * FROM ingrediente WHERE id = '" + idIngrediente + "'");
            resultados.next();
            String nombre = resultados.getString("nombre");
            Date caducidad = new Date(resultados.getString("caducidad"));
            int vecesUsable = resultados.getInt("veces_usable");
            String descripcion = resultados.getString("descripcion");
            i = new Ingrediente();
            i.setNombre(nombre);
            i.setFechaDeCaducidad(caducidad);
            i.setVecesQueSePuedeUsar(vecesUsable);
            i.setDescripcion(descripcion);
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return i;
    }

    public Vector<Mesa> obtenerMesas() {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        Vector<Mesa> mesas = new Vector<Mesa>();
        //int estado = -1;
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            String strQuery = "SELECT * FROM mesa ";
            System.out.println(strQuery);
            resultados = consulta.executeQuery(strQuery);
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar

            while (resultados.next()) { //mientras haya resultados

                int nombremesa = resultados.getInt(1);
                int estadomesa = resultados.getInt(2);
                System.out.println("Mesa:" + nombremesa);
                System.out.println("edo:" + estadomesa);
                Mesa m = new Mesa();
                m.setNumeroDeMesa(nombremesa);
                m.setEstadoMesa(estadomesa);
                mesas.add(m);
            }
            return mesas;
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return null;
    }

    private ArrayList<Platillo> obtenerPlatillosDeComanda(int idcomanda) {
        ArrayList<Platillo> datosplatillos = new ArrayList<Platillo>();
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        int estado = -1;
        try {
            consulta = conexion.createStatement();
            String strConsulta = "SELECT platillo.nombre, platillo.precio, platillo.iva, platillo.categoria, comanda_has_platillo.cantidad FROM comanda INNER JOIN comanda_has_platillo ON (comanda.idComanda = comanda_has_platillo.Comanda_idComanda) INNER JOIN platillo ON (comanda_has_platillo.platillo_id = platillo.id) WHERE comanda.idComanda = '" + idcomanda + "'";
            System.out.println(strConsulta);
            resultados = consulta.executeQuery(strConsulta);
            //estado = rs.getInt("estado");
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();
            System.out.println("Filas:" + numFils);

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar

            while (resultados.next()) { //mientras haya resultados

                String nombrePlatillo = resultados.getString(1);
                System.out.println("nombre del platillo:" + nombrePlatillo);
                double precio = resultados.getDouble(2);
                double iva = resultados.getDouble(3);
                String categoria = resultados.getString(4);
                int cantidad = resultados.getInt(5);
                Platillo p = new Platillo();
                p.setNombrePlatillo(nombrePlatillo);
                p.setPrecio(precio);
                p.setIva(iva);
                p.setCategoria(categoria);
                p.setCantidad(cantidad);
                datosplatillos.add(p);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return datosplatillos;
    }

    public void obtenerPlatillosDeRecomendacionDeChef(int idRecomendacion, Hashtable<String, Double[]> datosplatillos) {
        //en sopas guardar el nombre, en el arreglo el precio y el iva
        conectarABaseDeDatos();
        int estado = -1;
        try {
            consulta = conexion.createStatement();
            String strConsulta = "SELECT id, nombre, precio, iva FROM recomendacion_del_chef_has_platillo INNER JOIN platillo ON (recomendacion_del_chef_has_platillo.platillo_id = platillo.id) WHERE recomendacion_del_chef_idrecomendacion_del_chef = '" + idRecomendacion + "'";
            System.out.println(strConsulta);
            resultados = consulta.executeQuery(strConsulta);
            //estado = rs.getInt("estado");
            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();
            System.out.println("Filas:" + numFils);

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar

            while (resultados.next()) { //mientras haya resultados

                Double[] obj = new Double[numCols - 1];
                for (int i = 1; i < numCols - 1; i++) {
                    System.out.println("Probando con columna " + (i + 2)); //1 id 2 nombre 3 precio 4 iva 5 categoría
                    String resultado = resultados.getString(i + 2);
                    System.out.println(resultado);
                    obj[i] = Double.parseDouble(resultado);
                    //obj[j][i]=rs.getObject(i+1);
                }
                String nombrePlatillo = resultados.getString(2);
                System.out.println("nombre del platillo:" + nombrePlatillo);
                datosplatillos.put(nombrePlatillo, obj);// put nombre platillo, [precio, iva]
                // j++;

            }

            //TODO ciclar todos los resultados
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void obtenerVentasDeHoy() {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            Date hoy = new Date();
            resultados = consulta.executeQuery("SELECT * FROM comanda WHERE fecha='" + new SimpleDateFormat("dd/MM/YYYY").format(hoy) + "'");

            resultados.last();//nos pasamos al último
            ResultSetMetaData rsmd = resultados.getMetaData();
            int numCols = rsmd.getColumnCount();
            System.out.println("Columnas del resultado" + numCols);

            int numFils = resultados.getRow();

            // int j = 0;
            resultados.beforeFirst();//mover antes de empezar
            while (resultados.next()) { //mientras haya resultados

                Double[] obj = new Double[numCols - 1];
                for (int i = 0; i < numCols - 1; i++) {
                    System.out.println("Probando con columna " + (i + 2)); //1 id 2 nombre 3 precio 4 iva 5 categoría
                    //String resultado = resultados.getString(i + 2);
                    //System.out.println(resultado);
                    //obj[i] = Double.parseDouble(resultado);
                    //obj[j][i]=rs.getObject(i+1);
                }
                //TODO consultar comandas del día y guardarlas en un vextor o algo similar
                //String nombrePlatillo = resultados.getString(2);
                //System.out.println("nombre del platillo:" + nombrePlatillo);
                //datosplatillos.put(nombrePlatillo, obj);// put nombre platillo, [precio, iva]
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);

        } finally {

        }
    }

    public boolean QuitarRecomendacionDeComanda(int id) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("DELETE FROM comanda_has_recomendacion_del_chef WHERE recomendacion_del_chef_idrecomendacion_del_chef = '" + id + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } finally {

            return true;
        }
    }

    public void quitarPlatillo(String nombrePlatillo) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("DELETE FROM platillo WHERE nombre ='" + nombrePlatillo + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void registrarPagoEnBD(int id) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            resultados = consulta.executeQuery("UPDATE comanda SET cerrada = '2' WHERE idComanda = '" + id + "'");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public double consultarVentasPorMesero(Mesero mesero) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public double obtenerPrecioDeRecomendacionDelChefDelDia() {
        int idRecomendacion = obtenerIdRecomendacionDeChef();
        conectarABaseDeDatos();
        double precio = 0;
        try {
            Date hoy = new Date();
            consulta = conexion.createStatement();
            String consultaTexto = "SELECT precio FROM recomendacion_del_chef WHERE fecha = '" + new SimpleDateFormat("YYYY/MM/dd").format(hoy) + "'";
            System.out.println(consultaTexto);
            resultados = consulta.executeQuery(consultaTexto);
            if (resultados.next()) {
                precio = resultados.getDouble(1);
                System.out.println("id de recomendación de chef:" + precio);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
        return precio;
    }

    /**
     * Método que permite darle el rol de administrador a un usuario dado
     *
     * @param usuario el id del usuario
     */
    public void agregarPrivilegiosDeAdministrador(String usuario) {
        int id = obtenerIDDeUsuario(usuario);
        conectarABaseDeDatos();
        //TODO cambiar el diseño de bd para que el id sea autoincremental
        try {
            consulta = conexion.createStatement();
            consulta.executeUpdate("INSERT INTO roles VALUES('" + id + "','Administrador' )");
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    public void quitarPlatilloDeSugerenciaDelChef(Platillo p) {
        conectarABaseDeDatos();
        try {
            consulta = conexion.createStatement();
            if (p.getCantidad() > 1) {
                //TODO auitale uno a la cantidad de platillos en la BD y en el objeto
            } else {
                resultados = consulta.executeQuery("DELETE FROM sugerencia_del_chef_has_platillo WHERE nombre ='" + p.getNombrePlatillo() + "'");
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServicioDeAccesoABaseDeDatos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

        }
    }

    class Ticket { //Ticket attribute content
        //TODO probar la impresión física de ticket

        private String contentTicket = "::" + (char) 27 + (char) 112 + (char) 0 + (char) 10 + (char) 100
                + "ACCESORIOS{{nameLocal}}::\n"
                + "Periban.Mich.{{dateTime}}\n"
                + "EXPEDIDO EN: {{expedition}}\n"
                + "Emiliano Zapata Col. Centro \n"
                + "=============================\n"
                + "Periban. Mich. {{dateTime}}\n"
                + "RFC: XAXX010101000\n"
                + "Caja # {{box}} \n"
                + "Ticket # {{ticket}}\n"
                + "LE ATENDIO: {{cajero}}\n"
                + "{{dateTime}}\n"
                + "=============================\n"
                + "{{items}}\n"
                + "=============================\n"
                + "SUBTOTAL: {{subTotal}}\n"
                + "IVA: {{tax}}\n"
                + "TOTAL: {{total}}\n\n"
                + "RECIBIDO: {{recibo}}\n"
                + "CAMBIO: {{change}}\n\n"
                + "=============================\n"
                + "GRACIAS POR SU COMPRA…\n"
                + "ESPERAMOS SU VISITA NUEVAMENTE\n"
                + "\t::{{nameLocal}}::\n"
                + "\n"
                + "\n\n\n ";

//El constructor que setea los valores a la instancia
        Ticket(String nameLocal, String expedition, String box, String ticket, String caissier, String dateTime, String items, String subTotal, String tax, String total) {
            this.contentTicket = this.contentTicket.replace("{{nameLocal}}", nameLocal);
            this.contentTicket = this.contentTicket.replace("{{expedition}}", expedition);
            this.contentTicket = this.contentTicket.replace("{{box}}", box);
            this.contentTicket = this.contentTicket.replace("{{ticket}}", ticket);
            this.contentTicket = this.contentTicket.replace("{{cajero}}", caissier);
            this.contentTicket = this.contentTicket.replace("{{dateTime}}", dateTime);
            this.contentTicket = this.contentTicket.replace("{{items}}", items);
            this.contentTicket = this.contentTicket.replace("{{subTotal}}", subTotal);
            this.contentTicket = this.contentTicket.replace("{{tax}}", tax);
            this.contentTicket = this.contentTicket.replace("{{total}}", total);
        }

        // public void print() throws IOException {
        //TODO mandar cadena a imprimir
        //}
    }

    public static void main(String[] args) {
        ServicioDeAccesoABaseDeDatos datos = new ServicioDeAccesoABaseDeDatos();
        datos.conectarABaseDeDatos();
        if (datos.login("master", "ofpuppets")) {
            System.out.println("usuario hallado");
        } else {
            System.out.println("usuario no hallado");
        }
    }
}

//}
TOP

Related Classes of SistemaDeKioscos.ServicioDeAccesoABaseDeDatos

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.