mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
FEATURE [filter][actions] integrate user and dates filter into sql
This commit is contained in:
parent
e0758215ba
commit
6bc45bbca3
@ -103,7 +103,8 @@ final class AccompanyingPeriodWorkRepository implements ObjectRepository
|
|||||||
$rsm->addRootEntityFromClassMetadata(AccompanyingPeriodWork::class, 'w');
|
$rsm->addRootEntityFromClassMetadata(AccompanyingPeriodWork::class, 'w');
|
||||||
|
|
||||||
$sql = "SELECT {$rsm} FROM chill_person_accompanying_period_work w
|
$sql = "SELECT {$rsm} FROM chill_person_accompanying_period_work w
|
||||||
WHERE accompanyingPeriod_id = :periodId";
|
LEFT JOIN chill_person_accompanying_period_work_referrer AS rw ON accompanyingperiodwork_id = w.id
|
||||||
|
WHERE accompanyingPeriod_id = :periodId";
|
||||||
|
|
||||||
// implement filters
|
// implement filters
|
||||||
|
|
||||||
@ -112,20 +113,12 @@ final class AccompanyingPeriodWorkRepository implements ObjectRepository
|
|||||||
$sql .= " AND w.socialaction_id IN (:types)";
|
$sql .= " AND w.socialaction_id IN (:types)";
|
||||||
}
|
}
|
||||||
|
|
||||||
if([] !== ($filters['users'] ?? []))
|
if([] !== ($filters['user'] ?? []))
|
||||||
{
|
{
|
||||||
$sql .= " AND w.createdBy = (:userCreated)";
|
$sql .= " AND rw.user_id = :user";
|
||||||
|
|
||||||
$sql .= " OR :userReferrer IN (w.referrers)";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null !== ($after = $filters['after'] ?? null) && null === $filters['before']) {
|
$sql .= " AND daterange(:after::date, :before::date) && daterange(w.startDate, w.endDate)";
|
||||||
$sql .= " AND w.startdate::date >= :after";
|
|
||||||
} elseif (null !== ($before = $filters['before'] ?? null) && null === $filters['after']) {
|
|
||||||
$sql .= " AND COALESCE(w.enddate::date, 'infinity'::date) <= :before";
|
|
||||||
} elseif (null !== ($after = $filters['after'] ?? null) && null !== ($before = $filters['before'] ?? null)) {
|
|
||||||
$sql .= " AND w.startdate::date >= :after AND COALESCE(w.enddate::date, 'now'::date) <= :before";
|
|
||||||
}
|
|
||||||
|
|
||||||
// set limit and offset
|
// set limit and offset
|
||||||
|
|
||||||
@ -137,6 +130,8 @@ final class AccompanyingPeriodWorkRepository implements ObjectRepository
|
|||||||
|
|
||||||
$sql .= " LIMIT :limit OFFSET :offset";
|
$sql .= " LIMIT :limit OFFSET :offset";
|
||||||
|
|
||||||
|
dump($sql);
|
||||||
|
|
||||||
$typeIds = [];
|
$typeIds = [];
|
||||||
foreach ($filters['types'] as $type) {
|
foreach ($filters['types'] as $type) {
|
||||||
$typeIds[] = $type->getId();
|
$typeIds[] = $type->getId();
|
||||||
@ -145,10 +140,9 @@ final class AccompanyingPeriodWorkRepository implements ObjectRepository
|
|||||||
$nq = $this->em->createNativeQuery($sql, $rsm)
|
$nq = $this->em->createNativeQuery($sql, $rsm)
|
||||||
->setParameter('periodId', $period->getId(), Types::INTEGER)
|
->setParameter('periodId', $period->getId(), Types::INTEGER)
|
||||||
->setParameter('types', $typeIds)
|
->setParameter('types', $typeIds)
|
||||||
->setParameter('userCreated', $filters['user'])
|
->setParameter('user', $filters['user'] ? $filters['user']->getId() : null)
|
||||||
->setParameter('userReferrer', $filters['user'])
|
->setParameter('after', ($filters['after'] ?? null))
|
||||||
->setParameter('after', $filters['after'])
|
->setParameter('before', ($filters['before'] ?? null))
|
||||||
->setParameter('before', $filters['before'])
|
|
||||||
->setParameter('limit', $limit, Types::INTEGER)
|
->setParameter('limit', $limit, Types::INTEGER)
|
||||||
->setParameter('offset', $offset, Types::INTEGER);
|
->setParameter('offset', $offset, Types::INTEGER);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user