<?php

declare(strict_types=1);

/*
 * This file is part of contao-weinanlieferung-bundle.
 *
 * (c) vonRotenberg
 *
 * @license commercial
 */

namespace vonRotenberg\WeinanlieferungBundle\EventListener\DataContainer;

use Contao\CoreBundle\DataContainer\PaletteManipulator;
use Contao\CoreBundle\ServiceAnnotation\Callback;
use Contao\DataContainer;
use Doctrine\DBAL\Connection;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Contracts\Translation\TranslatorInterface;
use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungAttributeGroupModel;
use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungAttributeModel;

class WeinanlieferungAttributeContainerListener
{
    /** @var Connection */
    protected $db;

    /** @var TranslatorInterface */
    protected $translator;

    /** @var RequestStack */
    protected $requestStack;

    public function __construct(Connection $db, TranslatorInterface $translator, RequestStack $requestStack)
    {
        $this->db = $db;
        $this->translator = $translator;
        $this->requestStack = $requestStack;
    }


    /**
     * @Callback(table="tl_vr_wa_attribute", target="config.onload")
     */
    public function onLoadCallback(DataContainer $dc)
    {
        if (null === $dc || !$dc->id || 'edit' !== $this->requestStack->getCurrentRequest()->query->get('act')) {
            return;
        }

        if (($attribute = WeinanlieferungAttributeModel::findByPk($dc->id)) === null || ($group = $attribute->getRelated('pid')) === null)
        {
            return;
        }

        if ($group->type == 'text')
        {
            PaletteManipulator::create()
                ->addField('description','title')
                ->applyToPalette('default', 'tl_vr_wa_attribute');
        }
    }
}