From ffa019802067b6b6dafdb68ef899ec67cddb7cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Gardien?= Date: Tue, 16 May 2023 15:56:31 +0200 Subject: [PATCH] [ManagedUser] Update export content --- .../AbstractManagedUsersController.php | 2 +- src/Exporter/ManagedUsersExporter.php | 76 ++++--------------- 2 files changed, 16 insertions(+), 62 deletions(-) diff --git a/src/Controller/EnMarche/ManagedUsers/AbstractManagedUsersController.php b/src/Controller/EnMarche/ManagedUsers/AbstractManagedUsersController.php index 372782495ba..01c0d652288 100644 --- a/src/Controller/EnMarche/ManagedUsers/AbstractManagedUsersController.php +++ b/src/Controller/EnMarche/ManagedUsers/AbstractManagedUsersController.php @@ -43,7 +43,7 @@ public function listAction(Request $request, string $_format, ManagedUsersExport } if ('html' !== $_format) { - return $exporter->getResponse($_format, $filter, $this->getSpaceType()); + return $exporter->getResponse($_format, $filter); } $users = $this->managedUsersRepository->searchByFilter($filter, $request->query->getInt('page', 1)); diff --git a/src/Exporter/ManagedUsersExporter.php b/src/Exporter/ManagedUsersExporter.php index 153b655a18f..480f434342a 100644 --- a/src/Exporter/ManagedUsersExporter.php +++ b/src/Exporter/ManagedUsersExporter.php @@ -2,78 +2,25 @@ namespace App\Exporter; -use App\AdherentSpace\AdherentSpaceEnum; use App\Entity\Projection\ManagedUser; use App\ManagedUsers\ManagedUsersFilter; use App\Repository\Projection\ManagedUserRepository; use Sonata\Exporter\Exporter as SonataExporter; use Sonata\Exporter\Source\IteratorCallbackSourceIterator; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; class ManagedUsersExporter { - private $exporter; - private $repository; - - public function __construct(SonataExporter $exporter, ManagedUserRepository $repository) - { - $this->exporter = $exporter; - $this->repository = $repository; + public function __construct( + private readonly SonataExporter $exporter, + private readonly ManagedUserRepository $repository, + private readonly NormalizerInterface $normalizer + ) { } - public function getResponse(string $format, ManagedUsersFilter $filter, string $spaceType = null): Response + public function getResponse(string $format, ManagedUsersFilter $filter): Response { - switch ($spaceType) { - case AdherentSpaceEnum::CANDIDATE: - $callback = function (ManagedUser $managedUser) { - return [ - 'Prénom' => $managedUser->getFirstName(), - 'Nom' => $managedUser->getLastName(), - 'Âge' => $managedUser->getAge(), - 'Genre' => $managedUser->getGenderLabel(), - 'Adresse postale' => $managedUser->getAddress(), - 'Commune' => $managedUser->getCity(), - 'Code postal' => $managedUser->getPostalCode(), - 'Pays' => $managedUser->getCountry(), - ]; - }; - - break; - case AdherentSpaceEnum::DEPUTY: - $callback = function (ManagedUser $managedUser) { - return [ - 'Prénom' => $managedUser->getFirstName(), - 'Nom' => $managedUser->getLastName(), - 'Âge' => $managedUser->getAge(), - 'Genre' => $managedUser->getGenderLabel(), - 'Rôle' => $managedUser->getUserRoleLabels(), - 'Adresse postale' => $managedUser->getAddress(), - 'Commune' => $managedUser->getCity(), - 'Code postal' => $managedUser->getPostalCode(), - 'Pays' => $managedUser->getCountry(), - 'Adhésion le' => $managedUser->getCreatedAt()->format('d/m/Y H:i'), - 'Comités' => $managedUser->getCommitteesAsString(), - ]; - }; - - break; - default: - $callback = function (ManagedUser $managedUser) { - return [ - 'Prénom' => $managedUser->getFirstName(), - 'Nom' => $managedUser->getLastName(), - 'Âge' => $managedUser->getAge(), - 'Genre' => $managedUser->getGenderLabel(), - 'Rôle' => $managedUser->getUserRoleLabels(), - 'Commune' => $managedUser->getCity(), - 'Code postal' => $managedUser->getPostalCode(), - 'Pays' => $managedUser->getCountry(), - 'Adhésion le' => $managedUser->getCreatedAt()->format('d/m/Y H:i'), - 'Comités' => $managedUser->getCommitteesAsString(), - ]; - }; - } - $array = new \ArrayObject($this->repository->getExportQueryBuilder($filter)->getResult()); return $this->exporter->getResponse( @@ -81,8 +28,15 @@ public function getResponse(string $format, ManagedUsersFilter $filter, string $ sprintf('adherents--%s.%s', date('d-m-Y--H-i'), $format), new IteratorCallbackSourceIterator( $array->getIterator(), - $callback + function (ManagedUser $managedUser): array { + return $this->transformToArray($managedUser); + } ) ); } + + private function transformToArray(ManagedUser $managedUser): array + { + return $this->normalizer->normalize($managedUser, null, ['groups' => ['managed_user_read']]); + } }