#include "TorneoFactory.h"
#include <QStringList>

std::unique_ptr<Torneo> TorneoFactory::crear(
    TipoTorneo tipo, const QString& nombre, const QString& juego)
{
    switch (tipo) {
    case TipoTorneo::ELIMINATORIO_SIMPLE:
        return std::make_unique<TorneoEliminatorioSimple>(nombre, juego);
    case TipoTorneo::DOBLE_ELIMINACION:
        return std::make_unique<TorneoDobleEliminacion>(nombre, juego);
    }
    return nullptr;
}

QString TorneoFactory::nombreTipo(TipoTorneo tipo) {
    switch (tipo) {
    case TipoTorneo::ELIMINATORIO_SIMPLE: return "Eliminatorio Simple";
    case TipoTorneo::DOBLE_ELIMINACION:   return "Doble Eliminación";
    }
    return "";
}

QStringList TorneoFactory::tiposDisponibles() {
    return { "Eliminatorio Simple", "Doble Eliminación" };
}

TorneoFactory::TipoTorneo TorneoFactory::tipoDesdeString(const QString& s) {
    if (s == "Doble Eliminación") return TipoTorneo::DOBLE_ELIMINACION;
    return TipoTorneo::ELIMINATORIO_SIMPLE;
}
