diff --git a/CHANGELOG.md b/CHANGELOG.md index fddef86b6..28144720b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to ## Unreleased +* [main] change address format in case the country is France, in Address render box and address normalizer * [person] add validator for accompanying period with a test on social issues (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/76) * [activity] fix visibility for location * [origin] fix origin: use correctly the translatable strings diff --git a/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig index b915daf1a..4d871404f 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig @@ -12,13 +12,11 @@ * extended_infos bool add extra informations (step, floor, etc.) #} -{% macro raw(address, options) %} + +{% macro raw(address, options, streetLine) %} + {% if address.street is not empty %} -

{{ address.street }} - {% if address.streetNumber is not empty %} - {{ address.streetNumber }} - {% endif %} -

+

{{ streetLine }}

{% endif %} {% if options['extended_infos'] %} {{ _self.extended(address, options) }} @@ -56,7 +54,7 @@ {% endif %} {% endmacro %} -{% macro inline(address, options) %} +{% macro inline(address, options, streetLine) %} {% if options['has_no_address'] == true and address.isNoAddress == true %} {% if address.postCode is not empty %}

@@ -70,7 +68,7 @@ {% else %} - {{ _self.raw(address, options) }} + {{ _self.raw(address, options, streetLine) }} {% endif %} {{ _self.validity(address, options) }} @@ -99,7 +97,7 @@ {% if options['with_picto'] %} {% endif %} - {{ _self.inline(address, options) }} + {{ _self.inline(address, options, streetLine) }} {%- endif -%} @@ -108,7 +106,7 @@ {% if options['with_picto'] %} {% endif %} - {{ _self.inline(address, options) }} + {{ _self.inline(address, options, streetLine) }} {%- endif -%} @@ -133,7 +131,7 @@ {% if options['with_picto'] %} {% endif %} - {{ _self.raw(address, options) }} + {{ _self.raw(address, options, streetLine) }} {% endif %} {{ _self.validity(address, options) }} diff --git a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php index 131638b3d..fd250e967 100644 --- a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php +++ b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php @@ -52,9 +52,19 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw public function normalize($address, ?string $format = null, array $context = []) { if ($address instanceof Address) { + $text = $address->isNoAddress() ? '' : $address->getStreet() . ', ' . $address->getStreetNumber(); + + if (null !== $address->getPostCode()->getCountry()->getCountryCode()) { + if ($address->getPostCode()->getCountry()->getCountryCode() === 'FR') { + $text = $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet(); + } else { + $text = $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet(); + } + } + $data = [ 'address_id' => $address->getId(), - 'text' => $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet(), + 'text' => $text, 'street' => $address->getStreet(), 'streetNumber' => $address->getStreetNumber(), 'postcode' => [ diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php index 2a29fb2f3..264f11688 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php @@ -46,6 +46,7 @@ class AddressRender implements ChillEntityRenderInterface return $this->templating ->render('@ChillMain/Entity/address.html.twig', [ 'address' => $addr, + 'streetLine' => $this->renderStreetLine($addr), 'render' => $options['render'] ?? 'bloc', 'options' => $options, ]); @@ -59,13 +60,7 @@ class AddressRender implements ChillEntityRenderInterface { $lines = []; - if (!empty($addr->getStreet())) { - $lines[0] = $addr->getStreet(); - } - - if (!empty($addr->getStreetNumber())) { - $lines[0] .= ', ' . $addr->getStreetNumber(); - } + $lines[0] = $this->renderStreetLine($addr); if (!empty($addr->getPostcode())) { $lines[1] = strtr('{postcode} {label}', [ @@ -81,4 +76,33 @@ class AddressRender implements ChillEntityRenderInterface { return $entity instanceof Address; } + + private function renderStreetLine($addr): string + { + if (!empty($addr->getStreet())) { + $street = $addr->getStreet(); + } else { + $street = ''; + } + + if (!empty($addr->getStreetNumber())) { + $streetNumber = $addr->getStreetNumber(); + } else { + $streetNumber = ''; + } + + $res = trim($street . ', ' . $streetNumber, ', '); + + if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) { + if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') { + $res = trim($streetNumber . ', ' . $street, ', '); + } + } + + if (',' === $res) { + $res = ''; + } + + return $res; + } }