#ifndef PROYECTO_H
#define PROYECTO_H

#include "ActividadAcademica.h" // ¡Ahora hereda de ActividadAcademica!
#include "Hito.h" // Incluir Hito.h
#include <QList>
#include "Ramo.h" // Para Ramo* en la base
class Proyecto : public ActividadAcademica {
public:
    // Constructor modificado
    Proyecto(int id, const QString& nombre, const QString& descripcion,
             const QDate& fechaInicio, const QDate& fechaFin, Ramo* ramoAsociado,
             const QDate& fechaEntregaFinal, const QList<QString>& miembrosEquipo,
             // Atributos de evaluación se pasan a ActividadAcademica
             float ponderacion = 0.0f,  float notaObtenida = -1.0f, 
                float estimacionHoras = 0.0f, // Estimación de horas
              QObject* parent = nullptr);

    ~Proyecto() override;

    // Getters específicos de Proyecto
    QDate getFechaEntregaFinal() const;
    QList<QString> getMiembrosEquipo() const;
    QList<Hito*> getHitos() const;

    // Setters específicos de Proyecto
    void setFechaEntregaFinal(const QDate& fecha);
    void setMiembrosEquipo(const QList<QString>& miembros);

    // Métodos virtuales de ActividadAcademica
    QString obtenerTipoActividad() const override;
    void mostrarDetalles() const override;

    // Métodos de gestión de Hitos
    void agregarHito(Hito* hito);
    void marcarHitoCompletado(int idHito);
    void eliminarHito(int idHito);

private:
    QDate m_fechaEntregaFinal;
    QList<QString> m_miembrosEquipo;
    QList<Hito*> m_hitos; // Lista de punteros a Hito
};

#endif // PROYECTO_H
