package com.ryuuji.visual.rZone;

import logica.Listas;
import logica.Search;
import logica.reportes.Reporte;
import logica.reportes.ReportePlanificaciones;
import orm.Apoderado;

import javax.swing.*;
import java.io.File;

public class ReportePlanificacionesFrame extends JFrame {
    protected JComboBox<String> apoderadoBox;
    private JButton generarButton;
    private JPanel mainPanel;
    private JTextField nombreField;

    private Apoderado apoderado;
    private Reporte reporte;

    public ReportePlanificacionesFrame(Reporte reporte) {
        this.reporte = reporte;
        setTitle("Generar Reporte de Planificaciones");
        setContentPane(mainPanel);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);
        init();
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    /**
     * Llama a los metodos que inician los campos de la ventana.
     */
    private void init() {
        fillApoderado();
        setApoderado();
        setListeners();
    }

    /**
     * Añade los listeners a la combobox y al boton
     */
    private void setListeners() {
        apoderadoBox.addActionListener(a -> {
            setApoderado();
        });
        generarButton.addActionListener(a -> {
            generar();
        });
    }

    /**
     * Genera el reporte con el apoderado seleccionado
     */
    private void generar() {
        ReportePlanificaciones rp = new ReportePlanificaciones(apoderado);
        rp.generar(new File("files/xslt"), true, true, true, true, true);
        JOptionPane.showMessageDialog(this, "El reporte a sido generado");
    }

    /**
     * Llena la combobox con los apoderados del sistema
     */
    public void fillApoderado() {
        String[][] apoderados = Listas.listaApoderados();
        apoderadoBox.removeAllItems();
        if (apoderados != null) {
            for (String[] apoderado : apoderados) {
                apoderadoBox.addItem(apoderado[1]);
            }
        }
    }

    /**
     * almacena el apoderado seleccionado en la combobox
     */
    public void setApoderado() {
        apoderado = null;
        nombreField.setText("");
        String selected = (String) apoderadoBox.getSelectedItem();
        if (selected != null) {
            apoderado = Search.buscarApoderado(selected);
        }
        if (apoderado != null) {
            nombreField.setText(apoderado.getNombre());
        }

    }
}
