#include "WidgetJugadores.h"
#include <QVBoxLayout>
#include <QHeaderView>

WidgetJugadores::WidgetJugadores(QWidget* parent) : QWidget(parent) {
    setupUI();
}

void WidgetJugadores::setupUI() {
    auto* layout = new QVBoxLayout(this);
    layout->setContentsMargins(16, 16, 16, 16);
    layout->setSpacing(10);

    m_lblTotal = new QLabel("Sin jugadores");
    m_lblTotal->setObjectName("lblTotal");
    layout->addWidget(m_lblTotal);

    m_tabla = new QTableWidget;
    m_tabla->setColumnCount(5);
    m_tabla->setHorizontalHeaderLabels({"#", "Nombre", "Alias", "Victorias", "Estado"});
    m_tabla->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
    m_tabla->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
    m_tabla->setEditTriggers(QAbstractItemView::NoEditTriggers);
    m_tabla->setSelectionBehavior(QAbstractItemView::SelectRows);
    m_tabla->setAlternatingRowColors(true);
    m_tabla->verticalHeader()->setVisible(false);
    layout->addWidget(m_tabla);

    setStyleSheet(R"(
        QWidget { background: #1a1a2e; color: #c0d4e8; }
        #lblTotal { color: #7090b0; font-size: 12px; margin-bottom: 4px; }
        QTableWidget {
            background: #16213e;
            alternate-background-color: #1e2a4a;
            color: #c8dce8;
            gridline-color: #2a3a5a;
            border: 1px solid #2a3a5a;
            border-radius: 6px;
            font-size: 13px;
        }
        QHeaderView::section {
            background: #0f1e3a;
            color: #80a0c0;
            padding: 8px;
            border: none;
            border-bottom: 2px solid #e94560;
            font-weight: bold;
        }
        QTableWidget::item:selected { background: #1a4060; }
    )");
}

void WidgetJugadores::setTorneo(Torneo* t) { m_torneo = t; }

void WidgetJugadores::refresh() {
    m_tabla->setRowCount(0);
    if (!m_torneo) {
        m_lblTotal->setText("Sin torneo activo");
        return;
    }

    const auto& jugadores = m_torneo->getJugadores();
    m_lblTotal->setText(QString("Total: %1 jugadores inscritos").arg(jugadores.size()));
    m_tabla->setRowCount((int)jugadores.size());

    for (int i = 0; i < (int)jugadores.size(); ++i) {
        const auto& j = jugadores[i];
        m_tabla->setItem(i, 0, new QTableWidgetItem(QString::number(i + 1)));
        m_tabla->setItem(i, 1, new QTableWidgetItem(j->getNombre()));
        m_tabla->setItem(i, 2, new QTableWidgetItem(j->getAlias()));
        m_tabla->setItem(i, 3, new QTableWidgetItem(
            QString("%1V / %2D").arg(j->getVictorias()).arg(j->getDerrotas())));

        QString estado;
        QColor color;
        if (m_torneo->getCampeon() == j) {
            estado = "🏆 Campeón"; color = QColor(255, 215, 0);
        } else if (j->isEliminado()) {
            estado = "❌ Eliminado"; color = QColor(150, 70, 70);
        } else if (m_torneo->getEstado() == Torneo::Estado::EN_CURSO) {
            estado = "✅ En competición"; color = QColor(80, 200, 130);
        } else {
            estado = "⏳ Inscrito"; color = QColor(120, 160, 200);
        }

        auto* itemEstado = new QTableWidgetItem(estado);
        itemEstado->setForeground(color);
        m_tabla->setItem(i, 4, itemEstado);

        m_tabla->setRowHeight(i, 32);
    }
}
