fix conflict with where clause in indicator ; initiate a filter test

This commit is contained in:
Mathieu Jaumotte 2022-07-20 23:17:05 +02:00
parent 0d38d4df40
commit d5d3866122
5 changed files with 71 additions and 11 deletions

View File

@ -93,9 +93,6 @@ class CountAccompanyingCourse implements ExportInterface, GroupedExportInterface
$qb->select('COUNT(acp.id) AS export_result') $qb->select('COUNT(acp.id) AS export_result')
->from('ChillPersonBundle:AccompanyingPeriod', 'acp') ->from('ChillPersonBundle:AccompanyingPeriod', 'acp')
->where($expr->neq(
'acp.step', $expr->literal('DRAFT')
))
; ;
return $qb; return $qb;

View File

@ -131,9 +131,6 @@ class StatAccompanyingCourseDuration implements ExportInterface, GroupedExportIn
ELSE :force_closingDate ELSE :force_closingDate
END ) - acp.openingDate END ) - acp.openingDate
) AS export_result') ) AS export_result')
->where($expr->neq(
'acp.step', $expr->literal('DRAFT')
))
->setParameter('force_closingDate', $force_closingdate) ->setParameter('force_closingDate', $force_closingdate)
; ;

View File

@ -82,10 +82,10 @@ class SocialIssueFilter implements FilterInterface
public function alterQuery(QueryBuilder $qb, $data) public function alterQuery(QueryBuilder $qb, $data)
{ {
$qb->join('acp.socialIssues', 's'); $qb->join('acp.socialIssues', 'si');
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
$clause = $qb->expr()->in('s.id', ':socialissues'); $clause = $qb->expr()->in('si.id', ':socialissues');
if ($where instanceof Andx) { if ($where instanceof Andx) {
$where->add($clause); $where->add($clause);
@ -128,7 +128,7 @@ class SocialIssueFilter implements FilterInterface
return $item->getId(); return $item->getId();
}, $array); }, $array);
$unique_ids = array_unique($ids); dump($unique_ids); $unique_ids = array_unique($ids);
return array_values( return array_values(
array_intersect_key($array, $unique_ids)); array_intersect_key($array, $unique_ids));

View File

@ -70,8 +70,11 @@ class StepFilter implements FilterInterface
$where = $qb->getDQLPart('where'); $where = $qb->getDQLPart('where');
$clause = $qb->expr()->eq('acp.step', ':step'); $clause = $qb->expr()->eq('acp.step', ':step');
// override original where clause if ($where instanceof Andx) {
$where = $qb->expr()->andX($clause); $where->add($clause);
} else {
$where = $qb->expr()->andX($clause);
}
$qb->add('where', $where); $qb->add('where', $where);
$qb->setParameter('step', $data['accepted_step']); $qb->setParameter('step', $data['accepted_step']);

View File

@ -0,0 +1,63 @@
<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\PersonBundle\Tests\Export\Filter;
use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
final class SocialIssueFilterTest extends AbstractFilterTest
{
/**
* @var \Chill\PersonBundle\Export\Filter\GenderFilter
*/
private $filter;
protected function setUp(): void
{
parent::setUp();
self::bootKernel();
try {
$this->filter = self::$container->get('chill.person.export.filter_socialissue');
} catch (ServiceNotFoundException $e) {
$this->markTestSkipped('Filter service is not found');
}
}
public function getFilter()
{
return $this->filter;
}
public function getFormData()
{
return [
['accepted_socialissue' => [
]],
['accepted_socialissue' => [
]],
['accepted_socialissue' => [
]],
];
}
public function getQueryBuilders()
{
// TODO: Implement getQueryBuilders() method.
}
}