File: /var/www/dvpis2026/dvpis.kaunokolegija.lt/src/Doctrine/DepartmentFilter.php
<?php
namespace App\Doctrine;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Query\Filter\SQLFilter;
class DepartmentFilter extends SQLFilter
{
private string $column = 'department_id';
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias): string
{
if (!$this->checkEntityValid($targetEntity->getReflectionClass()->name)) {
return '';
}
if ($this->hasParameter('department_id')) {
return sprintf('%s.%s = %s', $targetTableAlias, $this->column, $this->getParameter('department_id'));
}
if ($this->hasParameter('academic_unit_id')) {
// return sprintf('%s.academic_unit_id = %s', $this->alias, $this->getParameter('academic_unit_id'));
return '(
SELECT d.id FROM department d
WHERE d.id = ' . $targetTableAlias . '.' . $this->column . '
AND d.academic_unit_id = ' . $this->getParameter('academic_unit_id') . '
) IS NOT NULL
';
}
return '';
}
private function checkEntityValid($targetEntity)
{
switch ($targetEntity) {
case 'App\Entity\Department':
$this->column = 'id';
return true;
}
return false;
}
}