src\Form\UserSurvey\SimulationType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form\UserSurvey;
  3. use App\Entity\TaxRectificationRequest;
  4. use App\Entity\UserSurvey;
  5. use App\Form\Type\RadioBtnType;
  6. use App\Form\Type\SwitchType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  9. use Symfony\Component\Form\AbstractType;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Form\Extension\Core\Type\MoneyType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  13. use Symfony\Component\Form\FormBuilderInterface;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class SimulationType extends AbstractType
  16. {
  17.     private EntityManagerInterface $em;
  18.     public function __construct(EntityManagerInterface $em)
  19.     {
  20.         $this->em $em;
  21.     }
  22.     public function buildForm(FormBuilderInterface $builder, array $options): void
  23.     {
  24.         $taxRecifications $this->em->getRepository(TaxRectificationRequest::class)->createQueryBuilder('trr')
  25.             ->andWhere('trr.code != :code')
  26.             ->setParameter(':code''PIT_ONLINE_FR')
  27.             ->getQuery()->getResult();
  28.         $builder
  29.             ->add('resultComment'TextareaType::class, [
  30.                 'label' => false,
  31.                 'required' => false,
  32.                 'row_attr' => [
  33.                     'class' => 'input-group input-group-dynamic my-3',
  34.                 ],
  35.                 'attr' => [
  36.                     'placeholder' => 'Commentaires sur conseil',
  37.                 ],
  38.             ])
  39.             ->add('resultCode'ChoiceType::class, [
  40.                 'label' => 'Conseil (Résultat)',
  41.                 'choices' => [
  42.                     'Pas avantageux' => 'PA',
  43.                     'TOU (Quasi-résident)' => 'QR',
  44.                     'DRIS (Rectification Impôt Source)' => 'RS',
  45.                     'Rendez-vous Conseil' => 'RC',
  46.                 ],
  47.                 'required' => false,
  48.                 'empty_data' => '',
  49.                 'row_attr' => [
  50.                     'class' => 'input-group input-group-static mb-4 my-3',
  51.                 ],
  52.             ])
  53.             ->add('resultIS'MoneyType::class, [
  54.                 'label' => 'Impôt de base (IS)',
  55.                 'required' => false,
  56.                 'attr' => ['min' => 0'class' => 'h-40'],
  57.                 'row_attr' => [
  58.                     'class' => 'input-group input-group-static my-3',
  59.                 ],
  60.             ])
  61.             ->add('resultQR'MoneyType::class, [
  62.                 'label' => 'TOU (Quasi-résident)',
  63.                 'required' => false,
  64.                 'attr' => ['min' => 0'class' => 'h-40'],
  65.                 'row_attr' => [
  66.                     'class' => 'input-group input-group-static my-3',
  67.                 ],
  68.             ])
  69.             ->add('resultRS'MoneyType::class, [
  70.                 'label' => 'DRIS (Rectification Impôt Source)',
  71.                 'required' => false,
  72.                 'attr' => ['min' => 0'class' => 'h-40'],
  73.                 'row_attr' => [
  74.                     'class' => 'input-group input-group-static my-3',
  75.                 ],
  76.             ]);
  77.         if ($options['with_afc_request']) {
  78.             $builder
  79.                 ->add('hasAFCRequested'RadioBtnType::class, [
  80.                     'label' => 'Demande de choix à l\'AFC déposée ?',
  81.                     'required' => false,
  82.                     'choices' => [
  83.                         'Oui' => true,
  84.                         'Non' => false,
  85.                     ],
  86.                     'expanded' => true,
  87.                     'multiple' => false,
  88.                     'row_attr' => [
  89.                         'class' => 'mb-4',
  90.                     ],
  91.                     'attr' => [
  92.                         'class' => 'btn-radio-info',
  93.                     ],
  94.                 ])
  95.                 ->add('taxRectificationRequest'EntityType::class, [
  96.                     'class' => TaxRectificationRequest::class,
  97.                     'label' => 'Demande de rectification d\'impôt',
  98.                     'choice_label' => 'title',
  99.                     'choices' => $taxRecifications,
  100.                     'required' => false,
  101.                     'empty_data' => '',
  102.                     'placeholder' => '',
  103.                     'row_attr' => [
  104.                         'class' => 'input-group input-group-static mb-4',
  105.                     ],
  106.                 ]);
  107.         }
  108.         $builder
  109.             ->add('statusChange'SwitchType::class, [
  110.                 'mapped' => false,
  111.                 'required' => false,
  112.                 'label' => 'Changer le statut en "Terminé"',
  113.                 'value' => true,
  114.             ])
  115.             ->add('switchToPaid'SwitchType::class, [
  116.                 'mapped' => false,
  117.                 'required' => false,
  118.                 'label' => 'Passer en "Payé"',
  119.                 'value' => false,
  120.             ])
  121.             ->add('sendMail'SwitchType::class, [
  122.                 'mapped' => false,
  123.                 'required' => false,
  124.                 'label' => 'Prévenir Le client',
  125.                 'value' => true,
  126.             ]);
  127.     }
  128.     public function configureOptions(OptionsResolver $resolver): void
  129.     {
  130.         $resolver->setDefaults([
  131.             'with_afc_request' => true,
  132.             'data_class' => UserSurvey::class,
  133.             'validation_groups' => null,
  134.             'csrf_protection' => true,
  135.             'csrf_token_id' => 'front_update_item',
  136.             'csrf_field_name' => 'front_update_token',
  137.         ]);
  138.     }
  139. }