// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov  Date: 08/10/2012 8:47:29
// Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   ChequearRegistroDos.java

package project;

import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import org.apache.xerces.framework.XMLParser;
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
import repeat.ArbolDeFicheros;
import traduccion.Traducir;

// Referenced classes of package project:
//            MensajeDeConfirmacion, RetardoCargando, MensajeDeAutentificacion, MensajeDeError, 
//            ChequearUpdates, Application1, MatriculaUsuario, AccederADatos, 
//            GetIp, CambiarIp, CargarDemos, EncriptarDesencriptar, 
//            Cargando, Frame2, LabelDeFondoDelFrame2

public class ChequearRegistroDos
{

    public ChequearRegistroDos(boolean puedeSerDemo, String nombre2, JPasswordField codigo2, Application1 application2)
    {
        doc = null;
        valido = 0;
        intentos = "";
        fechaprov = "";
        fecha = "";
        matriculaModulo = "";
        email = "";
        cod_matr = "0";
        dni = "";
        hora = "";
        horaActual = "";
        realizadas = "";
        idioma = "";
        calendario = Calendar.getInstance();
        int dia = calendario.get(5);
        fechaprov = String.valueOf(dia);
        dia = calendario.get(2);
        dia++;
        fechaprov = fechaprov + "/" + String.valueOf(dia);
        dia = calendario.get(1);
        fechaprov = fechaprov + "/" + String.valueOf(dia);
        application = application2;
        nombre = nombre2;
        codigo = codigo2;
        identificador = String.valueOf(codigo.getPassword());
        if(!puedeSerDemo)
            buscarDatos();
        else
        if(application.matriculaUsuario.textCentroEsteNorte.getSelectedIndex() > 0 || AccederADatos.leer("h.demo").compareToIgnoreCase("S\355") == 0)
        {
            rellenarDatosDemo();
            examenNoValido();
            controlarLaHora();
        } else
        {
            buscarDatos();
        }
    }

    private void controlarIP()
    {
        if(!AccederADatos.entraComoDemo && AccederADatos.leer("h.controlIP").compareToIgnoreCase("S\355") == 0)
            if(nextQuestion.getAttribute("ip").compareTo("null") != 0)
            {
                if(nextQuestion.getAttribute("ip").compareTo(GetIp.GetMyIp()) != 0)
                {
                    MensajeDeConfirmacion mensaje = new MensajeDeConfirmacion();
                    mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411171451", AccederADatos.idioma), id);
                    mensaje = null;
                }
            } else
            {
                CambiarIp.CambiarIpEnBD(id, GetIp.GetMyIp());
            }
    }

    private void rellenarDatosDemo()
    {
        application.cargando.setVisible(true);
        AccederADatos.frameActivo = application.cargando;
        application.nnbb = "Demo";
        application.iidd = "109890616";
        application.demo = true;
        application.iidd2 = String.valueOf(application.matriculaUsuario.cargarDemos.vectorDeModulosNumerico.elementAt(application.matriculaUsuario.textCentroEsteNorte.getSelectedIndex()));
        application.dni = "109890616";
        application.cod_matr = "1";
        application.aapp11 = "Demo";
        application.aapp22 = "Demo";
        retardoCargando = new RetardoCargando();
        valido = 1;
    }

    private void rellenarDatos()
    {
        AccederADatos.frameActivo = application.cargando;
        AccederADatos.nombreUsuario = nextQuestion.getAttribute("name");
        AccederADatos.apellido1Usuario = nextQuestion.getAttribute("apellido1");
        AccederADatos.apellido2Usuario = nextQuestion.getAttribute("apellido2");
        AccederADatos.password = nextQuestion.getAttribute("password");
        AccederADatos.email = nextQuestion.getAttribute("emailaddress");
    }

    private void cogerDatosDelServidor(String pagina2)
    {
        pagina = pagina2;
        if(AccederADatos.username.compareToIgnoreCase("") == 0 && AccederADatos.leer("h.administrador").compareToIgnoreCase("616098901") == 0)
        {
            mensajeAutentif = new MensajeDeAutentificacion();
            mensajeAutentif.mensajeInicial(false, this);
        } else
        {
            continuar();
        }
        mensajeAutentif = null;
    }

    public void continuar()
    {
        try
        {
            proxyurl = new URL(pagina);
            connection = (HttpURLConnection)proxyurl.openConnection();
            connection.setRequestProperty("encriptar", AccederADatos.leer("h.encriptar"));
            connection.setRequestProperty("password", EncriptarDesencriptar.encriptar(identificador));
            connection.setRequestProperty("ip", EncriptarDesencriptar.encriptar(GetIp.GetMyIp()));
            connection.setRequestProperty("idioma", AccederADatos.idioma);
            connection.connect();
            DOMParser parser = new DOMParser();
            BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
            String textoEncriptado = EncriptarDesencriptar.getStringFromInputStream(bis);
            String textoDesencriptado = EncriptarDesencriptar.desencriptar(textoEncriptado);
            System.out.println("pagina: " + pagina);
            System.out.println("identificador: " + identificador);
            System.out.println("textoDesencriptado: " + textoDesencriptado);
            InputSource stream = new InputSource(EncriptarDesencriptar.getInputStreamFromString(textoDesencriptado));
            parser.parse(stream);
            doc = parser.getDocument();
            list = doc.getElementsByTagName("question");
            connection.getInputStream().close();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411151522", AccederADatos.idioma));
            mensaje = null;
        }
    }

