mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-23 07:04:58 +00:00
Compare commits
11 Commits
#361-impro
...
issue309_a
Author | SHA1 | Date | |
---|---|---|---|
|
5e1dfee70f | ||
|
73f11ccb1a | ||
|
d14edd469e | ||
|
fd40ae0198 | ||
|
7d20f842a2 | ||
|
e82a71b833 | ||
|
3b20ac85d9 | ||
|
6bae7606dd | ||
|
4c4a003977 | ||
|
077317c2bf | ||
|
3c2ebee12a |
@@ -60,6 +60,8 @@ class Address
|
|||||||
/**
|
/**
|
||||||
* @var string|null
|
* @var string|null
|
||||||
*
|
*
|
||||||
|
* used for the CEDEX information
|
||||||
|
*
|
||||||
* @ORM\Column(type="string", length=255, nullable=true)
|
* @ORM\Column(type="string", length=255, nullable=true)
|
||||||
* @Groups({"write"})
|
* @Groups({"write"})
|
||||||
*/
|
*/
|
||||||
|
@@ -2,21 +2,28 @@
|
|||||||
<component :is="component" class="chill-entity entity-address my-3">
|
<component :is="component" class="chill-entity entity-address my-3">
|
||||||
|
|
||||||
<component :is="component" class="address" :class="multiline">
|
<component :is="component" class="address" :class="multiline">
|
||||||
<p v-if="address.text"
|
<div v-if="isMultiline === true">
|
||||||
class="street">
|
<p v-for="(l, i) in address.lines" :key="`line-${i}`">
|
||||||
{{ address.text }},
|
{{ l }}
|
||||||
</p>
|
</p>
|
||||||
<p v-if="address.postcode"
|
</div>
|
||||||
class="postcode">
|
<div v-else>
|
||||||
{{ address.postcode.code }} {{ address.postcode.name }}
|
<p v-if="address.text"
|
||||||
</p>
|
class="street">
|
||||||
<p v-if="address.country"
|
{{ address.text }}
|
||||||
class="country">
|
</p>
|
||||||
{{ address.country.name.fr }}
|
<p v-if="address.postcode"
|
||||||
</p>
|
class="postcode">
|
||||||
|
{{ address.postcode.code }} {{ address.postcode.name }}
|
||||||
|
</p>
|
||||||
|
<p v-if="address.country"
|
||||||
|
class="country">
|
||||||
|
{{ address.country.name.fr }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</component>
|
</component>
|
||||||
|
|
||||||
<div v-if="isMultiline === true" class="address-more">
|
<!-- <div v-if="isMultiline === true" class="address-more">
|
||||||
<div v-if="address.floor">
|
<div v-if="address.floor">
|
||||||
<span class="floor">
|
<span class="floor">
|
||||||
<b>{{ $t('floor') }}</b>: {{ address.floor }}
|
<b>{{ $t('floor') }}</b>: {{ address.floor }}
|
||||||
@@ -52,7 +59,7 @@
|
|||||||
<b>{{ $t('distribution') }}</b>: {{ address.distribution }}
|
<b>{{ $t('distribution') }}</b>: {{ address.distribution }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<div v-if="useDatePane === true" class="address-more">
|
<div v-if="useDatePane === true" class="address-more">
|
||||||
<div v-if="address.validFrom">
|
<div v-if="address.validFrom">
|
||||||
|
@@ -13,53 +13,19 @@
|
|||||||
|
|
||||||
#}
|
#}
|
||||||
|
|
||||||
{% macro raw(address, options, streetLine) %}
|
{% macro raw(lines) %}
|
||||||
|
{% for l in lines %}
|
||||||
{% if address.street is not empty %}
|
<p>{{ l }}</p>
|
||||||
<p>{{ streetLine }}</p>
|
{% endfor %}
|
||||||
{% endif %}
|
|
||||||
{% if options['extended_infos'] %}
|
|
||||||
{{ _self.extended(address, options) }}
|
|
||||||
{% endif %}
|
|
||||||
{% if address.postCode is not empty %}
|
|
||||||
<p class="postcode">
|
|
||||||
<span class="code">{{ address.postCode.code }}</span>
|
|
||||||
<span class="name">{{ address.postCode.name }}</span>
|
|
||||||
</p>
|
|
||||||
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
|
|
||||||
{% endif %}
|
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro extended(address, options) %}
|
{% macro inline(address, options, streetLine, lines) %}
|
||||||
{% if address.floor is not empty %}
|
|
||||||
<span class="floor">{{ 'address more.floor'|trans }} {{ address.floor }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if address.corridor is not empty %}
|
|
||||||
<span class="corridor">{{ 'address more.corridor'|trans }} {{ address.corridor }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if address.steps is not empty %}
|
|
||||||
<span class="steps">{{ 'address more.steps'|trans }} {{ address.steps }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if address.buildingName is not empty %}
|
|
||||||
<span class="buildingName">{{ 'address more.buildingName'|trans }} {{ address.buildingName }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if address.flat is not empty %}
|
|
||||||
<span class="flat">{{ 'address more.flat'|trans }} {{ address.flat }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if address.extra is not empty %}
|
|
||||||
<span class="extra">{{ 'address more.extra'|trans }} {{ address.extra }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if address.distribution is not empty %}
|
|
||||||
<span class="distribution">{{ 'address more.distribution'|trans }} {{ address.distribution }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro inline(address, options, streetLine) %}
|
|
||||||
{% if options['has_no_address'] == true and address.isNoAddress == true %}
|
{% if options['has_no_address'] == true and address.isNoAddress == true %}
|
||||||
{% if address.postCode is not empty %}
|
{% if address.postCode is not empty %}
|
||||||
<p class="postcode">
|
<p class="postcode">
|
||||||
<span class="code">{{ address.postCode.code }}</span>
|
<span class="code">{{ address.postCode.code }}</span>
|
||||||
<span class="name">{{ address.postCode.name }}</span>
|
<span class="name">{{ address.postCode.name }}</span>
|
||||||
|
<span class="name">{{ address.distribution }}</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
|
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -67,9 +33,25 @@
|
|||||||
{{ 'address.consider homeless'|trans }}
|
{{ 'address.consider homeless'|trans }}
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}">
|
{% if options['extended_infos'] %}
|
||||||
{{ _self.raw(address, options, streetLine) }}
|
<span class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}">
|
||||||
</span>
|
{{ _self.raw(lines) }}
|
||||||
|
</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="address{% if options['multiline'] %} multiline{% endif %}{% if options['with_delimiter'] %} delimiter{% endif %}">
|
||||||
|
{% if address.street is not empty %}
|
||||||
|
<p>{{ streetLine }}</p>
|
||||||
|
{% endif %}
|
||||||
|
{% if address.postCode is not empty %}
|
||||||
|
<p class="postcode">
|
||||||
|
<span class="code">{{ address.postCode.code }}</span>
|
||||||
|
<span class="name">{{ address.postCode.name }}</span>
|
||||||
|
<span class="name">{{ address.distribution }}</span>
|
||||||
|
</p>
|
||||||
|
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _self.validity(address, options) }}
|
{{ _self.validity(address, options) }}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
@@ -97,7 +79,7 @@
|
|||||||
{% if options['with_picto'] %}
|
{% if options['with_picto'] %}
|
||||||
<i class="fa fa-li fa-map-marker"></i>
|
<i class="fa fa-li fa-map-marker"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _self.inline(address, options, streetLine) }}
|
{{ _self.inline(address, options, streetLine, lines) }}
|
||||||
</li>
|
</li>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|
||||||
@@ -106,7 +88,7 @@
|
|||||||
{% if options['with_picto'] %}
|
{% if options['with_picto'] %}
|
||||||
<i class="fa fa-fw fa-map-marker"></i>
|
<i class="fa fa-fw fa-map-marker"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _self.inline(address, options, streetLine) }}
|
{{ _self.inline(address, options, streetLine, lines) }}
|
||||||
</span>
|
</span>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|
||||||
@@ -118,6 +100,7 @@
|
|||||||
<p class="postcode">
|
<p class="postcode">
|
||||||
<span class="code">{{ address.postCode.code }}</span>
|
<span class="code">{{ address.postCode.code }}</span>
|
||||||
<span class="name">{{ address.postCode.name }}</span>
|
<span class="name">{{ address.postCode.name }}</span>
|
||||||
|
<span class="name">{{ address.distribution }}</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
|
<p class="country">{{ address.postCode.country.name|localize_translatable_string }}</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -131,7 +114,7 @@
|
|||||||
{% if options['with_picto'] %}
|
{% if options['with_picto'] %}
|
||||||
<i class="fa fa-fw fa-map-marker"></i>
|
<i class="fa fa-fw fa-map-marker"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _self.raw(address, options, streetLine) }}
|
{{ _self.raw(lines) }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _self.validity(address, options) }}
|
{{ _self.validity(address, options) }}
|
||||||
|
@@ -13,6 +13,7 @@ namespace Chill\MainBundle\Serializer\Normalizer;
|
|||||||
|
|
||||||
use Chill\DocGeneratorBundle\Serializer\Helper\NormalizeNullValueHelper;
|
use Chill\DocGeneratorBundle\Serializer\Helper\NormalizeNullValueHelper;
|
||||||
use Chill\MainBundle\Entity\Address;
|
use Chill\MainBundle\Entity\Address;
|
||||||
|
use Chill\MainBundle\Templating\Entity\AddressRender;
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
use Symfony\Component\Serializer\Exception\UnexpectedValueException;
|
use Symfony\Component\Serializer\Exception\UnexpectedValueException;
|
||||||
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
|
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
|
||||||
@@ -46,6 +47,13 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
|
|||||||
'validTo' => DateTimeInterface::class,
|
'validTo' => DateTimeInterface::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private AddressRender $addressRender;
|
||||||
|
|
||||||
|
public function __construct(AddressRender $addressRender)
|
||||||
|
{
|
||||||
|
$this->addressRender = $addressRender;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Address $address
|
* @param Address $address
|
||||||
* @param null|string $format
|
* @param null|string $format
|
||||||
@@ -53,19 +61,10 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
|
|||||||
public function normalize($address, $format = null, array $context = [])
|
public function normalize($address, $format = null, array $context = [])
|
||||||
{
|
{
|
||||||
if ($address instanceof Address) {
|
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 = [
|
$data = [
|
||||||
'address_id' => $address->getId(),
|
'address_id' => $address->getId(),
|
||||||
'text' => $text,
|
'text' => $address->isNoAddress() ? null : $this->addressRender->renderStreetLine($address, []),
|
||||||
'street' => $address->getStreet(),
|
'street' => $address->getStreet(),
|
||||||
'streetNumber' => $address->getStreetNumber(),
|
'streetNumber' => $address->getStreetNumber(),
|
||||||
'postcode' => [
|
'postcode' => [
|
||||||
@@ -85,6 +84,7 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
|
|||||||
'buildingName' => $address->getBuildingName(),
|
'buildingName' => $address->getBuildingName(),
|
||||||
'distribution' => $address->getDistribution(),
|
'distribution' => $address->getDistribution(),
|
||||||
'extra' => $address->getExtra(),
|
'extra' => $address->getExtra(),
|
||||||
|
'lines' => $this->addressRender->renderLines($address),
|
||||||
];
|
];
|
||||||
|
|
||||||
if ('json' === $format) {
|
if ('json' === $format) {
|
||||||
|
@@ -12,7 +12,9 @@ declare(strict_types=1);
|
|||||||
namespace Chill\MainBundle\Templating\Entity;
|
namespace Chill\MainBundle\Templating\Entity;
|
||||||
|
|
||||||
use Chill\MainBundle\Entity\Address;
|
use Chill\MainBundle\Entity\Address;
|
||||||
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
use Symfony\Component\Templating\EngineInterface;
|
use Symfony\Component\Templating\EngineInterface;
|
||||||
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
|
|
||||||
use function array_merge;
|
use function array_merge;
|
||||||
use function strtr;
|
use function strtr;
|
||||||
@@ -30,10 +32,17 @@ class AddressRender implements ChillEntityRenderInterface
|
|||||||
];
|
];
|
||||||
|
|
||||||
private EngineInterface $templating;
|
private EngineInterface $templating;
|
||||||
|
private TranslatableStringHelper $translatableStringHelper;
|
||||||
|
protected ParameterBagInterface $parameterBag;
|
||||||
|
|
||||||
public function __construct(EngineInterface $templating)
|
public function __construct(
|
||||||
{
|
EngineInterface $templating,
|
||||||
|
TranslatableStringHelper $translatableStringHelper,
|
||||||
|
ParameterBagInterface $parameterBag
|
||||||
|
) {
|
||||||
$this->templating = $templating;
|
$this->templating = $templating;
|
||||||
|
$this->translatableStringHelper = $translatableStringHelper;
|
||||||
|
$this->parameterBag = $parameterBag;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,27 +59,45 @@ class AddressRender implements ChillEntityRenderInterface
|
|||||||
'streetLine' => $this->renderStreetLine($addr),
|
'streetLine' => $this->renderStreetLine($addr),
|
||||||
'render' => $options['render'] ?? 'bloc',
|
'render' => $options['render'] ?? 'bloc',
|
||||||
'options' => $options,
|
'options' => $options,
|
||||||
|
'lines' => $this->renderLines($addr),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Address addr
|
||||||
|
* @param mixed $addr
|
||||||
|
*
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function renderLines($addr): array
|
||||||
|
{
|
||||||
|
$lines = [];
|
||||||
|
if (null !== $addr->getPostCode()) {
|
||||||
|
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
|
||||||
|
$lines[] = $this->renderIntraBuildingLine($addr);
|
||||||
|
$lines[] = $this->renderBuildingLine($addr);
|
||||||
|
$lines[] = $this->renderStreetLine($addr);
|
||||||
|
$lines[] = $this->renderDeliveryLine($addr);
|
||||||
|
$lines[] = $this->renderCityLine($addr);
|
||||||
|
$lines[] = $this->renderCountryLine($addr);
|
||||||
|
} else {
|
||||||
|
$lines[] = $this->renderBuildingLine($addr);
|
||||||
|
$lines[] = $this->renderDeliveryLine($addr);
|
||||||
|
$lines[] = $this->renderStreetLine($addr);
|
||||||
|
$lines[] = $this->renderCityLine($addr);
|
||||||
|
$lines[] = $this->renderCountryLine($addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array_values(array_filter($lines, fn ($l) => null !== $l));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Address addr
|
* @param Address addr
|
||||||
* @param mixed $addr
|
* @param mixed $addr
|
||||||
*/
|
*/
|
||||||
public function renderString($addr, array $options): string
|
public function renderString($addr, array $options): string
|
||||||
{
|
{
|
||||||
$lines = [];
|
return implode(' - ', $this->renderLines($addr));
|
||||||
|
|
||||||
$lines[0] = $this->renderStreetLine($addr);
|
|
||||||
|
|
||||||
if (!empty($addr->getPostcode())) {
|
|
||||||
$lines[1] = strtr('{postcode} {label}', [
|
|
||||||
'{postcode}' => $addr->getPostcode()->getCode(),
|
|
||||||
'{label}' => $addr->getPostcode()->getName(),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return implode(' - ', $lines);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function supports($entity, array $options): bool
|
public function supports($entity, array $options): bool
|
||||||
@@ -78,7 +105,7 @@ class AddressRender implements ChillEntityRenderInterface
|
|||||||
return $entity instanceof Address;
|
return $entity instanceof Address;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderStreetLine($addr): string
|
public function renderStreetLine($addr): ?string
|
||||||
{
|
{
|
||||||
if (!empty($addr->getStreet())) {
|
if (!empty($addr->getStreet())) {
|
||||||
$street = $addr->getStreet();
|
$street = $addr->getStreet();
|
||||||
@@ -100,10 +127,107 @@ class AddressRender implements ChillEntityRenderInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (',' === $res) {
|
if ((',' === $res) || ('' === $res)) {
|
||||||
$res = '';
|
$res = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function renderBuildingLine($addr): ?string
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!empty($addr->getBuildingName())) {
|
||||||
|
$building = $addr->getBuildingName();
|
||||||
|
} else {
|
||||||
|
$building = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($this->renderIntraBuildingLine($addr))) {
|
||||||
|
$intraBuilding = $this->renderIntraBuildingLine($addr);
|
||||||
|
} else {
|
||||||
|
$intraBuilding = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = trim($building . ' - ' . $intraBuilding, ' - ');
|
||||||
|
|
||||||
|
if ('' === $res) {
|
||||||
|
$res = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) {
|
||||||
|
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
|
||||||
|
$res = $addr->getBuildingName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderCityLine($addr): string
|
||||||
|
{
|
||||||
|
if (!empty($addr->getPostcode())) {
|
||||||
|
$res = strtr('{postcode} {label}', [
|
||||||
|
'{postcode}' => $addr->getPostcode()->getCode(),
|
||||||
|
'{label}' => $addr->getPostcode()->getName(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) {
|
||||||
|
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
|
||||||
|
if ($addr->getDistribution()) {
|
||||||
|
$res = $res . ' ' . $addr->getDistribution();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderCountryLine($addr): ?string
|
||||||
|
{
|
||||||
|
$preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
|
||||||
|
if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
$res = null;
|
||||||
|
} else {
|
||||||
|
$res = $this->translatableStringHelper->localize(
|
||||||
|
$addr->getPostCode()->getCountry()->getName()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderDeliveryLine($addr): ?string
|
||||||
|
{
|
||||||
|
return $addr->getExtra();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderIntraBuildingLine($addr): ?string
|
||||||
|
{
|
||||||
|
$arr = [];
|
||||||
|
|
||||||
|
if ($addr->getFlat()) {
|
||||||
|
$arr[] = 'appart ' . $addr->getFlat();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($addr->getFloor()) {
|
||||||
|
$arr[] = 'ét ' . $addr->getFloor();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($addr->getCorridor()) {
|
||||||
|
$arr[] = 'coul ' . $addr->getCorridor();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($addr->getSteps()) {
|
||||||
|
$arr[] = 'esc ' . $addr->getSteps();
|
||||||
|
}
|
||||||
|
|
||||||
|
$res = implode(' - ', $arr);
|
||||||
|
if ('' === $res) {
|
||||||
|
$res = null;
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,8 @@ use Chill\MainBundle\Templating\Entity\AddressRender;
|
|||||||
use Iterator;
|
use Iterator;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||||
use Symfony\Component\Templating\EngineInterface;
|
use Symfony\Component\Templating\EngineInterface;
|
||||||
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
@@ -25,16 +27,27 @@ use Symfony\Component\Templating\EngineInterface;
|
|||||||
*/
|
*/
|
||||||
final class AddressRenderTest extends KernelTestCase
|
final class AddressRenderTest extends KernelTestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
protected function setUp(): void
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
self::bootKernel();
|
self::bootKernel();
|
||||||
|
$this->parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
}
|
}
|
||||||
|
// protected function setUp()
|
||||||
|
// {
|
||||||
|
// self::bootKernel();
|
||||||
|
// $this->jWTEncoder = self::$container->get('App\Services\TokenProvider');
|
||||||
|
// }
|
||||||
|
|
||||||
public function addressDataProvider(): Iterator
|
// static::bootKernel();
|
||||||
|
// $container = self::$kernel->getContainer()->get('test.service_container');
|
||||||
|
// $twig = $container->get('twig');
|
||||||
|
|
||||||
|
public function simpleAddressDataProviderBE(): Iterator
|
||||||
{
|
{
|
||||||
$addr = new Address();
|
$addr = new Address();
|
||||||
$country = (new Country())
|
$country = (new Country())
|
||||||
->setName(['fr' => 'Pays'])
|
->setName(['fr' => 'Belgium'])
|
||||||
->setCountryCode('BE');
|
->setCountryCode('BE');
|
||||||
$postCode = new PostalCode();
|
$postCode = new PostalCode();
|
||||||
$postCode->setName('Locality')
|
$postCode->setName('Locality')
|
||||||
@@ -45,20 +58,373 @@ final class AddressRenderTest extends KernelTestCase
|
|||||||
->setStreetNumber('5')
|
->setStreetNumber('5')
|
||||||
->setPostcode($postCode);
|
->setPostcode($postCode);
|
||||||
|
|
||||||
yield [$addr, 'Rue ABC, 5 - 012345 Locality'];
|
$parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
$preferredCountries = $parameterBag->get('chill_main.available_countries');
|
||||||
|
if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
$expected = [$addr, 'Rue ABC, 5 - 012345 Locality'];
|
||||||
|
} else {
|
||||||
|
$expected = [$addr, 'Rue ABC, 5 - 012345 Locality - Belgium'];
|
||||||
|
}
|
||||||
|
yield $expected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function simpleAddressDataProviderFR(): Iterator
|
||||||
|
{
|
||||||
|
$addr = new Address();
|
||||||
|
$country = (new Country())
|
||||||
|
->setName(['fr' => 'France'])
|
||||||
|
->setCountryCode('FR');
|
||||||
|
$postCode = new PostalCode();
|
||||||
|
$postCode->setName('Locality')
|
||||||
|
->setCode('012345')
|
||||||
|
->setCountry($country);
|
||||||
|
|
||||||
|
$addr->setStreet('Rue ABC')
|
||||||
|
->setStreetNumber('5')
|
||||||
|
->setPostcode($postCode);
|
||||||
|
|
||||||
|
$preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
|
||||||
|
if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
$expected = [$addr, '5, Rue ABC - 012345 Locality'];
|
||||||
|
} else {
|
||||||
|
$expected = [$addr, '5, Rue ABC - 012345 Locality - France'];
|
||||||
|
}
|
||||||
|
|
||||||
|
yield $expected;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider addressDataProvider
|
* @dataProvider simpleAddressDataProviderBE
|
||||||
*/
|
*/
|
||||||
public function testRenderString(Address $addr, string $expectedString): void
|
public function testRenderStringSimpleAddressBE(Address $addr, string $expectedString): void
|
||||||
{
|
{
|
||||||
$engine = self::$container->get(EngineInterface::class);
|
$engine = self::$container->get(EngineInterface::class);
|
||||||
$renderer = new AddressRender($engine);
|
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
$parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
$renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
$this->assertIsString($renderer->renderBox($addr, []));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider simpleAddressDataProviderFR
|
||||||
|
*/
|
||||||
|
public function testRenderStringSimpleAddressFR(Address $addr, string $expectedString): void
|
||||||
|
{
|
||||||
|
$engine = self::$container->get(EngineInterface::class);
|
||||||
|
$translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
$parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
$renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
$this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public function complexAddressDataProviderBE(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'Belgium'])
|
||||||
|
// ->setCountryCode('BE');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setStreet('Rue ABC')
|
||||||
|
// ->setStreetNumber('5')
|
||||||
|
// ->setPostcode($postCode);
|
||||||
|
|
||||||
|
// $addr->setBuildingName('Résidence "Les Bleuets"');
|
||||||
|
// $addr->setFlat('1');
|
||||||
|
// $addr->setFloor('2');
|
||||||
|
// $addr->setCorridor('3');
|
||||||
|
// $addr->setSteps('4');
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, 'Résidence "Les Bleuets" - appart 1 - ét 2 - coul 3 - esc 4 - Rue ABC, 5 - 012345 Locality'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, 'Résidence "Les Bleuets" - appart 1 - ét 2 - coul 3 - esc 4 - Rue ABC, 5 - 012345 Locality - Belgium'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// public function complexAddressDataProviderFR(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'France'])
|
||||||
|
// ->setCountryCode('FR');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setStreet('Rue ABC')
|
||||||
|
// ->setStreetNumber('5')
|
||||||
|
// ->setPostcode($postCode);
|
||||||
|
|
||||||
|
// $addr->setBuildingName('Résidence "Les Bleuets"');
|
||||||
|
// $addr->setFlat('1');
|
||||||
|
// $addr->setFloor('2');
|
||||||
|
// $addr->setCorridor('3');
|
||||||
|
// $addr->setSteps('4');
|
||||||
|
// $addr->setExtra('A droite de la porte');
|
||||||
|
// $addr->setDistribution('CEDEX');
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, 'appart 1 - ét 2 - coul 3 - esc 4 - Résidence "Les Bleuets" - 5, Rue ABC - A droite de la porte - 012345 Locality CEDEX'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, 'appart 1 - ét 2 - coul 3 - esc 4 - Résidence "Les Bleuets" - 5, Rue ABC - A droite de la porte - 012345 Locality CEDEX - France'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider complexAddressDataProviderBE
|
||||||
|
// */
|
||||||
|
// public function testRenderComplexAddressBE(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider complexAddressDataProviderFR
|
||||||
|
// */
|
||||||
|
// public function testRenderComplexAddressFR(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// public function addressDataProviderBEWithBuilding(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'Belgium'])
|
||||||
|
// ->setCountryCode('BE');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setStreet('Rue ABC')
|
||||||
|
// ->setStreetNumber('5')
|
||||||
|
// ->setPostcode($postCode);
|
||||||
|
|
||||||
|
// $addr->setBuildingName('Résidence "Les Bleuets"');
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, 'Résidence "Les Bleuets" - Rue ABC, 5 - 012345 Locality'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, 'Résidence "Les Bleuets" - Rue ABC, 5 - 012345 Locality - Belgium'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// public function addressDataProviderFRWithBuilding(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'France'])
|
||||||
|
// ->setCountryCode('FR');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setStreet('Rue ABC')
|
||||||
|
// ->setStreetNumber('5')
|
||||||
|
// ->setPostcode($postCode);
|
||||||
|
|
||||||
|
// $addr->setBuildingName('Résidence "Les Bleuets"');
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, 'Résidence "Les Bleuets" - 5, Rue ABC - 012345 Locality'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, 'Résidence "Les Bleuets" - 5, Rue ABC - 012345 Locality - France'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider addressDataProviderBEWithBuilding
|
||||||
|
// */
|
||||||
|
// public function testRenderWithBuildingAddressBE(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider addressDataProviderFRWithBuilding
|
||||||
|
// */
|
||||||
|
// public function testRenderWithBuildingAddressFR(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public function addressDataProviderBEWithSteps(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'Belgium'])
|
||||||
|
// ->setCountryCode('BE');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setStreet('Rue ABC')
|
||||||
|
// ->setStreetNumber('5')
|
||||||
|
// ->setPostcode($postCode);
|
||||||
|
|
||||||
|
// $addr->setSteps('4');
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, 'esc 4 - Rue ABC, 5 - 012345 Locality'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, 'esc 4 - Rue ABC, 5 - 012345 Locality - Belgium'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// public function addressDataProviderFRWithSteps(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'France'])
|
||||||
|
// ->setCountryCode('FR');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setStreet('Rue ABC')
|
||||||
|
// ->setStreetNumber('5')
|
||||||
|
// ->setPostcode($postCode);
|
||||||
|
|
||||||
|
// $addr->setSteps('4');
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, 'esc 4 - 5, Rue ABC - 012345 Locality'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, 'esc 4 - 5, Rue ABC - 012345 Locality - France'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider addressDataProviderBEWithSteps
|
||||||
|
// */
|
||||||
|
// public function testRenderWithStepsAddressBE(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider addressDataProviderFRWithSteps
|
||||||
|
// */
|
||||||
|
// public function testRenderWithStepsAddressFR(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public function noFullAddressDataProviderBE(): Iterator
|
||||||
|
// {
|
||||||
|
// $addr = new Address();
|
||||||
|
// $country = (new Country())
|
||||||
|
// ->setName(['fr' => 'Belgium'])
|
||||||
|
// ->setCountryCode('BE');
|
||||||
|
// $postCode = new PostalCode();
|
||||||
|
// $postCode->setName('Locality')
|
||||||
|
// ->setCode('012345')
|
||||||
|
// ->setCountry($country);
|
||||||
|
|
||||||
|
// $addr->setPostcode($postCode)
|
||||||
|
// ->setIsNoAddress(true);
|
||||||
|
|
||||||
|
// $preferredCountries = $this->parameterBag->get('chill_main.available_countries');
|
||||||
|
// if (in_array($addr->getPostCode()->getCountry()->getCountryCode(), $preferredCountries)) {
|
||||||
|
// $expected = [$addr, '012345 Locality'];
|
||||||
|
// } else {
|
||||||
|
// $expected = [$addr, '012345 Locality - Belgium'];
|
||||||
|
// }
|
||||||
|
// yield $expected;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @dataProvider noFullAddressDataProviderBE
|
||||||
|
// */
|
||||||
|
// public function testRenderNoFullAddressBE(Address $addr, string $expectedString): void
|
||||||
|
// {
|
||||||
|
// $engine = self::$container->get(EngineInterface::class);
|
||||||
|
// $translatableStringHelper = self::$container->get(TranslatableStringHelper::class);
|
||||||
|
// $parameterBag = self::$container->get(ParameterBagInterface::class);
|
||||||
|
// $renderer = new AddressRender($engine, $translatableStringHelper, $parameterBag);
|
||||||
|
|
||||||
|
// $this->assertEquals($expectedString, $renderer->renderString($addr, []));
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user