<?php

declare(strict_types=1);

namespace vonRotenberg\CoretoolsBundle\Controller\ContentElement;

use Contao\ContentModel;
use Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
use Contao\CoreBundle\DependencyInjection\Attribute\AsContentElement;
use Contao\CoreBundle\Twig\FragmentTemplate;
use Contao\StringUtil;
use Contao\System;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

#[AsContentElement(category: 'texts')]
class DisplayTextController extends AbstractContentElementController
{
    protected function getResponse(FragmentTemplate $template, ContentModel $model, Request $request): Response
    {
        if (System::getContainer()->get('contao.routing.scope_matcher')->isFrontendRequest($request))
        {
            $GLOBALS['TL_CSS'][] = 'bundles/vonrotenbergcoretools/css/display-text.min.css|static';
        }

        $strText = $model->vr_dt_plainText ?: '';

        if (!empty($strText) && !preg_match("/^h[1-3]$/",$model->vr_dt_size))
        {
            $strText = '<div' . (!empty($model->vr_dt_size) ? ' class="text-' . strtolower(StringUtil::prepareSlug($model->vr_dt_size)) . '"' : '') . '>' . $strText . '</div>';
        } else {
            $strText = '<' . strtolower($model->vr_dt_size) . '>' . $strText . '</' . strtolower($model->vr_dt_size) . '>';
        }

        $template->set('text', $strText);
        return $template->getResponse();
    }
}