Feature: allow filtering for users in the public form for docgen acc course

This commit is contained in:
nobohan 2023-03-16 16:02:26 +01:00
parent 5bba1aca93
commit 1167ff25b1

View File

@ -103,6 +103,21 @@ class ListActivitiesByAccompanyingPeriodContext implements
{
$this->accompanyingPeriodContext->buildAdminForm($builder);
// $builder
// ->add('myActivitiesOnly', CheckboxType::class, [
// 'required' => false,
// 'label' => 'docgen.myActivitiesOnly',
// ])
// ->add('myWorksOnly', CheckboxType::class, [
// 'required' => false,
// 'label' => 'docgen.myWorksOnly',
// ]);
}
public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, $entity): void
{
$this->accompanyingPeriodContext->buildPublicForm($builder, $template, $entity);
$builder
->add('myActivitiesOnly', CheckboxType::class, [
'required' => false,
@ -114,11 +129,6 @@ class ListActivitiesByAccompanyingPeriodContext implements
]);
}
public function buildPublicForm(FormBuilderInterface $builder, DocGeneratorTemplate $template, $entity): void
{
$this->accompanyingPeriodContext->buildPublicForm($builder, $template, $entity);
}
public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array
{
return $this->accompanyingPeriodContext->contextGenerationDataDenormalize($template, $entity, $data);
@ -126,7 +136,12 @@ class ListActivitiesByAccompanyingPeriodContext implements
public function contextGenerationDataNormalize(DocGeneratorTemplate $template, $entity, array $data): array
{
return $this->accompanyingPeriodContext->contextGenerationDataNormalize($template, $entity, $data);
$normalized = $this->accompanyingPeriodContext->contextGenerationDataNormalize($template, $entity, $data);
foreach (['myActivitiesOnly', 'myWorksOnly'] as $k) {
$normalized[$k] = null !== ($data[$k] ?? null) ? $data[$k] : false;
}
return $normalized;
}
public function filterActivitiesByCurrentUser(array $activities): array
@ -163,7 +178,7 @@ class ListActivitiesByAccompanyingPeriodContext implements
$activities = $this->getActivitiesSimplified($entity);
$myActivitiesOnly = $template->getOptions()['myActivitiesOnly'];
$myActivitiesOnly = $contextGenerationData['myActivitiesOnly'];
if ($myActivitiesOnly) {
$activities = $this->filterActivitiesByCurrentUser($activities);
@ -171,12 +186,11 @@ class ListActivitiesByAccompanyingPeriodContext implements
$data['activities'] = $activities;
$myWorksOnly = $template->getOptions()['myWorksOnly'];
$myWorksOnly = $contextGenerationData['myWorksOnly'];
if ($myWorksOnly) {
$data['course']['works'] = $this->filterWorksByCurrentUser($data['course']['works']);
}
return $data;
}
@ -212,7 +226,7 @@ class ListActivitiesByAccompanyingPeriodContext implements
public function hasPublicForm(DocGeneratorTemplate $template, $entity): bool
{
return $this->accompanyingPeriodContext->hasPublicForm($template, $entity);
return true;
}
public function storeGenerated(DocGeneratorTemplate $template, StoredObject $storedObject, object $entity, array $contextGenerationData): void