diff --git a/CHANGELOG.md b/CHANGELOG.md index db1a07606..67a26b73c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to * AddAddress: optimize loading: wait for the user finish typing; * UserPicker: fix bug with deprecated role +* docgen: add base context + tests +* docgen: add age for person ## Test releases diff --git a/src/Bundle/ChillDocGeneratorBundle/Service/Context/BaseContextData.php b/src/Bundle/ChillDocGeneratorBundle/Service/Context/BaseContextData.php index 0194b8d08..0e2da164f 100644 --- a/src/Bundle/ChillDocGeneratorBundle/Service/Context/BaseContextData.php +++ b/src/Bundle/ChillDocGeneratorBundle/Service/Context/BaseContextData.php @@ -45,7 +45,7 @@ class BaseContextData $data['location'] = $this->normalizer->normalize( $user instanceof User ? $user->getCurrentLocation() : null, 'docgen', - ['docgen:expects' => Location::class, 'groups' => ['docgen:expects']] + ['docgen:expects' => Location::class, 'groups' => ['docgen:read']] ); return $data; diff --git a/src/Bundle/ChillDocGeneratorBundle/tests/Service/Context/BaseContextDataTest.php b/src/Bundle/ChillDocGeneratorBundle/tests/Service/Context/BaseContextDataTest.php index 8496bdda1..1960fbcb9 100644 --- a/src/Bundle/ChillDocGeneratorBundle/tests/Service/Context/BaseContextDataTest.php +++ b/src/Bundle/ChillDocGeneratorBundle/tests/Service/Context/BaseContextDataTest.php @@ -38,6 +38,7 @@ final class BaseContextDataTest extends KernelTestCase $this->assertIsArray($actual); $this->assertArrayHasKey('creator', $actual); $this->assertArrayHasKey('createdAt', $actual); + $this->assertArrayHasKey('location', $actual); } public function testGenerateWithUser() @@ -52,6 +53,7 @@ final class BaseContextDataTest extends KernelTestCase $this->assertIsArray($actual); $this->assertArrayHasKey('creator', $actual); $this->assertArrayHasKey('createdAt', $actual); + $this->assertArrayHasKey('location', $actual); } private function buildBaseContext( diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php index a1f8b1f83..d6c9e0aac 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php @@ -74,7 +74,7 @@ class PersonDocGenNormalizer implements $data = [ 'type' => 'person', 'isNull' => false, - 'civility' => $this->normalizer->normalize($person->getCivility(), $format, array_merge($context, ['docgen:expect' => Civility::class])), + 'civility' => $this->normalizer->normalize($person->getCivility(), $format, array_merge($context, ['docgen:expects' => Civility::class])), 'firstname' => $person->getFirstName(), 'lastname' => $person->getLastName(), 'altNames' => implode( @@ -87,6 +87,7 @@ class PersonDocGenNormalizer implements ) ), 'text' => $this->personRender->renderString($person, []), + 'age' => $person->getAge(), 'birthdate' => $this->normalizer->normalize($person->getBirthdate(), $format, $dateContext), 'deathdate' => $this->normalizer->normalize($person->getDeathdate(), $format, $dateContext), 'gender' => $this->translator->trans($person->getGender()), diff --git a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php index 345fa2556..60406c3d5 100644 --- a/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php +++ b/src/Bundle/ChillPersonBundle/Service/DocGenerator/AccompanyingPeriodContext.php @@ -15,6 +15,7 @@ use Chill\DocGeneratorBundle\Context\DocGeneratorContextWithAdminFormInterface; use Chill\DocGeneratorBundle\Context\DocGeneratorContextWithPublicFormInterface; use Chill\DocGeneratorBundle\Context\Exception\UnexpectedTypeException; use Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate; +use Chill\DocGeneratorBundle\Service\Context\BaseContextData; use Chill\DocStoreBundle\Entity\AccompanyingCourseDocument; use Chill\DocStoreBundle\Entity\StoredObject; use Chill\DocStoreBundle\Repository\DocumentCategoryRepository; @@ -38,6 +39,8 @@ class AccompanyingPeriodContext implements DocGeneratorContextWithAdminFormInterface, DocGeneratorContextWithPublicFormInterface { + private BaseContextData $baseContextData; + private DocumentCategoryRepository $documentCategoryRepository; private EntityManagerInterface $em; @@ -56,7 +59,8 @@ class AccompanyingPeriodContext implements TranslatableStringHelperInterface $translatableStringHelper, EntityManagerInterface $em, PersonRender $personRender, - TranslatorInterface $translator + TranslatorInterface $translator, + BaseContextData $baseContextData ) { $this->documentCategoryRepository = $documentCategoryRepository; $this->normalizer = $normalizer; @@ -64,12 +68,11 @@ class AccompanyingPeriodContext implements $this->em = $em; $this->personRender = $personRender; $this->translator = $translator; + $this->baseContextData = $baseContextData; } public function adminFormReverseTransform(array $data): array { - dump($data); - if (array_key_exists('category', $data)) { $data['category'] = [ 'idInsideBundle' => $data['category']->getIdInsideBundle(), @@ -171,6 +174,7 @@ class AccompanyingPeriodContext implements $options = $template->getOptions(); $data = []; + $data = array_merge($data, $this->baseContextData->getData()); $data['course'] = $this->normalizer->normalize($entity, 'docgen', ['docgen:expects' => AccompanyingPeriod::class, 'groups' => 'docgen:read']); foreach (['mainPerson', 'person1', 'person2'] as $k) { diff --git a/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php b/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php index 6c9d8de5c..b0341105f 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonDocGenNormalizerTest.php @@ -56,6 +56,7 @@ final class PersonDocGenNormalizerTest extends KernelTestCase 'placeOfBirth' => '', 'memo' => '', 'numberOfChildren' => '', + 'age' => '@ignored', ]; private NormalizerInterface $normalizer;