#ifndef ADDTAREADIALOG_H
#define ADDTAREADIALOG_H

#include <QDialog>
#include <QLineEdit>
#include <QTextEdit>
#include <QDateEdit>
#include <QSpinBox>
#include <QComboBox>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QDate>
#include <QGroupBox>
#include <QCheckBox> 
#include <QMessageBox> 


#include "Tarea.h"  // Necesitamos la definición de Tarea
#include "Ramo.h"   // Necesitamos la definición de Ramo para la selección
#include "ActividadAcademica.h" // Nueva inclusión

class AddTareaDialog : public QDialog {
    Q_OBJECT

public:
    // Constructor: Recibe la lista de ramos disponibles
    explicit AddTareaDialog(const QList<Ramo*>& ramosDisponibles, QWidget *parent = nullptr);
    ~AddTareaDialog();

    // Métodos para obtener los datos ingresados por el usuario
    QString getNombre() const;
    QString getDescripcion() const;
    QDate getFechaInicio() const;
    QDate getFechaFin() const;
    int getRamoIdSeleccionado() const; // Retorna el ID del ramo seleccionado
    QDate getFechaEntrega() const;
    float getEstimacionHoras() const;
    void accept();
    bool esEvaluativa() const;
    QString getNombreActividadEvaluativa() const;
    QString getPonderacionActividadEvaluativaString() const;
    static float evaluatePonderationExpression(const QString& expression);

private slots:
    void on_esEvaluativa_toggled(bool checked);
private:
    void setupUi(const QList<Ramo*>& ramosDisponibles); // Configura la UI del diálogo
    QLineEdit *nombreLineEdit;
    QTextEdit *descripcionTextEdit;
    QDateEdit *fechaInicioDateTimeEdit;
    QDateEdit *fechaFinDateTimeEdit;
    QComboBox *ramoComboBox; // Para seleccionar el ramo
    QLineEdit *fechaEntregaLineEdit; // Mostrará la fecha de fechaFin
    QSpinBox *estimacionHorasSpinBox; // En horas

    QCheckBox *esEvaluativaCheckBox;
    QLineEdit *nombreActividadEvaluativaLineEdit;
    QLineEdit *ponderacionActividadEvaluativaLineEdit;

    QPushButton *okButton;
    QPushButton *cancelButton;
    
    // Mapa para almacenar los ramos y sus IDs, para fácil recuperación
    QMap<QString, int> ramoNameToIdMap;
};

#endif // ADDTAREADIALOG_H
