protected function filterProperty(string $property, $values, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null)
{
// Expect $values to be an array having the period as keys and the date value as values
if (!is_array($values) || !$this->isPropertyEnabled($property) || !$this->isPropertyMapped($property, $resourceClass) || !$this->isDateField($property, $resourceClass)) {
return;
}
$alias = 'o';
$field = $property;
if ($this->isPropertyNested($property)) {
list($alias, $field) = $this->addJoinsForNestedProperty($property, $alias, $queryBuilder, $queryNameGenerator);
}
$nullManagement = $this->properties[$property] ?? null;
if (self::EXCLUDE_NULL === $nullManagement) {
$queryBuilder->andWhere($queryBuilder->expr()->isNotNull(sprintf('%s.%s', $alias, $field)));
}
if (isset($values[self::PARAMETER_BEFORE])) {
$this->addWhere($queryBuilder, $queryNameGenerator, $alias, $field, self::PARAMETER_BEFORE, $values[self::PARAMETER_BEFORE], $nullManagement);
}
if (isset($values[self::PARAMETER_AFTER])) {
$this->addWhere($queryBuilder, $queryNameGenerator, $alias, $field, self::PARAMETER_AFTER, $values[self::PARAMETER_AFTER], $nullManagement);
}
}