app/Plugin/ContactManagement42/Event.php line 115

Open in your IDE?
  1. <?php
  2. namespace Plugin\ContactManagement42;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Eccube\Event\EccubeEvents;
  5. use Eccube\Event\EventArgs;
  6. use Eccube\Event\TemplateEvent;
  7. use Plugin\ContactManagement42\Entity\Contact;
  8. use Plugin\ContactManagement42\Repository\ContactStatusRepository;
  9. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  12. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  13. class Event implements EventSubscriberInterface {
  14.   /**
  15.    * @var AuthorizationCheckerInterface
  16.    */
  17.   private $authorizationChecker;
  18.   /**
  19.    * @var TokenStorageInterface
  20.    */
  21.   private $tokenStorage;
  22.   /**
  23.    * @var EntityManagerInterface
  24.    */
  25.   private $entityManager;
  26.   /**
  27.    * @var ContactStatusRepository
  28.    */
  29.   private $contactStatusRepository;
  30.   /**
  31.    * @var EventDispatcherInterface
  32.    */
  33.   private $eventDispatcher;
  34.   /**
  35.    * Event constructor.
  36.    */
  37.   public function __construct(
  38.   AuthorizationCheckerInterface $authorizationCheckerTokenStorageInterface $tokenStorageEntityManagerInterface $entityManagerContactStatusRepository $contactStatusRepositoryEventDispatcherInterface $eventDispatcher
  39.   ) {
  40.     $this->authorizationChecker $authorizationChecker;
  41.     $this->tokenStorage $tokenStorage;
  42.     $this->entityManager $entityManager;
  43.     $this->contactStatusRepository $contactStatusRepository;
  44.     $this->eventDispatcher $eventDispatcher;
  45.   }
  46.   /**
  47.    * @return array
  48.    */
  49.   public static function getSubscribedEvents() {
  50.     return [
  51.       EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE => 'onContactComplete',
  52.       '@admin/Customer/edit.twig' => 'onAdminCustomerEditTwig',
  53.     ];
  54.   }
  55.   public function onContactComplete(EventArgs $event) {
  56.     $data $event->getArgument('data');
  57.     $order_id = empty($data["order_id"]) ? "" Intval(mb_convert_kana($data['order_id'], "a"));
  58.     $Contact = new Contact();
  59.     // エンティティを更新
  60.     $Contact
  61.       ->setCustomer($this->authorizationChecker->isGranted('ROLE_USER') ? $this->tokenStorage->getToken()->getUser() : null)
  62.       ->setContactDate(new \DateTime())
  63.       ->setType(@$data["type"])
  64.       ->setCompanyName(@$data["company_name"])
  65.       ->setName01($data['name01'])
  66.       ->setName02($data['name02'])
  67.       ->setKana01(@$data['kana01'])
  68.       ->setKana02(@$data['kana02'])
  69.       ->setPostalCode(@$data['postal_code'])
  70.       ->setPref(@$data['pref'])
  71.       ->setAddr01(@$data['addr01'])
  72.       ->setAddr02(@$data['addr02'])
  73.       ->setPhoneNumber($data['phone_number'])
  74.       ->setEmail($data['email'])
  75.       ->setTitle(@$data['title'])
  76.       ->setOrderId($order_id)
  77.       ->setContents($data['contents'])
  78.       ->setStatus($this->contactStatusRepository->findOneBy([], ['sort_no' => 'ASC']));
  79.     $event = new EventArgs(
  80.       [
  81.       'form' => $event->getArgument('form'),
  82.       'data' => $event->getArgument('data'),
  83.       'Contact' => $Contact
  84.       ], $event->getRequest()
  85.     );
  86.     $this->eventDispatcher->dispatch($event'plugin.contact.index.complete');
  87.     if ($event->hasArgument('extra_save_items')) {
  88.       $items $event->getArgument('extra_save_items');
  89.       if (!empty($items)) {
  90.         $Contact->setExtra(json_encode($items));
  91.       }
  92.     }
  93.     // DB更新
  94.     $this->entityManager->persist($Contact);
  95.     $this->entityManager->flush($Contact);
  96.   }
  97.   public function onAdminCustomerEditTwig(TemplateEvent $templateEvent) {
  98.     $templateEvent->addSnippet('@ContactManagement42/admin/Customer/edit_js.twig');
  99.   }
  100. }