[export] fix data type from form: either collection or array

This commit is contained in:
2023-11-05 23:08:13 +01:00
parent b2aa465b03
commit 6fd80f9f2e
17 changed files with 51 additions and 12 deletions

View File

@@ -80,7 +80,7 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
// collect all the reasons'name used in this filter in one array
$reasonsNames = array_map(
fn (ActivityType $t): string => $this->translatableStringHelper->localize($t->getName()),
$this->activityTypeRepository->findBy(['id' => $data['types']->toArray()])
$this->activityTypeRepository->findBy(['id' => $data['types'] instanceof \Doctrine\Common\Collections\Collection ? $data['types']->toArray() : $data['types']])
);
return ['Filtered by activity type: only %list%', [

View File

@@ -17,6 +17,7 @@ use Chill\ActivityBundle\Repository\ActivityReasonRepository;
use Chill\MainBundle\Export\ExportElementValidatedInterface;
use Chill\MainBundle\Export\FilterInterface;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Query\Expr;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
@@ -79,7 +80,7 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
// collect all the reasons'name used in this filter in one array
$reasonsNames = array_map(
fn (ActivityReason $r): string => '"'.$this->translatableStringHelper->localize($r->getName()).'"',
$this->activityReasonRepository->findBy(['id' => $data['reasons']->toArray()])
$this->activityReasonRepository->findBy(['id' => $data['reasons'] instanceof Collection ? $data['reasons']->toArray() : $data['reasons']])
);
return [

View File

@@ -17,6 +17,7 @@ use Chill\MainBundle\Entity\User\UserJobHistory;
use Chill\MainBundle\Entity\UserJob;
use Chill\MainBundle\Export\FilterInterface;
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
@@ -80,7 +81,7 @@ class UsersJobFilter implements FilterInterface
', ',
array_map(
fn (UserJob $job) => $this->translatableStringHelper->localize($job->getLabel()),
$data['jobs']->toArray()
$data['jobs'] instanceof Collection ? $data['jobs']->toArray() : $data['jobs']
)
),
]];

View File

@@ -18,6 +18,7 @@ use Chill\MainBundle\Entity\User\UserScopeHistory;
use Chill\MainBundle\Export\FilterInterface;
use Chill\MainBundle\Repository\ScopeRepositoryInterface;
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\QueryBuilder;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
@@ -83,7 +84,7 @@ class UsersScopeFilter implements FilterInterface
', ',
array_map(
fn (Scope $s) => $this->translatableStringHelper->localize($s->getName()),
$data['scopes']->toArray()
$data['scopes'] instanceof Collection ? $data['scopes']->toArray() : $data['scopes']
)
),
]];

View File

@@ -52,6 +52,7 @@ final class ActivityReasonFilterTest extends AbstractFilterTest
public function getFormData()
{
self::bootKernel();
$data = [];
$em = self::$container
->get(EntityManagerInterface::class);
@@ -62,10 +63,13 @@ final class ActivityReasonFilterTest extends AbstractFilterTest
// generate an array of 5 different combination of results
for ($i = 0; 5 > $i; ++$i) {
yield ['reasons' => new ArrayCollection(array_splice($reasons, ($i + 1) * -1))];
$data[] = ['reasons' => new ArrayCollection(array_splice($reasons, ($i + 1) * -1))];
$data[] = ['reasons' => array_splice($reasons, ($i + 1) * -1)];
}
self::ensureKernelShutdown();
return $data;
}
public function getQueryBuilders(): iterable

View File

@@ -57,6 +57,9 @@ final class ActivityTypeFilterTest extends AbstractFilterTest
$data[] = [
'types' => new ArrayCollection([$a]),
];
/*$data[] = [
'types' => [$a],
];*/
}
return $data;