mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 21:34:25 +00:00
Features: [export] Apply person filters and aggreators on Count Evaluation
This commit is contained in:
parent
91e3588e76
commit
400770123a
@ -15,25 +15,22 @@ use Chill\MainBundle\Export\ExportInterface;
|
|||||||
use Chill\MainBundle\Export\FormatterInterface;
|
use Chill\MainBundle\Export\FormatterInterface;
|
||||||
use Chill\MainBundle\Export\GroupedExportInterface;
|
use Chill\MainBundle\Export\GroupedExportInterface;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriodParticipation;
|
|
||||||
use Chill\PersonBundle\Entity\Person\PersonCenterHistory;
|
use Chill\PersonBundle\Entity\Person\PersonCenterHistory;
|
||||||
use Chill\PersonBundle\Export\Declarations;
|
use Chill\PersonBundle\Export\Declarations;
|
||||||
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
|
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
|
||||||
use Doctrine\ORM\Query;
|
use Doctrine\ORM\Query;
|
||||||
use LogicException;
|
use LogicException;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use function in_array;
|
|
||||||
|
|
||||||
class CountEvaluation implements ExportInterface, GroupedExportInterface
|
class CountEvaluation implements ExportInterface, GroupedExportInterface
|
||||||
{
|
{
|
||||||
private EntityRepository $repository;
|
private EntityManagerInterface $entityManager;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
EntityManagerInterface $em
|
EntityManagerInterface $em
|
||||||
) {
|
) {
|
||||||
$this->repository = $em->getRepository(AccompanyingPeriod::class);
|
$this->entityManager = $em;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder)
|
public function buildForm(FormBuilderInterface $builder)
|
||||||
@ -96,22 +93,19 @@ class CountEvaluation implements ExportInterface, GroupedExportInterface
|
|||||||
return $el['center'];
|
return $el['center'];
|
||||||
}, $acl);
|
}, $acl);
|
||||||
|
|
||||||
$qb = $this->repository->createQueryBuilder('acp');
|
$qb = $this->entityManager->createQueryBuilder();
|
||||||
|
|
||||||
if (!in_array('acpw', $qb->getAllAliases(), true)) {
|
|
||||||
$qb->join('acp.works', 'acpw');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array('workeval', $qb->getAllAliases(), true)) {
|
|
||||||
$qb->join('acpw.accompanyingPeriodWorkEvaluations', 'workeval');
|
|
||||||
}
|
|
||||||
|
|
||||||
$qb
|
$qb
|
||||||
|
->from(AccompanyingPeriod\AccompanyingPeriodWorkEvaluation::class, 'workeval')
|
||||||
|
->join('workeval.accompanyingPeriodWork', 'acpw')
|
||||||
|
->join('acpw.accompanyingPeriod', 'acp')
|
||||||
|
->join('acp.participations', 'acppart')
|
||||||
|
->join('acppart.person', 'person')
|
||||||
|
->andWhere('acppart.startDate != acppart.endDate OR acppart.endDate IS NULL')
|
||||||
->andWhere(
|
->andWhere(
|
||||||
$qb->expr()->exists(
|
$qb->expr()->exists(
|
||||||
'SELECT 1 FROM ' . AccompanyingPeriodParticipation::class . ' acl_count_part
|
'SELECT 1 FROM ' . PersonCenterHistory::class . ' acl_count_person_history WHERE acl_count_person_history.person = person
|
||||||
JOIN ' . PersonCenterHistory::class . ' acl_count_person_history WITH IDENTITY(acl_count_person_history.person) = IDENTITY(acl_count_part.person)
|
AND acl_count_person_history.center IN (:authorized_centers)
|
||||||
WHERE acl_count_part.accompanyingPeriod = acp.id AND acl_count_person_history.center IN (:authorized_centers)
|
|
||||||
'
|
'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -133,6 +127,7 @@ class CountEvaluation implements ExportInterface, GroupedExportInterface
|
|||||||
Declarations::EVAL_TYPE,
|
Declarations::EVAL_TYPE,
|
||||||
Declarations::SOCIAL_WORK_ACTION_TYPE,
|
Declarations::SOCIAL_WORK_ACTION_TYPE,
|
||||||
Declarations::ACP_TYPE,
|
Declarations::ACP_TYPE,
|
||||||
|
Declarations::PERSON_TYPE,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user