mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Feature: allow filtering works in docgen for acc course by logged user - php cs fixer
This commit is contained in:
parent
9ded3eb631
commit
5bba1aca93
@ -11,7 +11,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\ActivityBundle\Service\DocGenerator;
|
namespace Chill\ActivityBundle\Service\DocGenerator;
|
||||||
|
|
||||||
use Chill\ActivityBundle\Entity\Activity;
|
|
||||||
use Chill\ActivityBundle\Entity\ActivityPresence;
|
use Chill\ActivityBundle\Entity\ActivityPresence;
|
||||||
use Chill\ActivityBundle\Entity\ActivityType;
|
use Chill\ActivityBundle\Entity\ActivityType;
|
||||||
use Chill\ActivityBundle\Repository\ActivityACLAwareRepositoryInterface;
|
use Chill\ActivityBundle\Repository\ActivityACLAwareRepositoryInterface;
|
||||||
@ -35,11 +34,12 @@ use Chill\ThirdPartyBundle\Entity\ThirdParty;
|
|||||||
use Chill\ThirdPartyBundle\Repository\ThirdPartyRepository;
|
use Chill\ThirdPartyBundle\Repository\ThirdPartyRepository;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use libphonenumber\PhoneNumber;
|
use libphonenumber\PhoneNumber;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\Security\Core\Security;
|
||||||
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
|
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
|
||||||
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
|
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use function in_array;
|
||||||
use Symfony\Component\Security\Core\Security;
|
|
||||||
|
|
||||||
class ListActivitiesByAccompanyingPeriodContext implements
|
class ListActivitiesByAccompanyingPeriodContext implements
|
||||||
DocGeneratorContextWithAdminFormInterface,
|
DocGeneratorContextWithAdminFormInterface,
|
||||||
@ -53,6 +53,8 @@ class ListActivitiesByAccompanyingPeriodContext implements
|
|||||||
|
|
||||||
private PersonRepository $personRepository;
|
private PersonRepository $personRepository;
|
||||||
|
|
||||||
|
private Security $security;
|
||||||
|
|
||||||
private SocialActionRepository $socialActionRepository;
|
private SocialActionRepository $socialActionRepository;
|
||||||
|
|
||||||
private SocialIssueRepository $socialIssueRepository;
|
private SocialIssueRepository $socialIssueRepository;
|
||||||
@ -63,8 +65,6 @@ class ListActivitiesByAccompanyingPeriodContext implements
|
|||||||
|
|
||||||
private UserRepository $userRepository;
|
private UserRepository $userRepository;
|
||||||
|
|
||||||
private Security $security;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
AccompanyingPeriodContext $accompanyingPeriodContext,
|
AccompanyingPeriodContext $accompanyingPeriodContext,
|
||||||
ActivityACLAwareRepositoryInterface $activityACLAwareRepository,
|
ActivityACLAwareRepositoryInterface $activityACLAwareRepository,
|
||||||
@ -119,25 +119,28 @@ class ListActivitiesByAccompanyingPeriodContext implements
|
|||||||
$this->accompanyingPeriodContext->buildPublicForm($builder, $template, $entity);
|
$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'];
|
public function filterActivitiesByCurrentUser(array $activities): array
|
||||||
if ($myActivitiesOnly) {
|
{
|
||||||
$activities = $this->filterActivitiesByCurrentUser($activities);
|
return array_filter(
|
||||||
}
|
$activities,
|
||||||
|
function ($activity) {
|
||||||
|
$activityUsernames = array_map(static function ($user) {
|
||||||
|
return $user['username'];
|
||||||
|
}, $activity['users'] ?? []);
|
||||||
|
|
||||||
$data['activities'] = $activities;
|
return in_array($this->security->getUser()->getUsername(), $activityUsernames, true);
|
||||||
|
}
|
||||||
$myWorksOnly = $template->getOptions()['myWorksOnly'];
|
);
|
||||||
if ($myWorksOnly) {
|
|
||||||
$data['course']['works'] = $this->filterWorksByCurrentUser($data['course']['works']);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function filterWorksByCurrentUser(array $works): array
|
public function filterWorksByCurrentUser(array $works): array
|
||||||
@ -145,28 +148,37 @@ class ListActivitiesByAccompanyingPeriodContext implements
|
|||||||
return array_filter(
|
return array_filter(
|
||||||
$works,
|
$works,
|
||||||
function ($work) {
|
function ($work) {
|
||||||
$workUsernames = array_map(function ($user) {
|
$workUsernames = array_map(static function ($user) {
|
||||||
return $user['username'];
|
return $user['username'];
|
||||||
}, $work['referrers'] ?? []);
|
}, $work['referrers'] ?? []);
|
||||||
return in_array($this->security->getUser()->getUsername(), $workUsernames);
|
|
||||||
|
return in_array($this->security->getUser()->getUsername(), $workUsernames, true);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getData(DocGeneratorTemplate $template, $entity, array $contextGenerationData = []): array
|
||||||
public function filterActivitiesByCurrentUser(array $activities): array
|
|
||||||
{
|
{
|
||||||
return array_filter(
|
$data = $this->accompanyingPeriodContext->getData($template, $entity, $contextGenerationData);
|
||||||
$activities,
|
|
||||||
function ($activity) {
|
|
||||||
$activityUsernames = array_map(function ($user) {
|
|
||||||
return $user['username'];
|
|
||||||
}, $activity['users'] ?? []);
|
|
||||||
return in_array($this->security->getUser()->getUsername(), $activityUsernames);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$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
|
public function getDescription(): string
|
||||||
{
|
{
|
||||||
@ -203,16 +215,6 @@ class ListActivitiesByAccompanyingPeriodContext implements
|
|||||||
return $this->accompanyingPeriodContext->hasPublicForm($template, $entity);
|
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
|
public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void
|
||||||
{
|
{
|
||||||
$this->accompanyingPeriodContext->storeGenerated($template, $storedObject, $entity, $contextGenerationData);
|
$this->accompanyingPeriodContext->storeGenerated($template, $storedObject, $entity, $contextGenerationData);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user