src/Form/EventSubscribe/Billing/EventInvoiceUpdate.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Form\EventSubscribe\Billing;
  3. use App\Form\Billing\InvoiceAcceptLeadType;
  4. use App\Form\Billing\InvoiceBlacklistLeadType;
  5. use App\Form\Billing\InvoiceLeadType;
  6. use App\Form\Billing\InvoicePingDnpInternalType;
  7. use App\Form\Billing\InvoicePingDnpPingType;
  8. use App\Form\Billing\InvoicePingFilterAttemptType;
  9. use App\Form\Billing\InvoicePingIncomingInNetworkType;
  10. use App\Form\Billing\InvoicePingIncomingOutNetworkType;
  11. use App\Form\Billing\InvoicePingIncomingType;
  12. use App\Form\Billing\InvoicePingOutgoingInNetworkType;
  13. use App\Form\Billing\InvoicePingOutgoingOutNetworkType;
  14. use App\Form\Billing\InvoicePingOutgoingType;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  17. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  18. use Symfony\Component\Form\FormEvent;
  19. use Symfony\Component\Form\FormEvents;
  20. use Symfony\Component\Validator\Constraints\GreaterThanOrEqual;
  21. class EventInvoiceUpdate implements EventSubscriberInterface
  22. {
  23.     public static function getSubscribedEvents(): array
  24.     {
  25.         return array(
  26.             FormEvents::PRE_SUBMIT => 'preSubmit'
  27.         );
  28.     }
  29.     public function preSubmit(FormEvent $event)
  30.     {
  31.         $form $event->getForm();
  32.         $data $event->getData();
  33.         $newField $data['newFields'] ?? null;
  34.         $selectOption = [];
  35.         if ($newField == 'monthly_base' || isset($data['monthly_base'])) {
  36.             $form->add(
  37.                 'monthly_base',
  38.                 NumberType::class,
  39.                 [
  40.                     'attr' => [
  41.                         'class' => 'form-control'
  42.                     ],
  43.                     'mapped' => false,
  44.                     'scale' => 2,
  45.                     'constraints' => [
  46.                         new GreaterThanOrEqual(['value' => 0])
  47.                     ]
  48.                 ]
  49.             );
  50.             $selectOption['Monthly base'] = ['disabled' => 'disabled'];
  51.         } else {
  52.             $form->remove('monthly_base');
  53.         }
  54.         if ($newField == 'conversion_analytic' || isset($data['conversion_analytic'])) {
  55.             $form->add(
  56.                 'conversion_analytic',
  57.                 NumberType::class, [
  58.                     'attr' => [
  59.                         'class' => 'form-control'
  60.                     ],
  61.                     'mapped' => false,
  62.                     'scale' => 2,
  63.                     'constraints' => [
  64.                         new GreaterThanOrEqual(['value' => 0])
  65.                     ]
  66.                 ]
  67.             );
  68.         } else {
  69.             $form->remove('conversion_analytic');
  70.         }
  71.         $selectOption['Conversion analytics'] = ['disabled' => 'disabled'];
  72.         if ($newField == 'lead' || isset($data['lead'])) {
  73.             $form->add(
  74.                 'lead',
  75.                 InvoiceLeadType::class, [
  76.                     'label' => false,
  77.                     'mapped' => false
  78.                 ]
  79.             );
  80.             $selectOption['Lead'] = ['disabled' => 'disabled'];
  81.         } else {
  82.             $form->remove('lead');
  83.         }
  84.         if ($newField == 'accept_lead' || isset($data['accept_lead'])) {
  85.             $form->add(
  86.                 'accept_lead',
  87.                 InvoiceAcceptLeadType::class, [
  88.                     'label' => false,
  89.                     'mapped' => false
  90.                 ]
  91.             );
  92.             $selectOption['Accept Lead'] = ['disabled' => 'disabled'];
  93.         } else {
  94.             $form->remove('accept_lead');
  95.         }
  96.         if ($newField == 'blacklist_lead' || isset($data['blacklist_lead'])) {
  97.             $form->add(
  98.                 'blacklist_lead',
  99.                 InvoiceBlacklistLeadType::class, [
  100.                     'label' => false,
  101.                     'mapped' => false
  102.                 ]
  103.             );
  104.             $selectOption['Blacklist Lead'] = ['disabled' => 'disabled'];
  105.         } else {
  106.             $form->remove('blacklist_lead');
  107.         }
  108.         if ($newField == 'outgoing_ping_total' || isset($data['outgoing_ping_total'])) {
  109.             $form->add(
  110.                 'outgoing_ping_total',
  111.                 InvoicePingOutgoingType::class,
  112.                 [
  113.                     'label' => false,
  114.                     'mapped' => false
  115.                 ]
  116.             );
  117.             $selectOption['Outgoing ping (Total)'] = ['disabled' => 'disabled'];
  118.         } else {
  119.             $form->remove('outgoing_ping_total');
  120.         }
  121.         if ($newField == 'outgoing_ping_in_network' || isset($data['outgoing_ping_in_network'])) {
  122.             $form->add(
  123.                 'outgoing_ping_in_network',
  124.                 InvoicePingOutgoingInNetworkType::class, [
  125.                     'label' => false,
  126.                     'mapped' => false
  127.                 ]
  128.             );
  129.             $selectOption['Outgoing ping (InNetwork)'] = ['disabled' => 'disabled'];
  130.         } else {
  131.             $form->remove('outgoing_ping_in_network');
  132.         }
  133.         if ($newField == 'outgoing_ping_out_network' || isset($data['outgoing_ping_out_network'])) {
  134.             $form->add(
  135.                 'outgoing_ping_out_network',
  136.                 InvoicePingOutgoingOutNetworkType::class, [
  137.                     'label' => false,
  138.                     'mapped' => false
  139.                 ]
  140.             );
  141.             $selectOption['Outgoing ping (OutNetwork)'] = ['disabled' => 'disabled'];
  142.         } else {
  143.             $form->remove('outgoing_ping_out_network');
  144.         }
  145.         if ($newField == 'incoming_ping_total' || isset($data['incoming_ping_total'])) {
  146.             $form->add(
  147.                 'incoming_ping_total',
  148.                 InvoicePingIncomingType::class, [
  149.                     'label' => false,
  150.                     'mapped' => false
  151.                 ]
  152.             );
  153.             $selectOption['Incoming ping'] = ['disabled' => 'disabled'];
  154.         } else {
  155.             $form->remove('incoming_ping_total');
  156.         }
  157.         if ($newField == 'incoming_ping_in_network' || isset($data['incoming_ping_in_network'])) {
  158.             $form->add(
  159.                 'incoming_ping_in_network',
  160.                 InvoicePingIncomingInNetworkType::class, [
  161.                     'label' => false,
  162.                     'mapped' => false
  163.                 ]
  164.             );
  165.             $selectOption['Incoming ping (InNetwork)'] = ['disabled' => 'disabled'];
  166.         } else {
  167.             $form->remove('incoming_ping_in_network');
  168.         }
  169.         if ($newField == 'incoming_ping_out_network' || isset($data['incoming_ping_out_network'])) {
  170.             $form->add(
  171.                 'incoming_ping_out_network',
  172.                 InvoicePingIncomingOutNetworkType::class, [
  173.                     'label' => false,
  174.                     'mapped' => false
  175.                 ]
  176.             );
  177.             $selectOption['Incoming ping (InNetwork)'] = ['disabled' => 'disabled'];
  178.         } else {
  179.             $form->remove('incoming_ping_out_network');
  180.         }
  181.         if ($newField == 'dnp_internal' || isset($data['dnp_internal'])) {
  182.             $form->add(
  183.                 'dnp_internal',
  184.                 InvoicePingDnpInternalType::class,
  185.                 [
  186.                     'label' => false,
  187.                     'mapped' => false
  188.                 ]
  189.             );
  190.             $selectOption['DNP Internal'] = ['disabled' => 'disabled'];
  191.         } else {
  192.             $form->remove('dnp_internal');
  193.         }
  194.         if ($newField == 'dnp_ping' || isset($data['dnp_ping'])) {
  195.             $form->add(
  196.                 'dnp_ping',
  197.                 InvoicePingDnpPingType::class, [
  198.                     'label' => false,
  199.                     'mapped' => false
  200.                 ]
  201.             );
  202.             $selectOption['DNP Ping'] = ['disabled' => 'disabled'];
  203.         } else {
  204.             $form->remove('dnp_ping');
  205.         }
  206.         if ($newField == 'filter_attempts' || isset($data['filter_attempts'])) {
  207.             $form->add(
  208.                 'filter_attempts',
  209.                 InvoicePingFilterAttemptType::class, [
  210.                     'label' => false,
  211.                     'mapped' => false
  212.                 ]
  213.             );
  214.             $selectOption['Filter Attempts'] = ['disabled' => 'disabled'];
  215.         } else {
  216.             $form->remove('filter_attempts');
  217.         }
  218.         $form->add('newFields'ChoiceType::class, [
  219.             'multiple' => false,
  220.             'expanded' => false,
  221.             'choices' => [
  222.                 'Select' => 'select',
  223.                 'Monthly base' => 'monthly_base',
  224.                 'Conversion analytics' => 'conversion_analytic',
  225.                 'Lead' => 'lead',
  226.                 'Accept Lead' => 'accept_lead',
  227.                 'Outgoing ping (Total)' => 'outgoing_ping_total',
  228.                 'Outgoing ping (InNetwork)' => 'outgoing_ping_in_network',
  229.                 'Outgoing ping (OutNetwork)' => 'outgoing_ping_out_network',
  230.                 'Incoming ping (Total)' => 'incoming_ping_total',
  231.                 'Incoming ping (InNetwork)' => 'incoming_ping_in_network',
  232.                 'Incoming ping (OutNetwork)' => 'incoming_ping_out_network',
  233.                 'DNP Internal' => 'dnp_internal',
  234.                 'DNP Ping' => 'dnp_ping',
  235.                 'Filter Attempts' => 'filter_attempts',
  236.                 'Other' => 'other'
  237.             ],
  238.             'choice_attr' => $selectOption,
  239.             'attr' => [
  240.                 'class' => 'select',
  241.                 'data-width' => '100%',
  242.             ],
  243.             'mapped' => false,
  244.         ]);
  245.     }
  246. }