package gui.dialogo.captura;

import static java.lang.System.out;
import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
import static javax.swing.JOptionPane.showMessageDialog;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import conecta.access.java7.ConectaAccess;

/**
 * @author ?
 *
 */
public class DialogoCaptura extends JDialog implements Serializable {
	public DialogoCaptura(JFrame padre, String titulo, boolean modal) {
		super(padre, titulo, modal);
		componentesDialogo();
	}

	private void componentesDialogo() {

		controlEdades = devuelveListaEdades();
		controla = new JPanel();
		controla.setLayout(new FlowLayout());
		EtiquetaNombre = new JLabel("Nombre: ");
		EtiquetaApellido = new JLabel("Apellido: ");
		EtiquetaEdad = new JLabel("Edad: ");
		EtiquetaTelefono = new JLabel("Teléfono: ");
		textoNombre = new JTextField(18);
		textoApellido = new JTextField(18);
		textoTelefono = new JTextField(18);
		edad = new JComboBox<>();
		mdl = new DefaultComboBoxModel<String>();
		edad.setModel(mdl);
		for(String ed : controlEdades) {
			edad.addItem(ed);
		}
		guardar = new JButton("Guardar");
		cerrardialogo = new JButton("Cerrar");
		guardar.addActionListener(new OtroOyente());
		cerrardialogo.addActionListener(new OtroOyente());
		controla.add(EtiquetaNombre);
		controla.add(textoNombre);
		controla.add(EtiquetaApellido);
		controla.add(textoApellido);
		controla.add(EtiquetaEdad);
		controla.add(edad);
		controla.add(EtiquetaTelefono);
		controla.add(textoTelefono);
		controla.add(guardar);
		controla.add(cerrardialogo);
		add(controla, BorderLayout.CENTER);

	}

	private class OtroOyente implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			if (e.getSource() == guardar) {
				metodoGuarda();
			} else if (e.getSource() == cerrardialogo) {
				showMessageDialog(null, "Cerrando ventana de dialogo",
						"Mensaje", INFORMATION_MESSAGE);
				dispose();
			}
		}
	}

	private void metodoGuarda() {
		try {
			ElNombre = textoNombre.getText();
			ElApellido = textoApellido.getText();
			LaEdad = (String) edad.getSelectedItem();
			ElTelefono = textoTelefono.getText();
			if (ElNombre.isEmpty() && ElApellido.isEmpty()
					&& ElTelefono.isEmpty()) {
				showMessageDialog(null, "Llene todos los campos requeridos",
						"Mensaje", INFORMATION_MESSAGE);
				textoNombre.requestFocus();
				textoNombre.setText("");
				textoApellido.setText("");
				textoApellido.setText("");
				edad.setSelectedIndex(0);
			} else {

				conet = ConectaAccess.getConexion();
				conet.setAutoCommit(false);
				pst = (PreparedStatement) conet.prepareStatement(GUARDAR);
				pst.setString(1, ElNombre);
				pst.setString(2, ElApellido);
				pst.setString(3, LaEdad);
				pst.setString(4, ElTelefono);
				ejecutado = pst.executeUpdate();
				conet.commit();
				if (ejecutado == 1) {
					showMessageDialog(null, "Datos Guardados Correctamente",
							"Mensaje", INFORMATION_MESSAGE);
					textoNombre.requestFocus();
					textoNombre.setText("");
					textoApellido.setText("");
					textoTelefono.setText("");
					edad.setSelectedIndex(0);
				} else {
					showMessageDialog(null,
							"Hubo un error no se guardaron los datos",
							"Mensaje", INFORMATION_MESSAGE);
					textoNombre.requestFocus();
				}
			}

		} catch (SQLException e) {
			out.printf("%s%n", e.getLocalizedMessage());
		}

	}

	private List<String> devuelveListaEdades() {
		lasEdades = new LinkedList<>();
		lasEdades.add("15");
		lasEdades.add("16");
		lasEdades.add("17");
		lasEdades.add("18");
		lasEdades.add("19");
		lasEdades.add("20");
		lasEdades.add("21");
		lasEdades.add("22");
		lasEdades.add("23");
		lasEdades.add("24");
		lasEdades.add("25");
		return lasEdades;
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 2706899228222668765L;
	private JPanel controla;
	private JButton guardar, cerrardialogo;
	private JTextField textoNombre, textoApellido, textoTelefono;
	private DefaultComboBoxModel<String> mdl;
	private JComboBox<String> edad;
	private JLabel EtiquetaNombre, EtiquetaApellido, EtiquetaEdad,
			EtiquetaTelefono;
	private Connection conet;
	private List<String> lasEdades, controlEdades;
	private String ElNombre, ElApellido, LaEdad, ElTelefono;
	private int ejecutado;
	private PreparedStatement pst;
	private final static String GUARDAR = "INSERT INTO Personal(Nombre,Apellido,Edad,Telefono) VALUES( ?, ?, ?, ?);";

}
