Feat: Add assignment filtering for teamers

This commit is contained in:
Björn Fromme
2023-10-23 15:45:41 +02:00
parent dcf0d9af20
commit ae81c97d12
7 changed files with 88 additions and 56 deletions
+28 -19
View File
@@ -10,6 +10,7 @@ use App\Model\AssignmentFilterDto;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\QueryBuilder;
use Doctrine\Persistence\ManagerRegistry;
/**
@@ -39,8 +40,34 @@ class AssignmentRepository extends ServiceEntityRepository
->leftJoin('assignment.applications', 'application', Join::WITH, $qb->expr()->neq('application.status', ':status'))
->leftJoin('assignment.dispositions', 'disposition')
->setParameter('status', Application::STATUS_REJECTED)
;
;
$this->applyFilterSettings($filterDto, $qb);
return $qb->getQuery();
}
public function getListQueryForTeamer(Teamer $teamer, AssignmentFilterDto $filterDto): Query
{
$qb = $this->createQueryBuilder('assignment');
$qb
->select('assignment', 'destination', 'job_profile', 'application', 'disposition')
->innerJoin('assignment.destination', 'destination')
->innerJoin('assignment.jobProfile', 'job_profile')
->where($qb->expr()->isNull('assignment.deletedAt'))
->leftJoin('assignment.applications', 'application', Join::WITH, $qb->expr()->eq('application.teamer', ':teamer'))
->leftJoin('assignment.dispositions', 'disposition', Join::WITH, $qb->expr()->eq('disposition.teamer', ':teamer'))
->setParameter('teamer', $teamer)
;
$this->applyFilterSettings($filterDto, $qb);
return $qb->getQuery();
}
private function applyFilterSettings(AssignmentFilterDto $filterDto, QueryBuilder $qb): void
{
if (null !== $dateFrom = $filterDto->getDateFrom()) {
$qb
->andWhere($qb->expr()->gte('destination.dateFrom', ':dateFrom'))
@@ -91,24 +118,6 @@ class AssignmentRepository extends ServiceEntityRepository
;
}
}
return $qb->getQuery();
}
public function getListQueryForTeamer(Teamer $teamer = null): Query
{
$qb = $this->createQueryBuilder('assignment');
return $qb
->select('assignment', 'destination', 'job_profile', 'application', 'disposition')
->innerJoin('assignment.destination', 'destination')
->innerJoin('assignment.jobProfile', 'job_profile')
->where($qb->expr()->isNull('assignment.deletedAt'))
->leftJoin('assignment.applications', 'application', Join::WITH, $qb->expr()->eq('application.teamer', ':teamer'))
->leftJoin('assignment.dispositions', 'disposition', Join::WITH, $qb->expr()->eq('disposition.teamer', ':teamer'))
->setParameter('teamer', $teamer)
->getQuery()
;
}
public function getBookmarkQueryForTeamer(Teamer $teamer): Query