Add other phone number

This commit is contained in:
Jean-Francois Monfort 2021-03-25 17:41:37 +01:00
parent 756ed616b6
commit 068b269af9
3 changed files with 21 additions and 4 deletions

View File

@ -141,7 +141,14 @@ class PhonenumberHelper
return \in_array($validation, [ 'landline', 'voip', 'mobile' ]); 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); return $this->performTwilioLookup($phonenumber);
} }

View File

@ -4,6 +4,7 @@ namespace Chill\PersonBundle\Form\Type;
use Chill\MainBundle\Phonenumber\PhonenumberHelper; use Chill\MainBundle\Phonenumber\PhonenumberHelper;
use Chill\PersonBundle\Entity\PersonPhone; use Chill\PersonBundle\Entity\PersonPhone;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TelType; use Symfony\Component\Form\Extension\Core\Type\TelType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
@ -18,9 +19,12 @@ class PersonPhoneType extends AbstractType
{ {
private PhonenumberHelper $phonenumberHelper; private PhonenumberHelper $phonenumberHelper;
public function __construct(PhonenumberHelper $phonenumberHelper) private EntityManagerInterface $em;
public function __construct(PhonenumberHelper $phonenumberHelper, EntityManagerInterface $em)
{ {
$this->phonenumberHelper = $phonenumberHelper; $this->phonenumberHelper = $phonenumberHelper;
$this->em = $em;
} }
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
@ -35,8 +39,13 @@ class PersonPhoneType extends AbstractType
]); ]);
$builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $event) { $builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $event) {
$type = $this->phonenumberHelper->type($event->getData()->getPhonenumber()); $oldPersonPhone = $this->em->getUnitOfWork()
$event->getData()->setType($type); ->getOriginalEntityData($event->getData());
if ($oldPersonPhone['phonenumber'] !== $event->getForm()->getData()->getPhonenumber()) {
$type = $this->phonenumberHelper->getType($event->getData()->getPhonenumber());
$event->getData()->setType($type);
}
}); });
} }

View File

@ -50,5 +50,6 @@ services:
Chill\PersonBundle\Form\Type\PersonPhoneType: Chill\PersonBundle\Form\Type\PersonPhoneType:
arguments: arguments:
$phonenumberHelper: '@Chill\MainBundle\Phonenumber\PhonenumberHelper' $phonenumberHelper: '@Chill\MainBundle\Phonenumber\PhonenumberHelper'
$em: '@Doctrine\ORM\EntityManagerInterface'
tags: tags:
- { name: form.type } - { name: form.type }