<?php
namespace App\Form\GestionComerciale;
use App\DataTransformer\Clients\IdToClientTransformer;
use App\Entity\Adresses\Adresse;
use App\Entity\Clients\Client;
use App\Entity\Clients\ClientCategorie;
use App\Entity\GestionComerciale\Commande;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class AvoirType extends AbstractType
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('totalPoids', HiddenType::class)
->add('commentaire')
->add('client', EntityType::class, [
'multiple' => false,
'attr' => [
'class' => 'select2-hidden-accessible',
],
'class' => Client::class
]);
//$builder->add('referenceClient');
// $builder->get('client')->addModelTransformer(new IdToClientTransformer($this->entityManager));
$formModifier = function (FormInterface $form, Client $client = null) {
$adresses = null === $client ? [] : $client->getAdresses();
$pro = "0";
if (is_object($client)) {
$repo_client_categorie = $this->entityManager->getRepository(ClientCategorie::class);
$premiere_categorie = $repo_client_categorie->getCategorieRacinePourClient($client);
if ( ! is_object($premiere_categorie)) {
$pro = "0";
} elseif ( ! is_object($premiere_categorie->getCategorie())) {
$pro = "0";
} elseif ( ! $premiere_categorie->getCategorie()->getProfessionnel()) {
$pro = "0";
} else {
$pro = "1";
}
}
$dataTva = 1;
$dataAtributes = [];
foreach ($adresses as $a) {
$paysUe = "0";
if (is_object($a->getPays())) {
if ($a->getPays()->getId() != "370095" && $a->getPays()->getEurope()) {
$paysUe = "1";
}
if ($pro == 1 && $a->getPays()->getId() != "370095") {
$dataTva = 0;
}
if ($pro == 0 && $a->getPays()->getEurope() == false) {
$dataTva = 0;
}
}
$dataTva = 1;
if (is_object($client->getCompta()) && $client->getCompta()->getTva() == 0) {
// echo "eeee";
$dataTva = 0;
}
$adrTab = ['data-pro' => $pro, 'data-ue' => $paysUe, 'data-tva' => $dataTva];
$dataAtributes[] = $adrTab;
}
$form->add('adresseLivraison', EntityType::class, [
'class' => Adresse::class,
'placeholder' => '',
'choices' => $adresses,
'choice_attr' => $dataAtributes,
]);
$form->add('adresseFacturation', EntityType::class, [
'class' => Adresse::class,
'placeholder' => '',
'choices' => $adresses,
'choice_attr' => $dataAtributes,
]);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
// this would be your entity, i.e. SportMeetup
$data = $event->getData();
$formModifier($event->getForm(), $data->getClient());
}
);
$builder->get('client')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
// It's important here to fetch $event->getForm()->getData(), as
// $event->getData() will get you the client data (that is, the ID)
$client = $event->getForm()->getData();
// since we've added the listener to the child, we'll have to pass on
// the parent to the callback functions!
$formModifier($event->getForm()->getParent(), $client);
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Commande::class,
]);
}
public function getName()
{
return 'dtc_gestioncomercialebundle_commande';
//return 'dtc_gestioncomercialebundle_ordre_reparation';
}
public function getBlockPrefix():string
{
return 'dtc_gestioncomercialebundle_commande';
}
}