package com.ryuuji.visual.cZone.asignatura;

import logica.ExNihilo;
import org.jdesktop.swingx.JXDatePicker;
import orm.Asignatura;

import javax.swing.*;
import java.util.Date;

public class ActividadCrear extends JFrame {
    private Asignatura asignatura;
    private AnalizarAsignaturas analizarAsignaturas;
    private JXDatePicker picker;
    private JPanel mainPanel;
    private JTextField tipoField;
    private JButton crearButton;
    private JLabel errorVacio1;
    private JLabel errorVacio2;

    /**
     * Inicia los valores basicos de la asignatura
     * @param asignatura Asignatura a la que se le añadera la asignatura.
     * @param analizarAsignaturas almacena esta ventana para actualizar los datos de esta cuando se cree la actividad.
     */
    public ActividadCrear(Asignatura asignatura, AnalizarAsignaturas analizarAsignaturas) {
        this.asignatura = asignatura;
        this.analizarAsignaturas = analizarAsignaturas;
        setTitle("Crear Actividad");
        setContentPane(mainPanel);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);
        init();
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    /**
     * Inicia ciertos valores en este caso solo llama a setListeners
     */
    public void init() {
        setListeners();
    }

    /**
     * Inicia los listeners
     * en este caso solo crea el del boton crear el cual inicia la secuencia de creacion
     */
    public void setListeners() {
        crearButton.addActionListener(a -> {
            errorVacio1.setVisible(false);
            errorVacio2.setVisible(false);
            if (comprobar()) {
                crear();
                analizarAsignaturas.fillPlanificacion();
                dispose();
            }
            pack();
        });
    }

    /**
     * Comprueba los datos ingresados y muestra un error dependiendo del problema.
     * @return un booleano indicando si los datos pasaron la comprobacion o no
     */
    public boolean comprobar() {
        boolean vacio1 = tipoField.getText().trim().isEmpty();
        boolean vacio2 = picker.getDate() == null;
        if (!vacio1 && !vacio2) {
            return true;
        } else {
            if (vacio1) {
                errorVacio1.setVisible(true);
            }
            if (vacio2) {
                errorVacio2.setVisible(true);
            }
        }
        return false;
    }

    /**
     * Crea la actividad con los datos asignados.
     */
    public void crear() {
        Date fecha = picker.getDate();
        String tipo = tipoField.getText();
        ExNihilo.crearActividad(fecha, tipo, asignatura);
    }

}
