/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package gestor;

import gestor.datos.*;
import gestor.utiles.*;
import java.util.*;
import javax.swing.*;

public final class DlgSeleccionarCitaPrevia extends javax.swing.JDialog {

    int idSeleccionado = 0;
    javax.swing.Timer timerCierraDialogo;
    boolean cerrarSolo = true;
    DlgPedirNif padre;
    ArrayList<RegistroCandidatos> citas;
    InfoServicios servicios;
    boolean comprobarHora = true;

    public DlgSeleccionarCitaPrevia(DlgPedirNif padre, ArrayList<RegistroCandidatos> citas) {
        super(padre, true);
        this.padre = padre;
        this.citas = citas;
        servicios = Configuracion.instanciaUnica().infoServicios;
        initComponents();
        ajustar();
        if (!Configuracion.instanciaUnica().cursorVisible) {
            setCursor(gestor.utiles.Global.mainForm.cursorTransparente);
        }
        lbTieneCitas.setText(Global.trad.valor("TieneVariasCitas"));
        btCancelar.setText(Global.trad.valor("Cancelar"));
        todosInvisibles();
        ordenarCitas();
        rellenarControles();
        preparaTimerCierre();
    }

    void preparaTimerCierre() {
        timerCierraDialogo = new javax.swing.Timer(Configuracion.instanciaUnica().segundosCierreVentanas * 1000, (java.awt.event.ActionEvent evt) -> {
            cerrarCon(0);
        });
        timerCierraDialogo.start();
    }

    public void ajustar() {
        padre.ajustarDlgCitaPrevia(this);
    }

    public void quitarBorde() {
       this.panelGeneral.setBorder(null);
    }

    void todosInvisibles() {
        lbCita1.setVisible(false);
        lbCita2.setVisible(false);
        lbCita3.setVisible(false);
        lbHora1.setVisible(false);
        lbHora2.setVisible(false);
        lbHora3.setVisible(false);
        btCita1.setVisible(false);
        btCita1.setText(Global.trad.valor("EmitirTicket"));
        btCita2.setVisible(false);
        btCita2.setText(Global.trad.valor("EmitirTicket"));
        btCita3.setVisible(false);
        btCita3.setText(Global.trad.valor("EmitirTicket"));
    }

    void ordenarCitas() {
        Collections.sort(citas, new Comparator<RegistroCandidatos>() {

            @Override
            public int compare(RegistroCandidatos r1, RegistroCandidatos r2) {
                return r1.horaCita.compareTo(r2.horaCita);
            }
        });
    }

    void rellenarControles() {
        boolean hayPresente = false;
        RegistroCandidatos rg = citas.get(0);
        this.lbIdentificacion.setText(rg.nif + "  " + rg.nombre);

        for (RegistroCandidatos cita : citas) {
            rg = cita;
            if (rg.estado.equals("F") || rg.estado.equals("S")) {
                comprobarHora = false;
            }
            if (rg.estado.equals("P")) {
                hayPresente = true;
                break;
            }
        }

        if (hayPresente) {
            lbTieneCitas.setText(Global.trad.valor("TieneTicketPendiente"));
            lbCita1.setVisible(true);
            lbCita2.setVisible(true);
            lbCita1.setText(Global.trad.valor("ticket") + ": " + rg.numeroTicket);
            lbCita2.setText(Global.trad.valor("servicio") + ": " + servicios.get(rg.cola).getDescripcion());
            lbCita2.setSize(420, lbCita2.getHeight());
            return;
        }

        rg = citas.get(0);
        visualizaCita(lbHora1, lbCita1, btCita1, rg);
        if (citas.size() > 1) {
            rg = citas.get(1);
            visualizaCita(lbHora2, lbCita2, btCita2, rg);
        }
        if (citas.size() > 2) {
            rg = citas.get(2);
            visualizaCita(lbHora3, lbCita3, btCita3, rg);
        }
    }

    void visualizaCita(JLabel lbHora, JLabel lbCita, JButton boton, RegistroCandidatos r) {
        lbHora.setVisible(true);
        lbCita.setVisible(true);
        boton.setVisible(true);
        if (!r.estado.equals(" ")) {
            if (r.estado.equals("F") || r.estado.equals("S")) {
                boton.setText(Global.trad.valor("YaAtendida"));
            } else if (r.estado.equals("P")) {
                boton.setText(Global.trad.valor("YaEmitido"));
            } else {
                boton.setText(Global.trad.valor("NoDisponible"));
            }
            boton.setEnabled(false);
        }
        if (comprobarHora) {
            int n = Global.compruebaHoraCalculada(System.currentTimeMillis(), r.horaCita.getTime());
            if (n == 3) {
                boton.setText(Global.trad.valor("NoDisponible"));
                boton.setEnabled(false);
            }
        }
        lbHora.setText(Fecha.formatoHoraHM(r.horaCita));
        if (servicios.servicios.containsKey(r.cola)) {
            lbCita.setText(servicios.get(r.cola).getDescripcion());
        } else {
            lbCita.setText(r.cola);
        }
        boton.putClientProperty("id", r.id);
    }

    void pulsadoBotonCita(JButton boton) {
        int id = ((Integer) boton.getClientProperty("id"));
        cerrarCon(id);
    }

