feat: all-season assignments

This commit is contained in:
Björn Fromme authored and Björn Fromme committed 2026-09-26 12:13:16 +02:00
1 parent 675cec1b69
commit cf876ed224
119 files changed
+6194 -294

No files matched your search

+29 -2
View File
@@ -150,6 +150,13 @@ class TeamerRepository extends ServiceEntityRepository
;
}
if (true === $filterDto->isAllSeason()) {
$qb
->andWhere($qb->expr()->eq('teamer.allSeason', ':allSeason'))
->setParameter('allSeason', true)
;
}
if (false === $filterDto->isIncludeDeleted()) {
$qb->andWhere($qb->expr()->isNull('teamer.deletedAt'));
}
@@ -167,11 +174,15 @@ class TeamerRepository extends ServiceEntityRepository
return $qb;
}
public function getAutocompletionData(string $search): array
/**
* @param bool $allSeasonOnly restricts the suggestions to all-season teamers, so a season
* assignment cannot be created for someone who works short term
*/
private function createAutocompletionQueryBuilder(string $search, bool $allSeasonOnly): QueryBuilder
{
$qb = $this->createQueryBuilder('teamer');
$teamers = $qb
$qb
->where($qb->expr()->orX(
$qb->expr()->like('teamer.lastName', ':search'),
$qb->expr()->like('teamer.firstName', ':search'),
@@ -180,6 +191,22 @@ class TeamerRepository extends ServiceEntityRepository
->orderBy('teamer.lastName', \SortDirection::Ascending)
->addOrderBy('teamer.firstName', \SortDirection::Ascending)
->setParameter('search', '%'.$this->escapeLikeWildcards($search).'%')
;
if (true === $allSeasonOnly) {
$qb
->andWhere($qb->expr()->eq('teamer.allSeason', ':allSeason'))
->setParameter('allSeason', true)
;
}
return $qb;
}
public function getAutocompletionData(string $search, bool $allSeasonOnly = false): array
{
$teamers = $this
->createAutocompletionQueryBuilder($search, $allSeasonOnly)
->getQuery()
->getResult()
;