<?php

namespace Lc\SovBundle\Field\Filter;


use EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto;
use Lc\SovBundle\Repository\RepositoryQueryInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

/**
 * @author La clic ! <contact@laclic.fr>
 */
class TextFilter
{
    use FilterTrait;


    public function buildProperty(FormBuilderInterface $builder, FieldDto $fieldDto, $options = array())
    {
        $builder->add(
            str_replace('.', '_', $fieldDto->getProperty()),
            TextType::class,
            array(
                'required' => false,
                'attr' => array(
                    'class' => ' input-sm',
                    'form' => 'filters-form',
                ),
            )
        );
    }

    public function applyFilter(RepositoryQueryInterface $repositoryQuery, FieldDto $fieldDto, string $filteredValue = null)
    {
        $fieldProperty = $this->getFieldProperty($fieldDto);

        if ($filteredValue !== null) {
//            if ($this->isRelationField($fieldProperty)) {
//
//                $aliasRelation = $this->getFieldPropertyRelationAlias($fieldProperty);
//                if (array_search($aliasRelation, $repositoryQuery->getAllAliases()) === false) {
//                    $repositoryQuery->innerJoin('entity.' . $aliasRelation, $aliasRelation);
//                }
//                $repositoryQuery->andWhere(
//                    $fieldProperty . ' LIKE :' . $this->getFieldPropertySnake($fieldProperty) . ''
//                );
//                $repositoryQuery->setParameter(
//                    $this->getFieldPropertySnake($fieldProperty),
//                    '%' . $filteredValue . '%'
//                );
//            } else {
                $repositoryQuery->andWhere(
                    '.' . $fieldProperty . ' LIKE :' . $fieldProperty . ''
                );
                $repositoryQuery->setParameter($fieldProperty, '%' . $filteredValue . '%');

        }
    }

}
