Merge branch '140-re-associate-modifier-export-activities' into 'master'

Fix loading and association of some filters

Closes #142 and #140

See merge request Chill-Projet/chill-bundles!589
This commit is contained in:
Julien Fastré 2023-09-26 15:59:42 +00:00
commit 5dde58e175
41 changed files with 205 additions and 115 deletions

View File

@ -0,0 +1,5 @@
kind: Fixed
body: Fix the label of filter ActivityTypeFilter to a more obvious one
time: 2023-09-13T11:59:54.948009297+02:00
custom:
Issue: "142"

View File

@ -0,0 +1,6 @@
kind: Fixed
body: '[export] Fix association of filter "filter location by type" which did not
appears on "list of activities"'
time: 2023-09-26T17:58:15.871908118+02:00
custom:
Issue: "140"

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface; use Chill\MainBundle\Export\AggregatorInterface;
@ -45,7 +45,7 @@ class ByCreatorAggregator implements AggregatorInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface; use Chill\MainBundle\Export\AggregatorInterface;
@ -50,7 +50,7 @@ class ByThirdpartyAggregator implements AggregatorInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface; use Chill\MainBundle\Export\AggregatorInterface;
@ -50,7 +50,7 @@ class CreatorScopeAggregator implements AggregatorInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface; use Chill\MainBundle\Export\AggregatorInterface;
@ -66,7 +66,7 @@ class DateAggregator implements AggregatorInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Export\Aggregator;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\AggregatorInterface; use Chill\MainBundle\Export\AggregatorInterface;
@ -50,7 +50,7 @@ class LocationTypeAggregator implements AggregatorInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -12,6 +12,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Export\Export\LinkedToACP; namespace Chill\ActivityBundle\Export\Export\LinkedToACP;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations;
use Chill\ActivityBundle\Export\Export\ListActivityHelper; use Chill\ActivityBundle\Export\Export\ListActivityHelper;
use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter; use Chill\ActivityBundle\Security\Authorization\ActivityStatsVoter;
use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\Scope;
@ -160,6 +161,7 @@ class ListActivity implements ListInterface, GroupedExportInterface
return array_merge( return array_merge(
$this->helper->supportsModifiers(), $this->helper->supportsModifiers(),
[ [
Declarations::ACTIVITY,
\Chill\PersonBundle\Export\Declarations::ACP_TYPE, \Chill\PersonBundle\Export\Declarations::ACP_TYPE,
] ]
); );

View File

@ -299,7 +299,7 @@ class ListActivity implements ListInterface, GroupedExportInterface
return [ return [
Declarations::ACTIVITY, Declarations::ACTIVITY,
Declarations::ACTIVITY_PERSON, Declarations::ACTIVITY_PERSON,
//PersonDeclarations::PERSON_TYPE, PersonDeclarations::PERSON_TYPE,
]; ];
} }
} }

View File

@ -155,7 +155,7 @@ class StatActivityDuration implements ExportInterface, GroupedExportInterface
return [ return [
Declarations::ACTIVITY, Declarations::ACTIVITY,
Declarations::ACTIVITY_PERSON, Declarations::ACTIVITY_PERSON,
//PersonDeclarations::PERSON_TYPE, PersonDeclarations::PERSON_TYPE,
]; ];
} }
} }

View File

@ -21,19 +21,15 @@ use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
/**
* Filter accompanying period to keep only the one having at list one activity from the given ActivityType.
*/
class ActivityTypeFilter implements FilterInterface class ActivityTypeFilter implements FilterInterface
{ {
private ActivityTypeRepositoryInterface $activityTypeRepository;
private TranslatableStringHelperInterface $translatableStringHelper;
public function __construct( public function __construct(
ActivityTypeRepositoryInterface $activityTypeRepository, private readonly ActivityTypeRepositoryInterface $activityTypeRepository,
TranslatableStringHelperInterface $translatableStringHelper private readonly TranslatableStringHelperInterface $translatableStringHelper
) { ) {}
$this->activityTypeRepository = $activityTypeRepository;
$this->translatableStringHelper = $translatableStringHelper;
}
public function addRole(): ?string public function addRole(): ?string
{ {
@ -81,7 +77,7 @@ class ActivityTypeFilter implements FilterInterface
$types[] = $this->translatableStringHelper->localize($aty->getName()); $types[] = $this->translatableStringHelper->localize($aty->getName());
} }
return ['Filtered by activity types: only %activitytypes%', [ return ['export.filter.activity.acp_by_activity_type.acp_containing_at_least_one_%activitytypes%', [
'%activitytypes%' => implode(', ', $types), '%activitytypes%' => implode(', ', $types),
]]; ]];
} }

