src/Payment/Gateway/Bollo.php line 72

Open in your IDE?
  1. <?php
  2. namespace App\Payment\Gateway;
  3. use App\Entity\Pratica;
  4. use App\Payment\AbstractPaymentData;
  5. use App\Payment\PaymentDataInterface;
  6. use Symfony\Component\Form\FormEvent;
  7. use Symfony\Component\Form\FormEvents;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\Form\Extension\Core\Type\TextType;
  10. use Symfony\Component\Form\Extension\Core\Type\DateType;
  11. use Symfony\Component\Form\Extension\Core\Type\TimeType;
  12. class Bollo extends AbstractPaymentData implements EventSubscriberInterface
  13. {
  14.   const IDENTIFIER 'bollo';
  15.   public function getIdentifier(): string
  16.   {
  17.     return self::IDENTIFIER;
  18.   }
  19.   public static function getPaymentParameters()
  20.   {
  21.     return [];
  22.   }
  23.   public static function getFields()
  24.   {
  25.     return array(
  26.       'bollo_identifier',
  27.       'bollo_data_emissione',
  28.       'bollo_ora_emissione',
  29.     );
  30.   }
  31.   /** Event Subscriber **/
  32.   public static function getSubscribedEvents()
  33.   {
  34.     return array(
  35.       FormEvents::PRE_SET_DATA => 'onPreSetData',
  36.       FormEvents::PRE_SUBMIT => 'onPreSubmit'
  37.     );
  38.   }
  39.   /**
  40.    * @param $data
  41.    * @return mixed|void
  42.    */
  43.   public static function getSimplifiedData($data)
  44.   {
  45.     $bolloPaymentData self::fromData($data);
  46.     $emissionHour $bolloPaymentData->getFieldValue('bollo_ora_emissione');
  47.     foreach ($emissionHour as $k => $v) {
  48.       $emissionHour[$k] = str_pad($v2'0'STR_PAD_LEFT);
  49.     }
  50.     return [
  51.       'status' => PaymentDataInterface::STATUS_PAYMENT_PAID,
  52.       'bollo_identifier' => $bolloPaymentData->getFieldValue('bollo_identifier'),
  53.       'bollo_emission_date' => $bolloPaymentData->getFieldValue('bollo_data_emissione'),
  54.       'bollo_emission_hour' => implode(':'$emissionHour)
  55.     ];
  56.   }
  57.   public function onPreSetData(FormEvent $event)
  58.   {
  59.     /** @var Pratica $pratica */
  60.     $pratica $event->getData();
  61.     $paymentData parent::fromData($pratica->getPaymentData());
  62.     $identifier $paymentData->getFieldValue('bollo_identifier') ? $paymentData->getFieldValue('bollo_identifier') : null;
  63.     $day $paymentData->getFieldValue('bollo_data_emissione') ? $paymentData->getFieldValue('bollo_data_emissione') : null;
  64.     $hour $paymentData->getFieldValue('bollo_ora_emissione') ? implode(':'$paymentData->getFieldValue('bollo_ora_emissione')) : null;
  65.     $form $event->getForm();
  66.     $form
  67.       ->add('bollo_identifier'TextType::class, [
  68.           'label' => 'Inserisci identificativo bollo',
  69.           'data' => (string)$identifier,
  70.           'mapped' => false,
  71.           'required' => true]
  72.       )
  73.       ->add('bollo_data_emissione'DateType::class, [
  74.         'required' => true,
  75.         'mapped' => false,
  76.         'label' => 'Inserisci data emissione bollo',
  77.         'label_attr' => ['class' => 'active'],
  78.         'widget' => 'single_text',
  79.         'data' => new \DateTime($day)
  80.       ])
  81.       ->add('bollo_ora_emissione'TimeType::class, [
  82.         'input' => 'datetime',
  83.         'widget' => 'choice',
  84.         'with_seconds' => true,
  85.         'mapped' => false,
  86.         'data' => new \DateTime($hour),
  87.       ]);
  88.   }
  89.   public function onPreSubmit(FormEvent $event)
  90.   {
  91.     $data $event->getData();
  92.     $paymentData parent::fromData($event->getData());
  93.     $data['payment_data'] = $paymentData->toJson();
  94.     $event->setData($data);
  95.   }
  96. }