#ifndef ACTIVIDADDARIA_H
#define ACTIVIDADDARIA_H

#include "Ramo.h" // Incluir Ramo.h
#include <QString>
#include <QDate>
#include <QDebug>
#include <QObject> // ¡NUEVA INCLUSIÓN!

class Ramo; // Forward declaration


class ActividadDiaria : public QObject {
    Q_OBJECT

public:
    enum TipoActividad {
        EstudioPersonal,
        TrabajoProyecto,
        TareaEspecifica,
        OtraActividad
    };
    Q_ENUM(TipoActividad) // Ahora esto funcionará correctamente.

    // Constructor (ahora con QObject como padre)
    explicit ActividadDiaria(int id, const QString& nombre, TipoActividad tipo,
                             const QDate& fecha, int duracionMinutos,
                             Ramo* ramoAsociado = nullptr, const QString& descripcion = "", QObject* parent = nullptr);

    // Destructor (añadir override)
    ~ActividadDiaria() override;


    // Getters existentes
    int getId() const;
    QString getNombre() const;
    TipoActividad getTipo() const;
    QString getTipoString() const;
    QDate getFecha() const;
    int getDuracionMinutos() const;
    Ramo* getRamoAsociado() const;
    QString getDescripcion() const;

    // Setters existentes
    void setNombre(const QString& nombre);
    void setTipo(TipoActividad tipo);
    void setFecha(const QDate& fecha);
    void setDuracionMinutos(int duracionMinutos);
    void setRamoAsociado(Ramo* ramo);
    void setDescripcion(const QString& descripcion);

private:
    int m_id;
    QString m_nombre;
    TipoActividad m_tipo;
    QDate m_fecha;
    int m_duracionMinutos;
    Ramo* m_ramoAsociado;
    QString m_descripcion;

    static int s_nextId;
};

#endif // ACTIVIDADDARIA_H