View File

@ -17,6 +17,9 @@ use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
/**
* Filter accompanying periods to keep only the one without any activity
*/
class HasNoActivityFilter implements FilterInterface class HasNoActivityFilter implements FilterInterface
{ {
public function addRole(): ?string public function addRole(): ?string

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
@ -43,7 +43,7 @@ class ByCreatorFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
@ -58,7 +58,7 @@ class EmergencyFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
@ -36,7 +36,7 @@ class LocationFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
@ -55,7 +55,7 @@ class LocationTypeFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
@ -59,7 +59,7 @@ class SentReceivedFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Export\FilterInterface; use Chill\MainBundle\Export\FilterInterface;
@ -51,7 +51,7 @@ class UserFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -9,7 +9,7 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Export\Filter;
use Chill\ActivityBundle\Export\Declarations; use Chill\ActivityBundle\Export\Declarations;
use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\Scope;
@ -57,7 +57,7 @@ class UserScopeFilter implements FilterInterface
public function applyOn(): string public function applyOn(): string
{ {
return Declarations::ACTIVITY_ACP; return Declarations::ACTIVITY;
} }
public function buildForm(FormBuilderInterface $builder) public function buildForm(FormBuilderInterface $builder)

View File

@ -12,7 +12,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\BySocialActionAggregator; use Chill\ActivityBundle\Export\Aggregator\BySocialActionAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;

View File

@ -12,7 +12,7 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\BySocialIssueAggregator; use Chill\ActivityBundle\Export\Aggregator\BySocialIssueAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\ByThirdpartyAggregator; use Chill\ActivityBundle\Export\Aggregator\ByThirdpartyAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -28,7 +28,7 @@ final class ByThirdpartyAggregatorTest extends AbstractAggregatorTest
{ {
self::bootKernel(); self::bootKernel();
$this->aggregator = self::$container->get('chill.activity.export.bythirdparty_aggregator'); $this->aggregator = self::$container->get(ByThirdpartyAggregator::class);
} }
public function getAggregator() public function getAggregator()

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\ByCreatorAggregator; use Chill\ActivityBundle\Export\Aggregator\ByCreatorAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\CreatorScopeAggregator; use Chill\ActivityBundle\Export\Aggregator\CreatorScopeAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -20,7 +20,7 @@ use Doctrine\ORM\EntityManagerInterface;
* @internal * @internal
* @coversNothing * @coversNothing
*/ */
final class UserScopeAggregatorTest extends AbstractAggregatorTest final class CreatorScopeAggregatorTest extends AbstractAggregatorTest
{ {
private CreatorScopeAggregator $aggregator; private CreatorScopeAggregator $aggregator;

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\DateAggregator; use Chill\ActivityBundle\Export\Aggregator\DateAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -28,7 +28,7 @@ final class DateAggregatorTest extends AbstractAggregatorTest
{ {
self::bootKernel(); self::bootKernel();
$this->aggregator = self::$container->get('chill.activity.export.date_aggregator'); $this->aggregator = self::$container->get(DateAggregator::class);
} }
public function getAggregator() public function getAggregator()

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Aggregator\ACPAggregators; namespace Chill\ActivityBundle\Tests\Export\Aggregator;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Aggregator\ACPAggregators\LocationTypeAggregator; use Chill\ActivityBundle\Export\Aggregator\LocationTypeAggregator;
use Chill\MainBundle\Test\Export\AbstractAggregatorTest; use Chill\MainBundle\Test\Export\AbstractAggregatorTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -28,7 +28,7 @@ final class LocationTypeAggregatorTest extends AbstractAggregatorTest
{ {
self::bootKernel(); self::bootKernel();
$this->aggregator = self::$container->get('chill.activity.export.locationtype_aggregator'); $this->aggregator = self::$container->get(LocationTypeAggregator::class);
} }
public function getAggregator() public function getAggregator()

View File

@ -13,9 +13,10 @@ namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Entity\ActivityType; use Chill\ActivityBundle\Entity\ActivityType;
use Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter; use Chill\ActivityBundle\Export\Filter\ActivityTypeFilter;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query\Expr; use Doctrine\ORM\Query\Expr;
@ -25,13 +26,13 @@ use Doctrine\ORM\Query\Expr;
*/ */
final class ActivityTypeFilterTest extends AbstractFilterTest final class ActivityTypeFilterTest extends AbstractFilterTest
{ {
private ActivityTypeFilter $filter; private \Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter $filter;
protected function setUp(): void protected function setUp(): void
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.filter_activitytype'); $this->filter = self::$container->get(\Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter::class);
} }
public function getFilter() public function getFilter()
@ -47,13 +48,14 @@ final class ActivityTypeFilterTest extends AbstractFilterTest
->from(ActivityType::class, 'at') ->from(ActivityType::class, 'at')
->select('at') ->select('at')
->getQuery() ->getQuery()
->setMaxResults(1)
->getResult(); ->getResult();
$data = []; $data = [];
foreach ($array as $a) { foreach ($array as $a) {
$data[] = [ $data[] = [
'accepted_activitytypes' => $a, 'accepted_activitytypes' => new ArrayCollection([$a]),
]; ];
} }

View File

@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Chill\PersonBundle\Entity\SocialWork\SocialAction; use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
/** /**
@ -23,13 +23,13 @@ use Doctrine\ORM\EntityManagerInterface;
*/ */
final class BySocialActionFilterTest extends AbstractFilterTest final class BySocialActionFilterTest extends AbstractFilterTest
{ {
private BySocialActionFilter $filter; private \Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter $filter;
protected function setUp(): void protected function setUp(): void
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.bysocialaction_filter'); $this->filter = self::$container->get(\Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter::class);
} }
public function getFilter() public function getFilter()
@ -39,19 +39,22 @@ final class BySocialActionFilterTest extends AbstractFilterTest
public function getFormData(): array public function getFormData(): array
{ {
self::bootKernel();
$em = self::$container->get(EntityManagerInterface::class); $em = self::$container->get(EntityManagerInterface::class);
$array = $em->createQueryBuilder() $array = $em->createQueryBuilder()
->from(SocialAction::class, 'sa') ->from(SocialAction::class, 'sa')
->select('sa') ->select('sa')
->getQuery() ->getQuery()
->setMaxResults(1)
->getResult(); ->getResult();
$data = []; $data = [];
foreach ($array as $a) { foreach ($array as $a) {
$data[] = [ $data[] = [
'accepted_socialactions' => $a, 'accepted_socialactions' => new ArrayCollection([$a]),
]; ];
} }
@ -60,9 +63,7 @@ final class BySocialActionFilterTest extends AbstractFilterTest
public function getQueryBuilders(): array public function getQueryBuilders(): array
{ {
if (null === self::$kernel) { self::bootKernel();
self::bootKernel();
}
$em = self::$container->get(EntityManagerInterface::class); $em = self::$container->get(EntityManagerInterface::class);

View File

@ -15,6 +15,7 @@ use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialIssueFilter; use Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialIssueFilter;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Chill\PersonBundle\Entity\SocialWork\SocialIssue; use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
/** /**
@ -29,7 +30,7 @@ final class BySocialIssueFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.bysocialissue_filter'); $this->filter = self::$container->get(BySocialIssueFilter::class);
} }
public function getFilter() public function getFilter()
@ -39,19 +40,21 @@ final class BySocialIssueFilterTest extends AbstractFilterTest
public function getFormData(): array public function getFormData(): array
{ {
self::bootKernel();
$em = self::$container->get(EntityManagerInterface::class); $em = self::$container->get(EntityManagerInterface::class);
$array = $em->createQueryBuilder() $array = $em->createQueryBuilder()
->from(SocialIssue::class, 'si') ->from(SocialIssue::class, 'si')
->select('si') ->select('si')
->getQuery() ->getQuery()
->setMaxResults(2)
->getResult(); ->getResult();
$data = []; $data = [];
foreach ($array as $a) { foreach ($array as $a) {
$data[] = [ $data[] = [
'accepted_socialissues' => $a, 'accepted_socialissues' => new ArrayCollection([$a]),
]; ];
} }

View File

@ -9,10 +9,15 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
<<<<<<<< HEAD:src/Bundle/ChillActivityBundle/Tests/Export/Filter/ACPFilters/ByUserFilterTest.php
use Chill\ActivityBundle\Export\Filter\ACPFilters\ByCreatorFilter; use Chill\ActivityBundle\Export\Filter\ACPFilters\ByCreatorFilter;
========
use Chill\ActivityBundle\Export\Filter\ByCreatorFilter;
use Chill\ActivityBundle\Export\Filter\UserFilter;
>>>>>>>> 1f4d912d8 (Re-associate activity exports and filters):src/Bundle/ChillActivityBundle/Tests/Export/Filter/ByCreatorFilterTest.php
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;

View File

@ -29,7 +29,7 @@ final class ActivityDateFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.date_filter'); $this->filter = self::$container->get(ActivityDateFilter::class);
} }
public function getFilter() public function getFilter()

View File

@ -0,0 +1,76 @@
<?php
declare(strict_types=1);
/*
* 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.
*/
namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ByCreatorFilter;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface;
/**
* @internal
* @coversNothing
*/
final class ByUserFilterTest extends AbstractFilterTest
{
private ByCreatorFilter $filter;
protected function setUp(): void
{
self::bootKernel();
$this->filter = self::$container->get(ByCreatorFilter::class);
}
public function getFilter()
{
return $this->filter;
}
public function getFormData(): array
{
$em = self::$container->get(EntityManagerInterface::class);
$array = $em->createQueryBuilder()
->from(User::class, 'u')
->select('u')
->getQuery()
->getResult();
$data = [];
foreach ($array as $a) {
$data[] = [
'accepted_users' => $a,
];
}
return $data;
}
public function getQueryBuilders(): array
{
if (null === self::$kernel) {
self::bootKernel();
}
$em = self::$container->get(EntityManagerInterface::class);
return [
$em->createQueryBuilder()
->select('count(activity.id)')
->from(Activity::class, 'activity')
->join('activity.users', 'actusers'),
];
}
}

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\EmergencyFilter; use Chill\ActivityBundle\Export\Filter\EmergencyFilter;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -28,7 +28,7 @@ final class EmergencyFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.emergency_filter'); $this->filter = self::$container->get(EmergencyFilter::class);
} }
public function getFilter() public function getFilter()

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\LocationTypeFilter; use Chill\ActivityBundle\Export\Filter\LocationTypeFilter;
use Chill\MainBundle\Entity\LocationType; use Chill\MainBundle\Entity\LocationType;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -29,7 +29,7 @@ final class LocationTypeFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.locationtype_filter'); $this->filter = self::$container->get(LocationTypeFilter::class);
} }
public function getFilter() public function getFilter()

View File

@ -54,7 +54,7 @@ final class PersonHavingActivityBetweenDateFilterTest extends AbstractFilterTest
$data[] = [ $data[] = [
'date_from' => DateTime::createFromFormat('Y-m-d', '2021-07-01'), 'date_from' => DateTime::createFromFormat('Y-m-d', '2021-07-01'),
'date_to' => DateTime::createFromFormat('Y-m-d', '2022-07-01'), 'date_to' => DateTime::createFromFormat('Y-m-d', '2022-07-01'),
'reasons' => $a, 'reasons' => [$a],
]; ];
} }
@ -72,7 +72,9 @@ final class PersonHavingActivityBetweenDateFilterTest extends AbstractFilterTest
return [ return [
$em->createQueryBuilder() $em->createQueryBuilder()
->select('count(activity.id)') ->select('count(activity.id)')
->from(Activity::class, 'activity'), ->from(Activity::class, 'activity')
->join('activity.person', 'person')
,
]; ];
} }
} }

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\SentReceivedFilter; use Chill\ActivityBundle\Export\Filter\SentReceivedFilter;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -28,7 +28,7 @@ final class SentReceivedFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.sentreceived_filter'); $this->filter = self::$container->get(SentReceivedFilter::class);
} }
public function getFilter() public function getFilter()

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\UserFilter; use Chill\ActivityBundle\Export\Filter\UserFilter;
use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -29,7 +29,7 @@ final class UserFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.user_filter'); $this->filter = self::$container->get(UserFilter::class);
} }
public function getFilter() public function getFilter()

