src/Form/EventSubscribe/Billing/EventInvoiceCreate.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 EventInvoiceCreate 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.         $data $event->getData();
  32.         $form $event->getForm();
  33.         $new_field $data['newFields'] ?? null;
  34.         $select_option = [];
  35.         if ($new_field == '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.             $select_option['Monthly base'] = ['disabled' => 'disabled'];
  51.         }
  52.         if ($new_field == 'conversion_analytic' || isset($data['conversion_analytic'])) {
  53.             $form->add(
  54.                 'conversion_analytic',
  55.                 NumberType::class,
  56.                 [
  57.                     'attr' => [
  58.                         'class' => 'form-control'
  59.                     ],
  60.                     'mapped' => false,
  61.                     'scale' => 2,
  62.                     'constraints' => [
  63.                         new GreaterThanOrEqual(['value' => 0])
  64.                     ]
  65.                 ]
  66.             );
  67.         }
  68.         $select_option['Conversion analytics'] = ['disabled' => 'disabled'];
  69.         if ($new_field == 'lead' || isset($data['lead'])) {
  70.             $form->add(
  71.                 'lead',
  72.                 InvoiceLeadType::class,
  73.                 [
  74.                     'label' => false,
  75.                     'mapped' => false
  76.                 ]
  77.             );
  78.             $select_option['Lead'] = ['disabled' => 'disabled'];
  79.         }
  80.         if ($new_field == 'accept_lead' || isset($data['accept_lead'])) {
  81.             $form->add(
  82.                 'accept_lead',
  83.                 InvoiceAcceptLeadType::class,
  84.                 [
  85.                     'label' => false,
  86.                     'mapped' => false
  87.                 ]
  88.             );
  89.             $select_option['Accept Lead'] = ['disabled' => 'disabled'];
  90.         }
  91.         if ($new_field == 'blacklist_lead' || isset($data['blacklist_lead'])) {
  92.             $form->add(
  93.                 'blacklist_lead',
  94.                 InvoiceBlacklistLeadType::class,
  95.                 [
  96.                     'label' => false,
  97.                     'mapped' => false
  98.                 ]
  99.             );
  100.             $select_option['Blacklist Lead'] = ['disabled' => 'disabled'];
  101.         }
  102.         if ($new_field == 'outgoing_ping_total' || isset($data['outgoing_ping_total'])) {
  103.             $form->add(
  104.                 'outgoing_ping_total',
  105.                 InvoicePingOutgoingType::class,
  106.                 [
  107.                     'label' => false,
  108.                     'mapped' => false
  109.                 ]
  110.             );
  111.             $select_option['Outgoing ping (Total)'] = ['disabled' => 'disabled'];
  112.         }
  113.         if ($new_field == 'outgoing_ping_in_network' || isset($data['outgoing_ping_in_network'])) {
  114.             $form->add(
  115.                 'outgoing_ping_in_network',
  116.                 InvoicePingOutgoingInNetworkType::class,
  117.                 [
  118.                     'label' => false,
  119.                     'mapped' => false
  120.                 ]
  121.             );
  122.             $select_option['Outgoing ping (InNetwork)'] = ['disabled' => 'disabled'];
  123.         }
  124.         if ($new_field == 'outgoing_ping_out_network' || isset($data['outgoing_ping_out_network'])) {
  125.             $form->add(
  126.                 'outgoing_ping_out_network',
  127.                 InvoicePingOutgoingOutNetworkType::class,
  128.                 [
  129.                     'label' => false,
  130.                     'mapped' => false
  131.                 ]
  132.             );
  133.             $select_option['Outgoing ping (OutNetwork)'] = ['disabled' => 'disabled'];
  134.         }
  135.         if ($new_field == 'incoming_ping_total' || isset($data['incoming_ping_total'])) {
  136.             $form->add(
  137.                 'incoming_ping_total',
  138.                 InvoicePingIncomingType::class,
  139.                 [
  140.                     'label' => false,
  141.                     'mapped' => false
  142.                 ]
  143.             );
  144.             $select_option['Incoming ping (Total)'] = ['disabled' => 'disabled'];
  145.         }
  146.         if ($new_field == 'incoming_ping_in_network' || isset($data['incoming_ping_in_network'])) {
  147.             $form->add(
  148.                 'incoming_ping_in_network',
  149.                 InvoicePingIncomingInNetworkType::class,
  150.                 [
  151.                     'label' => false,
  152.                     'mapped' => false
  153.                 ]
  154.             );
  155.             $select_option['Incoming ping (InNetwork)'] = ['disabled' => 'disabled'];
  156.         }
  157.         if ($new_field == 'incoming_ping_out_network' || isset($data['incoming_ping_out_network'])) {
  158.             $form->add(
  159.                 'incoming_ping_out_network',
  160.                 InvoicePingIncomingOutNetworkType::class,
  161.                 [
  162.                     'label' => false,
  163.                     'mapped' => false
  164.                 ]
  165.             );
  166.             $select_option['Incoming ping (OutNetwork)'] = ['disabled' => 'disabled'];
  167.         }
  168.         if ($new_field == 'dnp_internal' || isset($data['dnp_internal'])) {
  169.             $form->add(
  170.                 'dnp_internal',
  171.                 InvoicePingDnpInternalType::class,
  172.                 [
  173.                     'label' => false,
  174.                     'mapped' => false
  175.                 ]
  176.             );
  177.             $select_option['DNP Internal'] = ['disabled' => 'disabled'];
  178.         }
  179.         if ($new_field == 'dnp_ping' || isset($data['dnp_ping'])) {
  180.             $form->add(
  181.                 'dnp_ping',
  182.                 InvoicePingDnpPingType::class,
  183.                 [
  184.                     'label' => false,
  185.                     'mapped' => false
  186.                 ]
  187.             );
  188.             $select_option['DNP Ping'] = ['disabled' => 'disabled'];
  189.         }
  190.         if ($new_field == 'filter_attempts' || isset($data['filter_attempts'])) {
  191.             $form->add(
  192.                 'filter_attempts',
  193.                 InvoicePingFilterAttemptType::class,
  194.                 [
  195.                     'label' => false,
  196.                     'mapped' => false
  197.                 ]
  198.             );
  199.             $select_option['Filter Attempts'] = ['disabled' => 'disabled'];
  200.         }
  201.         $form->add(
  202.             'newFields',
  203.             ChoiceType::class,
  204.             [
  205.                 'multiple' => false,
  206.                 'expanded' => false,
  207.                 'choices' => [
  208.                     'Select' => 'select',
  209.                     'Monthly base' => 'monthly_base',
  210.                     'Conversion analytics' => 'conversion_analytic',
  211.                     'Lead' => 'lead',
  212.                     'Accept Lead' => 'accept_lead',
  213.                     'Blacklist Lead' => 'blacklist_lead',
  214.                     'Outgoing ping (Total)' => 'outgoing_ping_total',
  215.                     'Outgoing ping (InNetwork)' => 'outgoing_ping_in_network',
  216.                     'Outgoing ping (OutNetwork)' => 'outgoing_ping_out_network',
  217.                     'Incoming ping (Total)' => 'incoming_ping_total',
  218.                     'Incoming ping (InNetwork)' => 'incoming_ping_in_network',
  219.                     'Incoming ping (OutNetwork)' => 'incoming_ping_out_network',
  220.                     'DNP Internal' => 'dnp_internal',
  221.                     'DNP Ping' => 'dnp_ping',
  222.                     'Filter Attempts' => 'filter_attempts',
  223.                     'Other' => 'other'
  224.                 ],
  225.                 'attr' => [
  226.                     'class' => 'select',
  227.                     'data-width' => '100%',
  228.                 ],
  229.                 'choice_attr' => $select_option,
  230.                 'mapped' => false,
  231.             ]
  232.         );
  233.     }
  234. }