<?php

declare(strict_types=1);

namespace ROITheme\Admin\Application\UseCases;

use ROITheme\Admin\Domain\Contracts\DashboardRendererInterface;

/**
 * Caso de uso para renderizar el dashboard del panel de administración
 *
 * Application - Orquestación sin lógica de negocio ni WordPress
 */
final class RenderDashboardUseCase
{
    /**
     * @param DashboardRendererInterface $renderer Renderizador del dashboard
     */
    public function __construct(
        private readonly DashboardRendererInterface $renderer
    ) {
    }

    /**
     * Ejecuta el caso de uso
     *
     * @param string $viewType Tipo de vista a renderizar
     * @return string HTML renderizado
     * @throws \RuntimeException Si el renderer no soporta el tipo de vista
     */
    public function execute(string $viewType = 'dashboard'): string
    {
        if (!$this->renderer->supports($viewType)) {
            throw new \RuntimeException(
                sprintf('Renderer does not support view type: %s', $viewType)
            );
        }

        return $this->renderer->render();
    }
}
