Fixed: [export][filter by user's job] take into account the job associated to the user instead of the one associated to the course

This commit is contained in:
Mathieu Jaumotte 2023-02-08 15:59:42 +00:00 committed by Julien Fastré
parent 988495df27
commit 80835dd7c3
4 changed files with 8 additions and 16 deletions

View File

@ -19,7 +19,7 @@ use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use function in_array; use function in_array;
final class JobAggregator implements AggregatorInterface final class UserJobAggregator implements AggregatorInterface
{ {
private UserJobRepository $jobRepository; private UserJobRepository $jobRepository;
@ -40,11 +40,11 @@ final class JobAggregator implements AggregatorInterface
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
if (!in_array('acpjob', $qb->getAllAliases(), true)) { if (!in_array('acpuser', $qb->getAllAliases(), true)) {
$qb->leftJoin('acp.job', 'acpjob'); $qb->leftJoin('acp.user', 'acpuser');
} }
$qb->addSelect('IDENTITY(acp.job) AS job_aggregator'); $qb->addSelect('IDENTITY(acpuser.userJob) AS job_aggregator');
$qb->addGroupBy('job_aggregator'); $qb->addGroupBy('job_aggregator');
} }

View File

@ -126,12 +126,4 @@ class UserJobFilter implements FilterInterface
{ {
return 'Filter by user job'; return 'Filter by user job';
} }
private function getUserJob(): UserJob
{
/** @var User $user */
$user = $this->security->getUser();
return $user->getUserJob();
}
} }

View File

@ -13,16 +13,16 @@ namespace Chill\PersonBundle\Tests\Export\Aggregator\AccompanyingCourseAggregato
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\JobAggregator; use Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\UserJobAggregator;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
/** /**
* @internal * @internal
* @coversNothing * @coversNothing
*/ */
final class JobAggregatorTest extends AbstractAggregatorTest final class UserJobAggregatorTest extends AbstractAggregatorTest
{ {
private JobAggregator $aggregator; private UserJobAggregator $aggregator;
protected function setUp(): void protected function setUp(): void
{ {

View File

@ -136,7 +136,7 @@ services:
- { name: chill.export_aggregator, alias: accompanyingcourse_scope_aggregator } - { name: chill.export_aggregator, alias: accompanyingcourse_scope_aggregator }
chill.person.export.aggregator_referrer_job: chill.person.export.aggregator_referrer_job:
class: Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\JobAggregator class: Chill\PersonBundle\Export\Aggregator\AccompanyingCourseAggregators\UserJobAggregator
tags: tags:
- { name: chill.export_aggregator, alias: accompanyingcourse_referrer_job_aggregator } - { name: chill.export_aggregator, alias: accompanyingcourse_referrer_job_aggregator }