<?php

declare(strict_types=1);

namespace App\Controller\FrontendModule;

use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
use Contao\CoreBundle\Image\Studio\Studio;
use Contao\ModuleModel;
use Contao\StringUtil;
use Contao\System;
use Contao\Template;
use Doctrine\DBAL\Connection;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

#[AsFrontendModule(category: "miscellaneous")]
class TeamListController extends AbstractFrontendModuleController
{
    /**
     * @var Connection
     */
    protected $db;

    public function __invoke(Request $request, ModuleModel $model, string $section, array $classes = null): Response
    {
        $this->db = System::getContainer()->get('database_connection');
        return parent::__invoke($request, $model, $section, $classes); // TODO: Change the autogenerated stub
    }

    protected function getResponse(Template $template, ModuleModel $model, Request $request): Response
    {
        $Team = $this->db->executeQuery(
            "SELECT * FROM tl_eSM_team WHERE division IN (:division) AND pid = :group AND published = '1' ORDER BY division, lastname",
            [
                'division' => StringUtil::deserialize($model->eSM_team_divisions),
                'group' => $model->eSM_team_group
            ],
            ['division' => Connection::PARAM_STR_ARRAY]
        );

        if ($Team->rowCount())
        {
            $arrTeam = [];
            $figureBuilder = System::getContainer()
                ->get(Studio::class)
                ->createFigureBuilder()
                ->enableLightbox();

            foreach ($Team->fetchAllAssociative() as $member)
            {
                $arrTeam[] = array_merge($member,[
                    'imageFigure' => $figureBuilder->fromUuid($member['singleSRC'])->setSize($model->imgSize)->build()
                ]);
            }

            shuffle($arrTeam);

            $template->teammembers = $arrTeam;

            $GLOBALS['TL_CSS']['swiper'] = 'bundles/esalesmediacontaoswiper/css/swiper-custom.css';
            $GLOBALS['TL_JAVASCRIPT']['swiper'] = 'bundles/esalesmediacontaoswiper/js/lib/swiper/6.5.0/swiper-bundle.min.js'; // load swiper
        }

        return $template->getResponse();
    }
}
