From 03471a74fedc0ac451d8ceb395e14308df1bf509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Sun, 6 Mar 2022 22:28:33 +0100 Subject: [PATCH] fix creating alt phonenumber --- .../Phonenumber/PhoneNumberHelperInterface.php | 2 +- .../Phonenumber/PhonenumberHelper.php | 13 +++++++++++-- src/Bundle/ChillPersonBundle/Entity/PersonPhone.php | 3 ++- src/Bundle/ChillPersonBundle/Form/PersonType.php | 3 ++- .../ChillPersonBundle/Form/Type/PersonPhoneType.php | 3 ++- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Bundle/ChillMainBundle/Phonenumber/PhoneNumberHelperInterface.php b/src/Bundle/ChillMainBundle/Phonenumber/PhoneNumberHelperInterface.php index eeab9c38d..1ed67d967 100644 --- a/src/Bundle/ChillMainBundle/Phonenumber/PhoneNumberHelperInterface.php +++ b/src/Bundle/ChillMainBundle/Phonenumber/PhoneNumberHelperInterface.php @@ -27,7 +27,7 @@ interface PhoneNumberHelperInterface /** * Get type (mobile, landline, ...) for phone number. */ - public function getType(string $phonenumber): string; + public function getType(PhoneNumber $phonenumber): string; /** * Return true if the validation is configured and available. diff --git a/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php b/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php index c73b3dc95..8fdaf2596 100644 --- a/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php +++ b/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php @@ -17,6 +17,7 @@ use GuzzleHttp\Exception\ConnectException; use GuzzleHttp\Exception\ServerException; use libphonenumber\NumberParseException; use libphonenumber\PhoneNumber; +use libphonenumber\PhoneNumberType; use libphonenumber\PhoneNumberUtil; use Psr\Cache\CacheItemPoolInterface; use Psr\Log\LoggerInterface; @@ -86,9 +87,17 @@ final class PhonenumberHelper implements PhoneNumberHelperInterface /** * Get type (mobile, landline, ...) for phone number. */ - public function getType(string $phonenumber): string + public function getType(PhoneNumber $phonenumber): string { - return $this->performTwilioLookup($phonenumber) ?? 'unknown'; + switch ($this->phoneNumberUtil->getNumberType($phonenumber)) { + case PhoneNumberType::MOBILE: + return 'mobile'; + case PhoneNumberType::FIXED_LINE: + case PhoneNumberType::VOIP: + return 'landline'; + default: + return 'landline'; + } } /** diff --git a/src/Bundle/ChillPersonBundle/Entity/PersonPhone.php b/src/Bundle/ChillPersonBundle/Entity/PersonPhone.php index f33646f09..7d0bce1ff 100644 --- a/src/Bundle/ChillPersonBundle/Entity/PersonPhone.php +++ b/src/Bundle/ChillPersonBundle/Entity/PersonPhone.php @@ -98,7 +98,8 @@ class PersonPhone public function isEmpty(): bool { - return empty($this->getDescription()) && empty($this->getPhonenumber()); + return ("" === $this->getDescription() || null === $this->getDescription()) + && null === $this->getPhonenumber(); } public function setDate(DateTime $date): void diff --git a/src/Bundle/ChillPersonBundle/Form/PersonType.php b/src/Bundle/ChillPersonBundle/Form/PersonType.php index acc65c6ac..68ebd3ef4 100644 --- a/src/Bundle/ChillPersonBundle/Form/PersonType.php +++ b/src/Bundle/ChillPersonBundle/Form/PersonType.php @@ -27,6 +27,7 @@ use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\PersonPhone; use Chill\PersonBundle\Form\Type\GenderType; use Chill\PersonBundle\Form\Type\PersonAltNameType; +use Chill\PersonBundle\Form\Type\PersonPhoneType; use Chill\PersonBundle\Form\Type\Select2MaritalStatusType; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\Form\AbstractType; @@ -158,7 +159,7 @@ class PersonType extends AbstractType } $builder->add('otherPhoneNumbers', ChillCollectionType::class, [ - 'entry_type' => ChillPhoneNumberType::class, + 'entry_type' => PersonPhoneType::class, 'button_add_label' => 'Add new phone', 'button_remove_label' => 'Remove phone', 'required' => false, diff --git a/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php b/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php index 00243349f..1910d4605 100644 --- a/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php +++ b/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php @@ -11,6 +11,7 @@ declare(strict_types=1); namespace Chill\PersonBundle\Form\Type; +use Chill\MainBundle\Form\Type\ChillPhoneNumberType; use Chill\MainBundle\Phonenumber\PhonenumberHelper; use Chill\PersonBundle\Entity\PersonPhone; use Doctrine\ORM\EntityManagerInterface; @@ -36,7 +37,7 @@ class PersonPhoneType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->add('phonenumber', TelType::class, [ + $builder->add('phonenumber', ChillPhoneNumberType::class, [ 'label' => 'Other phonenumber', 'required' => true, ]);