/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package generateurmdp;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 *
 * @author cedrickaiser2
 */
public class NewUser extends JFrame implements ActionListener {

    private final String ACTION_VALIDER = "OK";
    private final String ACTION_ANNULER = "Annuler";
    private JFrame JFrameNewUser;
    private JLabel JLblLogin;
    private JTextField JTxtLogin;
    private JLabel JLblMessage;
    private JLabel JLblMDP;
    private JLabel JLblMDP2;
    private JPasswordField JTxtMDP;
    private JPasswordField JTxtMDP2;
    private JButton JBtValider;
    private JButton JBtAnnuler;
    private Connection connec;

    NewUser() {
        JFrameNewUser = new JFrame("Nouvel utilisateur");
        JFrameNewUser.setBounds(10, 10, 200, 220);
        JFrameNewUser.setVisible(true);
        JFrameNewUser.setLayout(null);

        JLblLogin = new JLabel("Nom d'utilisateur");
        JLblLogin.setBounds(10, 10, 180, 20);

        JTxtLogin = new JTextField();
        JTxtLogin.setBounds(10, 30, 180, 20);

        JLblMDP = new JLabel("Mot de passe");
        JLblMDP.setBounds(10, 50, 180, 20);

        JTxtMDP = new JPasswordField();
        JTxtMDP.setBounds(10, 70, 180, 20);

        JLblMDP2 = new JLabel("Retapez le mot de passe");
        JLblMDP2.setBounds(10, 90, 180, 20);

        JLblMessage = new JLabel("test");
        JLblMessage.setBounds(10, 170, 180, 20);

        JTxtMDP2 = new JPasswordField();
        JTxtMDP2.setBounds(10, 110, 180, 20);

        JBtAnnuler = new JButton(ACTION_ANNULER);
        JBtAnnuler.setBounds(10, 140, 90, 20);
        JBtAnnuler.addActionListener(this);

        JBtValider = new JButton(ACTION_VALIDER);
        JBtValider.setBounds(100, 140, 90, 20);
        JBtValider.addActionListener(this);

        JFrameNewUser.getContentPane().add(JLblLogin);
        JFrameNewUser.getContentPane().add(JTxtLogin);
        JFrameNewUser.getContentPane().add(JLblMDP);
        JFrameNewUser.getContentPane().add(JLblMDP2);
        JFrameNewUser.getContentPane().add(JLblMessage);
        JFrameNewUser.getContentPane().add(JTxtMDP);
        JFrameNewUser.getContentPane().add(JTxtMDP2);
        JFrameNewUser.getContentPane().add(JBtAnnuler);
        JFrameNewUser.getContentPane().add(JBtValider);

    }

    public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand();
        if (action.equals(ACTION_VALIDER)) {
            checkForm();
        }
        if (action.equals(ACTION_ANNULER)) {
            JFrameNewUser.dispose();
        }
    }

    public void checkForm() {
        if (!JTxtLogin.getText().equals("")) {
            if (!JTxtMDP.getText().equals("")) {

                if (JTxtMDP.getText().equals(JTxtMDP2.getText())) {
                    if (!checkUser()) {
                        createUser();
                        JFrameNewUser.dispose();
                    } else {
                        JTxtLogin.setText("");
                        JLblMessage.setForeground(Color.red);
                        JLblMessage.setText("Utilisateur déjà existant");

                    }

                } else {
                    JLblMessage.setForeground(Color.red);
                    JLblMessage.setText("Mots de passe différents");
                    JTxtMDP.setText("");
                    JTxtMDP2.setText("");
                }

            } else {
                JLblMessage.setForeground(Color.red);
                JLblMessage.setText("Entrer un mot de passe");
            }

        } else {
            JLblMessage.setForeground(Color.red);
            JLblMessage.setText("Entrer un nom de login");
        }
    }

    public boolean checkUser() {
        ConnectionBDD cbdd = ConnectionBDD.getInstance();
        connec = cbdd.getConnexion();

        String requete = "select login from user where login ='" + JTxtLogin.getText() + "'";

        Statement st;
        try {
            st = connec.createStatement();
            ResultSet rs = st.executeQuery(requete);

            while (rs.next()) {
                return true;
            }
        } catch (SQLException ex) {
            System.out.println("Erreur de selection dans la Base de Données : " + ex.getMessage());
        }
        return false;
    }

    public void createUser() {
        ConnectionBDD cbdd = ConnectionBDD.getInstance();
        connec = cbdd.getConnexion();

        String requete = "insert into user(login, mdp) values ('" + JTxtLogin.getText() + "', '" + JTxtMDP.getText() + "')";


        Statement st;
        try {
            st = connec.createStatement();
            st.executeUpdate(requete);
            System.out.print(st);

            System.out.print("Utilisateur crée");

        } catch (SQLException ex) {
            System.out.println("Erreur d'insertion dans la Base de Données : " + ex.getMessage());
        }

    }
}
