#include "ActividadDiaria.h"


int ActividadDiaria::s_nextId = 0; // Inicializar ID estático

ActividadDiaria::ActividadDiaria(int id, const QString& nombre, TipoActividad tipo,
                               const QDate& fecha, int duracionMinutos,
                               Ramo* ramoAsociado, const QString& descripcion, QObject* parent) // <-- Añadir QObject* parent
    : QObject(parent),
      m_id(id), m_nombre(nombre), m_tipo(tipo),
      m_fecha(fecha), m_duracionMinutos(duracionMinutos),
      m_ramoAsociado(ramoAsociado), m_descripcion(descripcion)
{
    if (id == 0) { // Si se pasa 0, generar un nuevo ID
        m_id = ++s_nextId;
    } else if (id > s_nextId) { // Asegurar que el nextId es mayor que cualquier ID cargado
        s_nextId = id;
    }
}
ActividadDiaria::~ActividadDiaria()  {

}


// Getters
int ActividadDiaria::getId() const { return m_id; }
QString ActividadDiaria::getNombre() const { return m_nombre; }
ActividadDiaria::TipoActividad ActividadDiaria::getTipo() const { return m_tipo; }

QString ActividadDiaria::getTipoString() const {
    switch (m_tipo) {
        case EstudioPersonal: return "Estudio Personal";
        case TrabajoProyecto: return "Trabajo en Proyecto";
        case TareaEspecifica: return "Tarea Específica";
        case OtraActividad: return "Otra Actividad";
        default: return "Desconocido";
    }
}

QDate ActividadDiaria::getFecha() const { return m_fecha; }
int ActividadDiaria::getDuracionMinutos() const { return m_duracionMinutos; }
Ramo* ActividadDiaria::getRamoAsociado() const { return m_ramoAsociado; }
QString ActividadDiaria::getDescripcion() const { return m_descripcion; }

// Setters
void ActividadDiaria::setNombre(const QString& nombre) { m_nombre = nombre; }
void ActividadDiaria::setTipo(TipoActividad tipo) { m_tipo = tipo; }
void ActividadDiaria::setFecha(const QDate& fecha) { m_fecha = fecha; }
void ActividadDiaria::setDuracionMinutos(int duracionMinutos) { m_duracionMinutos = duracionMinutos; }
void ActividadDiaria::setRamoAsociado(Ramo* ramo) { m_ramoAsociado = ramo; }
void ActividadDiaria::setDescripcion(const QString& descripcion) { m_descripcion = descripcion; }

// Opcional: Métodos estáticos para resetear el ID si fuera necesario al cargar/limpiar
/*
void ActividadDiaria::resetNextId() { s_nextId = 0; }
void ActividadDiaria::setNextId(int id) { if (id > s_nextId) s_nextId = id; }
*/