    private void chequearEstadoActualizaciones(String fechaDeHoy)
    {
        if(!AccederADatos.entraComoApplet && AccederADatos.leer("h.controlarUpdates").compareToIgnoreCase("S\355") == 0)
        {
            File carpeta = new File(System.getProperties().getProperty("user.dir") + "/java/updates");
            String arrayDeFicheros[] = carpeta.list();
            ChequearUpdates chequearUpdates = new ChequearUpdates();
            String datos[] = chequearUpdates.recogerDatos();
            for(int i = 0; i < datos.length; i++)
            {
                boolean encontrado = false;
                for(int s = 0; s < arrayDeFicheros.length; s++)
                    if(arrayDeFicheros[s].compareToIgnoreCase(datos[i].substring(datos[i].length() - 12)) == 0)
                        encontrado = true;

                if(!encontrado && Integer.parseInt(datos[i].substring(datos[i].length() - 12, datos[i].length() - 4)) < Integer.parseInt(fechaDeHoy.substring(6) + fechaDeHoy.substring(3, 5) + fechaDeHoy.substring(0, 2)))
                {
                    MensajeDeError mensaje = new MensajeDeError();
                    mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411171452", AccederADatos.idioma));
                    mensaje = null;
                }
            }

        }
    }

    private void cogerDatosDeLaListaEnviadaPorElServidor(Element nextQuestion2)
    {
        nextQuestion = nextQuestion2;
        if(AccederADatos.leer("h.controlarIdioma").compareToIgnoreCase("S\355") == 0)
        {
            idioma = nextQuestion.getAttribute("idioma");
            if(idioma.compareToIgnoreCase(AccederADatos.idioma) != 0)
            {
                MensajeDeError mensaje = new MensajeDeError();
                mensaje.mensaje(false, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200501181521", AccederADatos.idioma));
                Cargando _tmp = application.cargando;
                Cargando.cambiarIdioma();
                mensaje = null;
            }
        }
        name = nextQuestion.getAttribute("name");
        id = nextQuestion.getAttribute("password");
        intentos = nextQuestion.getAttribute("intentos");
        fecha = nextQuestion.getAttribute("fecha");
        matriculaModulo = nextQuestion.getAttribute("matriculaModulo");
        fechaprov = nextQuestion.getAttribute("fechaActual");
        chequearEstadoActualizaciones(fechaprov);
        AccederADatos.fecha = Integer.parseInt(fecha.substring(fecha.lastIndexOf("/") + 1) + fecha.substring(fecha.indexOf("/") + 1, fecha.lastIndexOf("/")) + fecha.substring(0, fecha.indexOf("/")));
        AccederADatos.fechaDelExamen = fecha;
        AccederADatos.sfecha = fechaprov;
        AccederADatos.dni = nextQuestion.getAttribute("dni");
        email = nextQuestion.getAttribute("email");
        hora = nextQuestion.getAttribute("hora");
        horaActual = nextQuestion.getAttribute("horaactual");
        realizadas = nextQuestion.getAttribute("realizadas");
    }

    private void realizarCalculos()
    {
        if(nombre.compareTo(email) == 0 && identificador.compareTo(id) == 0 && intentos.compareTo("0") == 0 && fecha.compareTo(fechaprov) == 0)
            datosCorrectos();
        else
        if(nombre.compareTo(email) == 0 && identificador.compareTo(id) == 0 && intentos.compareTo("0") != 0)
            examenYaRealizado();
        else
        if(nombre.compareTo(email) == 0 && identificador.compareTo(id) == 0 && intentos.compareTo("0") == 0 && fecha.compareTo(fechaprov) != 0)
            elExamenNoEsHoy();
    }

    private void datosCorrectos()
    {
        rellenarDatos();
        application.cargando.setVisible(true);
        AccederADatos.frameActivo = application.cargando;
        application.nnbb = name;
        application.iidd = id;
        application.iidd2 = matriculaModulo;
        application.cod_matr = cod_matr;
        application.aapp11 = nextQuestion.getAttribute("apellido1");
        application.aapp22 = nextQuestion.getAttribute("apellido2");
        application.dni = nextQuestion.getAttribute("dni");
        retardoCargando = new RetardoCargando();
        valido = 1;
    }

    private void examenYaRealizado()
    {
        if(AccederADatos.leer("h.repeat").compareToIgnoreCase("S\355") == 0)
        {
            application.cargando.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - application.cargando.getSize().width) / 2, (Toolkit.getDefaultToolkit().getScreenSize().height - application.cargando.getSize().height) / 2);
            rellenarDatos();
            AccederADatos.examenTerminado = true;
            arbolDelFichero = new ArbolDeFicheros(application.cargando, id, matriculaModulo);
            valido = 2;
        } else
        {
            MensajeDeError mensaje = new MensajeDeError();
            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411151526", AccederADatos.idioma));
            mensaje = null;
        }
    }

    private void elExamenNoEsHoy()
    {
        MensajeDeError mensaje = new MensajeDeError();
        mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411151528", AccederADatos.idioma));
        mensaje = null;
    }

    private void examenNoValido()
    {
        if(AccederADatos.leer("h.repeatIvap").compareToIgnoreCase("S\355") == 0 && valido == 0 && AccederADatos.fechaRepeatIVAP.compareToIgnoreCase("") != 0)
            chequearSiEsDeIvap();
        if(valido == 0)
            mensajeExamenNoValido();
    }

    private void controlarLaHora()
    {
        if(valido == 1)
        {
            if((realizadas.compareTo("") == 0 || realizadas.compareTo("0") == 0) && hora.length() > 2)
            {
                int horaActualEntero = Integer.parseInt(horaActual.substring(0, 2));
                int minutosActualEntero = Integer.parseInt(horaActual.substring(3));
                int horaEntero = Integer.parseInt(hora.substring(0, 2));
                int minutosEntero = Integer.parseInt(hora.substring(3));
                try
                {
                    System.out.print("horaActual: " + horaActualEntero + ":" + minutosActualEntero);
                    System.out.print("horaExamen: " + horaEntero + ":" + minutosEntero);
                    if(horaActualEntero * 60 + minutosActualEntero < (horaEntero * 60 + minutosEntero) - 15 || horaActualEntero * 60 + minutosActualEntero > horaEntero * 60 + minutosEntero + 90)
                        if(horaActualEntero * 60 + minutosActualEntero > horaEntero * 60 + minutosEntero + 90)
                        {
                            MensajeDeError mensaje = new MensajeDeError();
                            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411151531", AccederADatos.idioma));
                            mensaje = null;
                        } else
                        {
                            MensajeDeError mensaje = new MensajeDeError();
                            mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411151538", AccederADatos.idioma) + hora);
                            mensaje = null;
                        }
                }
                catch(Exception ex)
                {
                    ex.printStackTrace();
                }
            }
            controlarIP();
            retardoCargando.datos(application);
        }
    }

    private void chequearSiEsDeIvap()
    {
        if(AccederADatos.leer("h.administrador").compareToIgnoreCase("616098901") == 0)
            cogerDatosDelServidor(AccederADatos.leer("h.repeatAddress") + "personsRepeat.jsp");
        else
            cogerDatosDelServidor(AccederADatos.leer("h.proxyAddress") + "personsRepeat.jsp");
        if(list.getLength() > 0)
        {
            for(int i = 0; i < list.getLength(); i++)
            {
                nextQuestion = (Element)list.item(i);
                if(nextQuestion.getAttribute("fecha").compareToIgnoreCase(AccederADatos.fechaRepeatIVAP) == 0)
                {
                    AccederADatos.cambiarPassword = true;
                    cogerDatosDeLaListaEnviadaPorElServidor(nextQuestion);
                    realizarCalculos();
                }
            }

        } else
        {
            mensajeExamenNoValido();
        }
    }

    private void buscarDatos()
    {
        cogerDatosDelServidor(AccederADatos.leer("h.proxyAddress") + "persons.jsp");
        if(list.getLength() == 1)
        {
            cogerDatosDeLaListaEnviadaPorElServidor((Element)list.item(0));
            realizarCalculos();
            examenNoValido();
            controlarLaHora();
        } else
        if(list.getLength() == 0)
            examenNoValido();
    }

    private void mensajeExamenNoValido()
    {
        MensajeDeError mensaje = new MensajeDeError();
        mensaje.mensaje(true, Traducir.getTraduccion(AccederADatos.leer("h.proyecto"), "project.ChequearRegistroDos", "200411151543", AccederADatos.idioma));
        mensaje = null;
    }

    URL proxyurl;
    String pagina;
    MensajeDeAutentificacion mensajeAutentif;
    ArbolDeFicheros arbolDelFichero;
    Document doc;
    RetardoCargando retardoCargando;
    Calendar calendario;
    Element nextQuestion;
    String name;
    String id;
    String nombre;
    JPasswordField codigo;
    JFrame frame;
    int valido;
    Frame2 frameOpciones;
    LabelDeFondoDelFrame2 labelDeFondoDelFrame2;
    String cod;
    String identificador;
    Application1 application;
    String intentos;
    String fechaprov;
    String fecha;
    String matriculaModulo;
    String email;
    String cod_matr;
    String dni;
    HttpURLConnection connection;
    String hora;
    String horaActual;
    String realizadas;
    NodeList list;
    String idioma;
}