From 068b269af9374638eb586ae7dce6fa95ecd863db Mon Sep 17 00:00:00 2001 From: Jean-Francois Monfort Date: Thu, 25 Mar 2021 17:41:37 +0100 Subject: [PATCH] Add other phone number --- .../Phonenumber/PhonenumberHelper.php | 9 ++++++++- .../Form/Type/PersonPhoneType.php | 15 ++++++++++++--- .../ChillPersonBundle/config/services/form.yaml | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php b/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php index 70fb7ed3a..9f2787abb 100644 --- a/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php +++ b/src/Bundle/ChillMainBundle/Phonenumber/PhonenumberHelper.php @@ -141,7 +141,14 @@ class PhonenumberHelper return \in_array($validation, [ 'landline', 'voip', 'mobile' ]); } - public function type(string $phonenumber): string + /** + * Get type (mobile, landline, ...) for phone number + * + * @param string $phonenumber + * + * @return string + */ + public function getType(string $phonenumber): string { return $this->performTwilioLookup($phonenumber); } diff --git a/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php b/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php index b96f7b2b0..63f4fbf4f 100644 --- a/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php +++ b/src/Bundle/ChillPersonBundle/Form/Type/PersonPhoneType.php @@ -4,6 +4,7 @@ namespace Chill\PersonBundle\Form\Type; use Chill\MainBundle\Phonenumber\PhonenumberHelper; use Chill\PersonBundle\Entity\PersonPhone; +use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TelType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -18,9 +19,12 @@ class PersonPhoneType extends AbstractType { private PhonenumberHelper $phonenumberHelper; - public function __construct(PhonenumberHelper $phonenumberHelper) + private EntityManagerInterface $em; + + public function __construct(PhonenumberHelper $phonenumberHelper, EntityManagerInterface $em) { $this->phonenumberHelper = $phonenumberHelper; + $this->em = $em; } public function buildForm(FormBuilderInterface $builder, array $options) @@ -35,8 +39,13 @@ class PersonPhoneType extends AbstractType ]); $builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $event) { - $type = $this->phonenumberHelper->type($event->getData()->getPhonenumber()); - $event->getData()->setType($type); + $oldPersonPhone = $this->em->getUnitOfWork() + ->getOriginalEntityData($event->getData()); + + if ($oldPersonPhone['phonenumber'] !== $event->getForm()->getData()->getPhonenumber()) { + $type = $this->phonenumberHelper->getType($event->getData()->getPhonenumber()); + $event->getData()->setType($type); + } }); } diff --git a/src/Bundle/ChillPersonBundle/config/services/form.yaml b/src/Bundle/ChillPersonBundle/config/services/form.yaml index 05991ffe9..3b2a1095d 100644 --- a/src/Bundle/ChillPersonBundle/config/services/form.yaml +++ b/src/Bundle/ChillPersonBundle/config/services/form.yaml @@ -50,5 +50,6 @@ services: Chill\PersonBundle\Form\Type\PersonPhoneType: arguments: $phonenumberHelper: '@Chill\MainBundle\Phonenumber\PhonenumberHelper' + $em: '@Doctrine\ORM\EntityManagerInterface' tags: - { name: form.type }