mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-08-21 07:03:49 +00:00
Squashed commit of the following:
commit 977863c2dd56d5c835f2a710cad7f7d3ba42da68 Merge: 5c37b419d3eb7ffed1
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 14:45:21 2021 +0100 Merge remote-tracking branch 'origin/master' into docgen/improve-normalizer commit 5c37b419ddf0b32b9950c33042396bba1860da84 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 14:37:05 2021 +0100 fix normalization for user and type in null value commit 4469d46cdb19051fedec86bbb84e2351e6fcb72e Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 13:24:23 2021 +0100 add civility to person commit 6cf92fbbde8f4d9f2f4763ec4ee88216257040f7 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 13:19:36 2021 +0100 fix person normalization: add a isNull on not null person commit ed6087ff8fd47b80ea5e9526756fe5d032d478e3 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 13:08:46 2021 +0100 fix stan and cs issues commit 8429c334c33b3545835cbde034fccaa529c134a7 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 13:08:36 2021 +0100 fix id type commit 39ae00d172a9f29320a97abb8518b2ea48d89d9b Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sun Dec 12 12:52:41 2021 +0100 fix test and fix null or not-null value have same keys commit 312fcc44c07affa7aa60f6c5fce58f9d1c564cc3 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sat Dec 11 03:27:30 2021 +0100 improve normalization wip commit f91a29635827005fc58617dc1c9d210091372be5 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sat Dec 11 01:15:32 2021 +0100 improve normalization commit 56060e5e6a2191ef441039fdc91a01fb4653a553 Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Sat Dec 11 00:41:09 2021 +0100 handle changelog with translatable string commit9004686a13
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Fri Dec 10 01:10:55 2021 +0100 improve docgen wip commite266fa0e5d
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Thu Dec 9 21:50:56 2021 +0100 show errors from relatorio driver commit75ba56fa09
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Thu Dec 9 21:14:12 2021 +0100 add verification tool for admin commit12d6829b98
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Thu Dec 9 14:17:42 2021 +0100 fix type with phonenumber helper commit7b5e96771f
Merge:8a9024de1
8a4748dc2
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Thu Dec 9 14:11:14 2021 +0100 Merge remote-tracking branch 'origin/master' into docgen/improve-normalizer commit8a9024de13
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Thu Dec 9 13:51:36 2021 +0100 add docgen:normalization for relation commit24a404964b
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Thu Dec 9 12:44:41 2021 +0100 docgen normalization for relation commit5d24bd4d11
Merge:70ab23214
455b225f4
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 21:08:30 2021 +0100 Merge branch 'master' into docgen/improve-normalizer commit70ab232149
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 13:58:49 2021 +0100 improve docgen, trnslations, admin commit027c01fc58
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 12:23:24 2021 +0100 fix css block commitfdc5127c74
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:57:16 2021 +0100 fix some error in test (wip) commitb8d48f04ae
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:47:50 2021 +0100 fix tests (wip) commitf1b1771d6b
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:35:00 2021 +0100 fix tests (wip) commit62dabbe1e7
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:14:46 2021 +0100 fix code style commit4101392190
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:13:49 2021 +0100 fix tests and type hinting commit3f1bed0b1c
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:05:41 2021 +0100 fix tests (wip) commit79fbdcdee4
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 11:05:29 2021 +0100 type hint User class commit3d8d79323e
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 10:56:30 2021 +0100 remove error messages commit32178e22fe
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 10:51:30 2021 +0100 fix tests (wip) commit60a8c20896
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 10:29:54 2021 +0100 update app commit9d8011da61
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 10:06:35 2021 +0100 fix loading origin commit789eeadb40
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 09:52:51 2021 +0100 fix loading fixtures for doc generator template commitf206fdb08c
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 09:52:35 2021 +0100 fix code style commit9d5409d8d9
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 09:52:06 2021 +0100 fix casting commite297d82533
Author: Julien Fastré <julien.fastre@champs-libres.coop> Date: Wed Dec 8 09:26:13 2021 +0100 fixes on tests [WIP]
This commit is contained in:
@@ -12,16 +12,21 @@ declare(strict_types=1);
|
||||
namespace Chill\PersonBundle\Serializer\Normalizer;
|
||||
|
||||
use Chill\DocGeneratorBundle\Serializer\Helper\NormalizeNullValueHelper;
|
||||
use Chill\MainBundle\Entity\Address;
|
||||
use Chill\MainBundle\Entity\Civility;
|
||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||
use Chill\PersonBundle\Entity\Household\Household;
|
||||
use Chill\PersonBundle\Entity\Person;
|
||||
use Chill\PersonBundle\Entity\PersonAltName;
|
||||
use Chill\PersonBundle\Repository\Relationships\RelationshipRepository;
|
||||
use Chill\PersonBundle\Templating\Entity\PersonRender;
|
||||
use DateTimeInterface;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Symfony\Component\Serializer\Exception\UnexpectedValueException;
|
||||
use Symfony\Component\Serializer\Normalizer\ContextAwareNormalizerInterface;
|
||||
use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface;
|
||||
use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
use function array_key_exists;
|
||||
use function array_map;
|
||||
use function implode;
|
||||
|
||||
@@ -33,16 +38,20 @@ class PersonDocGenNormalizer implements
|
||||
|
||||
private PersonRender $personRender;
|
||||
|
||||
private RelationshipRepository $relationshipRepository;
|
||||
|
||||
private TranslatableStringHelper $translatableStringHelper;
|
||||
|
||||
private TranslatorInterface $translator;
|
||||
|
||||
public function __construct(
|
||||
PersonRender $personRender,
|
||||
RelationshipRepository $relationshipRepository,
|
||||
TranslatorInterface $translator,
|
||||
TranslatableStringHelper $translatableStringHelper
|
||||
) {
|
||||
$this->personRender = $personRender;
|
||||
$this->relationshipRepository = $relationshipRepository;
|
||||
$this->translator = $translator;
|
||||
$this->translatableStringHelper = $translatableStringHelper;
|
||||
}
|
||||
@@ -52,12 +61,20 @@ class PersonDocGenNormalizer implements
|
||||
/** @var Person $person */
|
||||
$dateContext = $context;
|
||||
$dateContext['docgen:expects'] = DateTimeInterface::class;
|
||||
$addressContext = array_merge($context, ['docgen:expects' => Address::class]);
|
||||
|
||||
if (null === $person) {
|
||||
return $this->normalizeNullValue($format, $context);
|
||||
}
|
||||
|
||||
return [
|
||||
if (!$person instanceof Person) {
|
||||
throw new UnexpectedValueException();
|
||||
}
|
||||
|
||||
$data = [
|
||||
'type' => 'person',
|
||||
'isNull' => false,
|
||||
'civility' => $this->normalizer->normalize($person->getCivility(), $format, array_merge($context, ['docgen:expect' => Civility::class])),
|
||||
'firstname' => $person->getFirstName(),
|
||||
'lastname' => $person->getLastName(),
|
||||
'altNames' => implode(
|
||||
@@ -83,7 +100,34 @@ class PersonDocGenNormalizer implements
|
||||
'placeOfBirth' => $person->getPlaceOfBirth(),
|
||||
'memo' => $person->getMemo(),
|
||||
'numberOfChildren' => (string) $person->getNumberOfChildren(),
|
||||
'address' => $this->normalizer->normalize($person->getCurrentPersonAddress(), $format, $addressContext),
|
||||
];
|
||||
|
||||
if ($context['docgen:person:with-household'] ?? false) {
|
||||
$data['household'] = $this->normalizer->normalize(
|
||||
$person->getCurrentHousehold(),
|
||||
$format,
|
||||
array_merge($context, [
|
||||
'docgen:expects' => Household::class,
|
||||
'docgen:person:with-household' => false,
|
||||
'docgen:person:with-relations' => false,
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
if ($context['docgen:person:with-relations'] ?? false) {
|
||||
$data['relations'] = $this->normalizer->normalize(
|
||||
new ArrayCollection($this->relationshipRepository->findByPerson($person)),
|
||||
$format,
|
||||
array_merge($context, [
|
||||
'docgen:person:with-household' => false,
|
||||
'docgen:person:with-relation' => false,
|
||||
'docgen:relationship:counterpart' => $person,
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function supportsNormalization($data, ?string $format = null, array $context = [])
|
||||
@@ -95,25 +139,37 @@ class PersonDocGenNormalizer implements
|
||||
return
|
||||
$data instanceof Person
|
||||
|| (
|
||||
array_key_exists('docgen:expects', $context)
|
||||
&& Person::class === $context['docgen:expects']
|
||||
null === $data
|
||||
&& Person::class === ($context['docgen:expects'] ?? null)
|
||||
);
|
||||
}
|
||||
|
||||
private function normalizeNullValue(string $format, array $context)
|
||||
{
|
||||
$normalizer = new NormalizeNullValueHelper($this->normalizer);
|
||||
$normalizer = new NormalizeNullValueHelper($this->normalizer, 'type', 'person');
|
||||
|
||||
$attributes = [
|
||||
'firstname', 'lastname', 'altNames', 'text',
|
||||
'civility' => Civility::class,
|
||||
'birthdate' => DateTimeInterface::class,
|
||||
'deathdate' => DateTimeInterface::class,
|
||||
'gender', 'maritalStatus',
|
||||
'maritalStatusDate' => DateTimeInterface::class,
|
||||
'email', 'firstPhoneNumber', 'fixPhoneNumber', 'mobilePhoneNumber', 'nationality',
|
||||
'placeOfBirth', 'memo', 'numberOfChildren',
|
||||
'address' => Address::class,
|
||||
];
|
||||
|
||||
return $normalizer->normalize($attributes, $format, $context);
|
||||
if ($context['docgen:person:with-household'] ?? false) {
|
||||
$attributes['household'] = Household::class;
|
||||
}
|
||||
|
||||
$data = $normalizer->normalize($attributes, $format, $context);
|
||||
|
||||
if ($context['docgen:person:with-relations'] ?? false) {
|
||||
$data['relations'] = [];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user