src/Invoice/EventSubscriber/SetCustomerSupplierRelationshipSubscriber.php line 43

  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Copyright (c) 2020 TECLA Consulting Group oü.
  5.  * All rights reserved.
  6.  *
  7.  * This unpublished material is proprietary to TECLA Consulting Group oü.
  8.  * All rights reserved. The methods and
  9.  * techniques described herein are considered trade secrets
  10.  * and/or confidential. Reproduction or distribution, in whole
  11.  * or in part, is forbidden except by express written permission
  12.  * of TECLA Consulting Group oü.
  13.  *
  14.  * @author    Matúš Sýkorjak <matus@tecla.no>
  15.  * @copyright 2020 TECLA Consulting Group oü
  16.  */
  17. namespace App\Invoice\EventSubscriber;
  18. use App\Contact\Service\ContactRelationshipCustomerSupplierService;
  19. use App\Invoice\Event\InvoiceCreatedEvent;
  20. use JetBrains\PhpStorm\ArrayShape;
  21. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  22. final class SetCustomerSupplierRelationshipSubscriber implements EventSubscriberInterface
  23. {
  24.     private ContactRelationshipCustomerSupplierService $relationshipService;
  25.     public function __construct(ContactRelationshipCustomerSupplierService $relationshipService)
  26.     {
  27.         $this->relationshipService $relationshipService;
  28.     }
  29.     #[ArrayShape([InvoiceCreatedEvent::class => "string"])]
  30.     public static function getSubscribedEvents(): array
  31.     {
  32.         return [
  33.             InvoiceCreatedEvent::class => 'onInvoiceCreated',
  34.         ];
  35.     }
  36.     public function onInvoiceCreated(InvoiceCreatedEvent $event): void
  37.     {
  38.         $invoice $event->getInvoice();
  39.         $this->relationshipService->setRelationshipBetweenContacts($invoice->getSupplier(), $invoice->getCustomer());
  40.     }
  41. }