#include "Tarea.h"

Tarea::Tarea(int id, const QString& nombre, const QString& descripcion,
             const QDate& fechaInicio, const QDate& fechaFin, Ramo* ramoAsociado,
             float estimacionHoras,
             float ponderacion, float notaObtenida, QObject* parent) // Ponderacion y nota van a la base
    : ActividadAcademica(id, nombre, descripcion, fechaInicio, fechaFin, ramoAsociado,
                         ponderacion, notaObtenida, estimacionHoras, parent), // Llama al constructor de la base
                 m_estimacionHoras(estimacionHoras) {}

// Getters específicos de Tarea
QDate Tarea::getFechaEntrega() const { return m_fechaEntrega; }
float Tarea::getEstimacionHoras() const { return m_estimacionHoras; }

// Setters específicos de Tarea
void Tarea::setFechaEntrega(const QDate& fechaEntrega) { m_fechaEntrega = fechaEntrega; }

void Tarea::setEstimacionHoras(float horas) { m_estimacionHoras = horas; }

QString Tarea::obtenerTipoActividad() const { return "Tarea"; }

void Tarea::mostrarDetalles() const {
    qDebug() << "--- Detalles de Tarea ---";
    qDebug() << "ID:" << m_id;
    qDebug() << "Nombre:" << m_nombre;
    qDebug() << "Descripción:" << m_descripcion;
    qDebug() << "Inicio:" << m_fechaInicio.toString("dd/MM/yyyy hh:mm");
    qDebug() << "Fin:" << m_fechaFin.toString("dd/MM/yyyy hh:mm");
    qDebug() << "Ramo Asociado:" << (m_ramoAsociado ? m_ramoAsociado->getNombre() : "N/A");
    qDebug() << "Completada (Total):" << (estaCompletada() ? "Sí" : "No");
    qDebug() << "Horas Estimadas:" << m_estimacionHoras;
    if (m_ponderacion > 0) { // Si tiene ponderación, es evaluativa
        qDebug() << "  Ponderación: " << m_ponderacion << "%";
        qDebug() << "  Nota: " << (m_notaObtenida != -1.0f ? QString::number(m_notaObtenida) : "No registrada");
    }
    qDebug() << "-------------------------";
}