diff --git a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php index 55dfca728..2a5b2f81e 100644 --- a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php +++ b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php @@ -11,7 +11,6 @@ declare(strict_types=1); namespace Chill\ActivityBundle\Service\DocGenerator; -use Chill\ActivityBundle\Entity\Activity; use Chill\ActivityBundle\Entity\ActivityPresence; use Chill\ActivityBundle\Entity\ActivityType; use Chill\ActivityBundle\Repository\ActivityACLAwareRepositoryInterface; @@ -35,11 +34,12 @@ use Chill\ThirdPartyBundle\Entity\ThirdParty; use Chill\ThirdPartyBundle\Repository\ThirdPartyRepository; use DateTime; use libphonenumber\PhoneNumber; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Security\Core\Security; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; -use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -use Symfony\Component\Security\Core\Security; +use function in_array; class ListActivitiesByAccompanyingPeriodContext implements DocGeneratorContextWithAdminFormInterface, @@ -53,6 +53,8 @@ class ListActivitiesByAccompanyingPeriodContext implements private PersonRepository $personRepository; + private Security $security; + private SocialActionRepository $socialActionRepository; private SocialIssueRepository $socialIssueRepository; @@ -63,8 +65,6 @@ class ListActivitiesByAccompanyingPeriodContext implements private UserRepository $userRepository; - private Security $security; - public function __construct( AccompanyingPeriodContext $accompanyingPeriodContext, ActivityACLAwareRepositoryInterface $activityACLAwareRepository, @@ -119,25 +119,28 @@ class ListActivitiesByAccompanyingPeriodContext implements $this->accompanyingPeriodContext->buildPublicForm($builder, $template, $entity); } - public function getData(DocGeneratorTemplate $template, $entity, array $contextGenerationData = []): array + public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array { - $data = $this->accompanyingPeriodContext->getData($template, $entity, $contextGenerationData); + return $this->accompanyingPeriodContext->contextGenerationDataDenormalize($template, $entity, $data); + } - $activities = $this->getActivitiesSimplified($entity); + public function contextGenerationDataNormalize(DocGeneratorTemplate $template, $entity, array $data): array + { + return $this->accompanyingPeriodContext->contextGenerationDataNormalize($template, $entity, $data); + } - $myActivitiesOnly = $template->getOptions()['myActivitiesOnly']; - if ($myActivitiesOnly) { - $activities = $this->filterActivitiesByCurrentUser($activities); - } + public function filterActivitiesByCurrentUser(array $activities): array + { + return array_filter( + $activities, + function ($activity) { + $activityUsernames = array_map(static function ($user) { + return $user['username']; + }, $activity['users'] ?? []); - $data['activities'] = $activities; - - $myWorksOnly = $template->getOptions()['myWorksOnly']; - if ($myWorksOnly) { - $data['course']['works'] = $this->filterWorksByCurrentUser($data['course']['works']); - } - - return $data; + return in_array($this->security->getUser()->getUsername(), $activityUsernames, true); + } + ); } public function filterWorksByCurrentUser(array $works): array @@ -145,28 +148,37 @@ class ListActivitiesByAccompanyingPeriodContext implements return array_filter( $works, function ($work) { - $workUsernames = array_map(function ($user) { + $workUsernames = array_map(static function ($user) { return $user['username']; }, $work['referrers'] ?? []); - return in_array($this->security->getUser()->getUsername(), $workUsernames); + + return in_array($this->security->getUser()->getUsername(), $workUsernames, true); } ); } - - public function filterActivitiesByCurrentUser(array $activities): array + public function getData(DocGeneratorTemplate $template, $entity, array $contextGenerationData = []): array { - return array_filter( - $activities, - function ($activity) { - $activityUsernames = array_map(function ($user) { - return $user['username']; - }, $activity['users'] ?? []); - return in_array($this->security->getUser()->getUsername(), $activityUsernames); - } - ); - } + $data = $this->accompanyingPeriodContext->getData($template, $entity, $contextGenerationData); + $activities = $this->getActivitiesSimplified($entity); + + $myActivitiesOnly = $template->getOptions()['myActivitiesOnly']; + + if ($myActivitiesOnly) { + $activities = $this->filterActivitiesByCurrentUser($activities); + } + + $data['activities'] = $activities; + + $myWorksOnly = $template->getOptions()['myWorksOnly']; + + if ($myWorksOnly) { + $data['course']['works'] = $this->filterWorksByCurrentUser($data['course']['works']); + } + + return $data; + } public function getDescription(): string { @@ -203,16 +215,6 @@ class ListActivitiesByAccompanyingPeriodContext implements return $this->accompanyingPeriodContext->hasPublicForm($template, $entity); } - public function contextGenerationDataNormalize(DocGeneratorTemplate $template, $entity, array $data): array - { - return $this->accompanyingPeriodContext->contextGenerationDataNormalize($template, $entity, $data); - } - - public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array - { - return $this->accompanyingPeriodContext->contextGenerationDataDenormalize($template, $entity, $data); - } - public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void { $this->accompanyingPeriodContext->storeGenerated($template, $storedObject, $entity, $contextGenerationData);