View File

@ -9,10 +9,10 @@ declare(strict_types=1);
* the LICENSE file that was distributed with this source code. * the LICENSE file that was distributed with this source code.
*/ */
namespace Chill\ActivityBundle\Tests\Export\Filter\ACPFilters; namespace Chill\ActivityBundle\Tests\Export\Filter;
use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\Activity;
use Chill\ActivityBundle\Export\Filter\ACPFilters\UserScopeFilter; use Chill\ActivityBundle\Export\Filter\UserScopeFilter;
use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\Scope;
use Chill\MainBundle\Test\Export\AbstractFilterTest; use Chill\MainBundle\Test\Export\AbstractFilterTest;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -29,7 +29,7 @@ final class UserScopeFilterTest extends AbstractFilterTest
{ {
self::bootKernel(); self::bootKernel();
$this->filter = self::$container->get('chill.activity.export.userscope_filter'); $this->filter = self::$container->get(UserScopeFilter::class);
} }
public function getFilter() public function getFilter()

View File

@ -53,8 +53,7 @@ services:
tags: tags:
- { name: chill.export_filter, alias: 'activity_type_filter' } - { name: chill.export_filter, alias: 'activity_type_filter' }
chill.activity.export.date_filter: Chill\ActivityBundle\Export\Filter\ActivityDateFilter:
class: Chill\ActivityBundle\Export\Filter\ActivityDateFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_date_filter' } - { name: chill.export_filter, alias: 'activity_date_filter' }
@ -74,52 +73,43 @@ services:
name: chill.export_filter name: chill.export_filter
alias: 'activity_person_having_ac_bw_date_filter' alias: 'activity_person_having_ac_bw_date_filter'
chill.activity.export.filter_activitytype: Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\ActivityTypeFilter
tags: tags:
- { name: chill.export_filter, alias: 'accompanyingcourse_activitytype_filter' } - { name: chill.export_filter, alias: 'accompanyingcourse_activitytype_filter' }
chill.activity.export.location_filter: Chill\ActivityBundle\Export\Filter\LocationFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\LocationFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_location_filter' } - { name: chill.export_filter, alias: 'activity_location_filter' }
chill.activity.export.locationtype_filter: Chill\ActivityBundle\Export\Filter\LocationTypeFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\LocationTypeFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_locationtype_filter' } - { name: chill.export_filter, alias: 'activity_locationtype_filter' }
Chill\ActivityBundle\Export\Filter\ACPFilters\ByCreatorFilter: Chill\ActivityBundle\Export\Filter\ByCreatorFilter:
tags: tags:
- { name: chill.export_filter, alias: 'activity_bycreator_filter' } - { name: chill.export_filter, alias: 'activity_bycreator_filter' }
chill.activity.export.emergency_filter: Chill\ActivityBundle\Export\Filter\EmergencyFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\EmergencyFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_emergency_filter' } - { name: chill.export_filter, alias: 'activity_emergency_filter' }
chill.activity.export.sentreceived_filter: Chill\ActivityBundle\Export\Filter\SentReceivedFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\SentReceivedFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_sentreceived_filter' } - { name: chill.export_filter, alias: 'activity_sentreceived_filter' }
chill.activity.export.bysocialaction_filter: Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialActionFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_bysocialaction_filter' } - { name: chill.export_filter, alias: 'activity_bysocialaction_filter' }
chill.activity.export.bysocialissue_filter: Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialIssueFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\BySocialIssueFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_bysocialissue_filter' } - { name: chill.export_filter, alias: 'activity_bysocialissue_filter' }
chill.activity.export.user_filter: # Creator (M2O) Chill\ActivityBundle\Export\Filter\UserFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\UserFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_user_filter' } - { name: chill.export_filter, alias: 'activity_user_filter' }
chill.activity.export.userscope_filter: Chill\ActivityBundle\Export\Filter\UserScopeFilter:
class: Chill\ActivityBundle\Export\Filter\ACPFilters\UserScopeFilter
tags: tags:
- { name: chill.export_filter, alias: 'activity_userscope_filter' } - { name: chill.export_filter, alias: 'activity_userscope_filter' }
@ -157,22 +147,19 @@ services:
tags: tags:
- { name: chill.export_aggregator, alias: activity_user_aggregator } - { name: chill.export_aggregator, alias: activity_user_aggregator }
chill.activity.export.locationtype_aggregator: Chill\ActivityBundle\Export\Aggregator\LocationTypeAggregator:
class: Chill\ActivityBundle\Export\Aggregator\ACPAggregators\LocationTypeAggregator
tags: tags:
- { name: chill.export_aggregator, alias: activity_locationtype_aggregator } - { name: chill.export_aggregator, alias: activity_locationtype_aggregator }
chill.activity.export.date_aggregator: Chill\ActivityBundle\Export\Aggregator\DateAggregator:
class: Chill\ActivityBundle\Export\Aggregator\ACPAggregators\DateAggregator
tags: tags:
- { name: chill.export_aggregator, alias: activity_date_aggregator } - { name: chill.export_aggregator, alias: activity_date_aggregator }
Chill\ActivityBundle\Export\Aggregator\ACPAggregators\ByCreatorAggregator: Chill\ActivityBundle\Export\Aggregator\ByCreatorAggregator:
tags: tags:
- { name: chill.export_aggregator, alias: activity_by_creator_aggregator } - { name: chill.export_aggregator, alias: activity_by_creator_aggregator }
chill.activity.export.bythirdparty_aggregator: Chill\ActivityBundle\Export\Aggregator\ByThirdpartyAggregator:
class: Chill\ActivityBundle\Export\Aggregator\ACPAggregators\ByThirdpartyAggregator
tags: tags:
- { name: chill.export_aggregator, alias: activity_bythirdparty_aggregator } - { name: chill.export_aggregator, alias: activity_bythirdparty_aggregator }
@ -186,7 +173,7 @@ services:
tags: tags:
- { name: chill.export_aggregator, alias: activity_bysocialissue_aggregator } - { name: chill.export_aggregator, alias: activity_bysocialissue_aggregator }
Chill\ActivityBundle\Export\Aggregator\ACPAggregators\CreatorScopeAggregator: Chill\ActivityBundle\Export\Aggregator\CreatorScopeAggregator:
tags: tags:
- { name: chill.export_aggregator, alias: activity_creator_scope_aggregator } - { name: chill.export_aggregator, alias: activity_creator_scope_aggregator }

View File

@ -377,6 +377,8 @@ export:
Title: Filtre les parcours ayant reçu un échange entre deux dates Title: Filtre les parcours ayant reçu un échange entre deux dates
Receiving an activity after: Ayant reçu un échange après le Receiving an activity after: Ayant reçu un échange après le
Receiving an activity before: Ayant reçu un échange avant le Receiving an activity before: Ayant reçu un échange avant le
acp_by_activity_type:
'acp_containing_at_least_one_%activitytypes%': 'Parcours filtrés: uniquement ceux qui contiennent au moins un échange d''un des types suivants: %activitytypes%'
aggregator: aggregator:

View File

@ -224,7 +224,7 @@ class SocialIssue
/** /**
* @param array|SocialIssue[] $socialIssues * @param array|SocialIssue[] $socialIssues
*/ */
public static function getDescendantsWithThisForIssues(array $socialIssues): Collection public static function getDescendantsWithThisForIssues(array|Collection $socialIssues): Collection
{ {
$unique = []; $unique = [];