Skip to content

Commit 96f03cb

Browse files
committed
Fixed confirmed filter on admin page, when less than 2 confirmations are required
1 parent 4999e33 commit 96f03cb

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/Admin/Filter/ConfirmedFilter.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
namespace App\Admin\Filter;
2020

21+
use Doctrine\ORM\Query\Expr;
2122
use Doctrine\ORM\QueryBuilder;
2223
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Filter\FilterInterface;
2324
use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
@@ -45,12 +46,22 @@ public function apply(QueryBuilder $queryBuilder, FilterDataDto $filterDataDto,
4546
$comparison = 'IS NULL';
4647
$queryBuilder
4748
->andWhere(sprintf('%s.%s %s', $filterDataDto->getEntityAlias(), 'confirmation1.timestamp', $comparison))
48-
->orWhere(sprintf('%s.%s %s', $filterDataDto->getEntityAlias(), 'confirmation2.timestamp', $comparison));
49+
->orWhere(
50+
$queryBuilder->expr()->andX(
51+
sprintf('%s.%s %s', $filterDataDto->getEntityAlias(), 'confirmation2.timestamp', $comparison),
52+
sprintf('%s.%s > 1', $filterDataDto->getEntityAlias(), 'requiredConfirmations')
53+
)
54+
);
4955
} else {
5056
$comparison = 'IS NOT NULL';
5157
$queryBuilder
5258
->andWhere(sprintf('%s.%s %s', $filterDataDto->getEntityAlias(), 'confirmation1.timestamp', $comparison))
53-
->andWhere(sprintf('%s.%s %s', $filterDataDto->getEntityAlias(), 'confirmation2.timestamp', $comparison));
59+
->andWhere(
60+
$queryBuilder->expr()->orX(
61+
sprintf('%s.%s %s', $filterDataDto->getEntityAlias(), 'confirmation2.timestamp', $comparison),
62+
//The second confirmation is not required, if only one confirmation is required
63+
sprintf('%s.%s < 2', $filterDataDto->getEntityAlias(), 'requiredConfirmations')
64+
));
5465
}
5566
}
5667
}

0 commit comments

Comments
 (0)