    void cerrarCon(int valor) {
        idSeleccionado = valor;
        timerCierraDialogo.stop();
        setVisible(false);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelGeneral = new javax.swing.JPanel();
        panelIdentificacion = new MiPanel();
        lbIdentificacion = new javax.swing.JLabel();
        panelCitas = new MiPanel();
        lbTieneCitas = new javax.swing.JLabel();
        lbHora1 = new javax.swing.JLabel();
        btCita1 = new gestor.utiles.MiBoton();
        lbCita1 = new javax.swing.JLabel();
        lbHora2 = new javax.swing.JLabel();
        btCita2 = new gestor.utiles.MiBoton();
        btCita3 = new gestor.utiles.MiBoton();
        lbCita2 = new javax.swing.JLabel();
        lbHora3 = new javax.swing.JLabel();
        lbCita3 = new javax.swing.JLabel();
        btCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setModal(true);
        setUndecorated(true);
        setResizable(false);

        panelGeneral.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(204, 204, 204), 4));

        panelIdentificacion.setPreferredSize(new java.awt.Dimension(90, 70));
        panelIdentificacion.setLayout(null);

        lbIdentificacion.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 28)); // NOI18N
        lbIdentificacion.setText("jLabel1");
        lbIdentificacion.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 10, 1, 1));
        panelIdentificacion.add(lbIdentificacion);
        lbIdentificacion.setBounds(0, 0, 780, 40);

        panelCitas.setLayout(null);

        lbTieneCitas.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 26)); // NOI18N
        lbTieneCitas.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lbTieneCitas.setText("Tiene varias citas concertadas. Seleccione una");
        lbTieneCitas.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 10, 1, 1));
        panelCitas.add(lbTieneCitas);
        lbTieneCitas.setBounds(0, -9, 774, 50);

        lbHora1.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 24)); // NOI18N
        lbHora1.setText("jLabel1");
        panelCitas.add(lbHora1);
        lbHora1.setBounds(20, 60, 130, 68);

        btCita1.setFont(new java.awt.Font("Microsoft Sans Serif", 3, 24)); // NOI18N
        btCita1.setText("Emitir ticket");
        btCita1.setFocusable(false);
        btCita1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCita1ActionPerformed(evt);
            }
        });
        panelCitas.add(btCita1);
        btCita1.setBounds(500, 60, 255, 68);

        lbCita1.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 24)); // NOI18N
        lbCita1.setText("jLabel2");
        panelCitas.add(lbCita1);
        lbCita1.setBounds(137, 60, 340, 68);

        lbHora2.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 24)); // NOI18N
        lbHora2.setText("jLabel3");
        panelCitas.add(lbHora2);
        lbHora2.setBounds(20, 140, 130, 68);

        btCita2.setFont(new java.awt.Font("Microsoft Sans Serif", 3, 24)); // NOI18N
        btCita2.setText("Emitir ticket");
        btCita2.setFocusable(false);
        btCita2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCita1ActionPerformed(evt);
            }
        });
        panelCitas.add(btCita2);
        btCita2.setBounds(500, 140, 255, 68);

        btCita3.setFont(new java.awt.Font("Microsoft Sans Serif", 3, 24)); // NOI18N
        btCita3.setText("Emitir ticket");
        btCita3.setFocusable(false);
        btCita3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCita1ActionPerformed(evt);
            }
        });
        panelCitas.add(btCita3);
        btCita3.setBounds(500, 220, 255, 68);

        lbCita2.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 24)); // NOI18N
        lbCita2.setText("jLabel4");
        panelCitas.add(lbCita2);
        lbCita2.setBounds(140, 140, 340, 68);

        lbHora3.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 24)); // NOI18N
        lbHora3.setText("jLabel5");
        panelCitas.add(lbHora3);
        lbHora3.setBounds(20, 220, 130, 68);

        lbCita3.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 24)); // NOI18N
        lbCita3.setText("jLabel6");
        panelCitas.add(lbCita3);
        lbCita3.setBounds(140, 220, 340, 68);

        btCancelar.setFont(new java.awt.Font("Microsoft Sans Serif", 3, 24)); // NOI18N
        btCancelar.setText("cancelar");
        btCancelar.setFocusable(false);
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });
        panelCitas.add(btCancelar);
        btCancelar.setBounds(240, 370, 267, 57);

        org.jdesktop.layout.GroupLayout panelGeneralLayout = new org.jdesktop.layout.GroupLayout(panelGeneral);
        panelGeneral.setLayout(panelGeneralLayout);
        panelGeneralLayout.setHorizontalGroup(
            panelGeneralLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(panelGeneralLayout.createSequentialGroup()
                .add(panelGeneralLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(panelGeneralLayout.createSequentialGroup()
                        .add(panelIdentificacion, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 797, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .add(0, 54, Short.MAX_VALUE))
                    .add(panelCitas, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        panelGeneralLayout.setVerticalGroup(
            panelGeneralLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(panelGeneralLayout.createSequentialGroup()
                .add(panelIdentificacion, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(panelCitas, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 435, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .add(panelGeneral, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(panelGeneral, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents
    private void btCita1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCita1ActionPerformed
        pulsadoBotonCita((JButton) evt.getSource());
    }//GEN-LAST:event_btCita1ActionPerformed

    private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarActionPerformed
        cerrarCon(0);
    }//GEN-LAST:event_btCancelarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btCancelar;
    private javax.swing.JButton btCita1;
    private javax.swing.JButton btCita2;
    private javax.swing.JButton btCita3;
    private javax.swing.JLabel lbCita1;
    private javax.swing.JLabel lbCita2;
    private javax.swing.JLabel lbCita3;
    private javax.swing.JLabel lbHora1;
    private javax.swing.JLabel lbHora2;
    private javax.swing.JLabel lbHora3;
    private javax.swing.JLabel lbIdentificacion;
    private javax.swing.JLabel lbTieneCitas;
    private javax.swing.JPanel panelCitas;
    private javax.swing.JPanel panelGeneral;
    private javax.swing.JPanel panelIdentificacion;
    // End of variables declaration//GEN-END:variables
}
