src/Form/Type/ProspectDateJoinFormType.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Form\Type;
  3. use App\Entity\Customer;
  4. use App\Form\DataTransformer\DateTransformer;
  5. use App\Manager\RoleManager;
  6. use Psr\Container\ContainerInterface;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\DateType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Form\FormEvents;
  14. use Symfony\Component\HttpFoundation\RequestStack;
  15. class ProspectDateJoinFormType extends AbstractType
  16. {
  17.     private $container;
  18.     protected $requestStack;
  19.     public function __construct(ContainerInterface $containerRequestStack $requestStack) {
  20.         $this->container $container;
  21.         $this->requestStack $requestStack;
  22.     }
  23.     /**
  24.      * @param FormBuilderInterface $builder
  25.      * @param array $options
  26.      */
  27.     public function buildForm(FormBuilderInterface $builder, array $options)
  28.     {
  29.         $session $this->container->get('session');
  30.         $locale $this->requestStack->getCurrentRequest()->getLocale();
  31.         $customerName 'Customer';
  32.         if($locale == 'fr'){
  33.             $customerName 'Client';
  34.         }
  35.         $customer_id $session->get('added_customer');
  36.         $customer $options['data'];
  37.         
  38.         $name is_object($customer) ? sprintf($customerName.' %s: %s %s',
  39.                 $customer->getSlotNumber(),
  40.                 $customer->getFirstName(),
  41.                 $customer->getLastName()): "";
  42.         $builder
  43.             ->add('dateJoinNetwork'DateType::class, [
  44.                 'disabled' => ($options['status'] === 'network' && $customer->getId() === $customer_id)
  45.                     || $options['checker']->isGranted(RoleManager::ROLE_SUPER_ADMIN) ? false :
  46.                     ($options['checker']->isGranted(RoleManager::ROLE_EQUIPE) && $options['status'] === 'project' false true ),
  47.                 'label' => $name,
  48.                 'required' => false,
  49.                 'widget' => 'choice',
  50.             ])
  51.             ->add('slotNumber'ChoiceType::class, [
  52.                 'disabled' => $options['status'] === 'network' true :
  53.                     (!$options['checker']->isGranted(RoleManager::ROLE_EQUIPE) ? true false),
  54.                 'choices' => [
  55.                     => 1,
  56.                     => 2,
  57.                     => 3,
  58.                     => 4,
  59.                     => 5,
  60.                     => 6
  61.                 ],
  62.                 'label' => 'Position in the network',
  63.                 'attr' => ['class' => 'slotNumber']
  64.             ])
  65.             ->add('hasBattery'CheckboxType::class, [
  66.                 'label'    => 'Battery',
  67.                 'required' => false,
  68.                 'attr' => ['class'=>'single-checkbox''data-set' => $customer->getId()]
  69.             ])
  70.         ;
  71.         $builder->get('dateJoinNetwork')->addModelTransformer(new DateTransformer());
  72.     }
  73.     
  74.     /**
  75.      * @param OptionsResolver $resolver
  76.      */
  77.     public function configureOptions(OptionsResolver $resolver)
  78.     {
  79.         $resolver
  80.             ->setDefaults([
  81.                 'data_class' => Customer::class,
  82.                 'checker' =>  null,
  83.                 'status' => null
  84.             ])
  85.         ;
  86.     }
  87.     /**
  88.      * @return string
  89.      */
  90.     public function getBlockPrefix()
  91.     {
  92.         return 'ProspectDateJoinFormType';
  93.     }
  94. }