src/EventSubscriber/SaloonSubscriber.php line 67

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Sales\SidebarPlacementType;
  4. use App\Event\Saloon\SaloonCommentWasAdded;
  5. use App\Event\Saloon\SaloonWasPlacedOnAdBoard;
  6. use App\Event\Saloon\SaloonWasProlongedOnAdBoard;
  7. use App\Event\Saloon\SaloonWasRemovedFromAdBoard;
  8. use App\Service\IpAddressService;
  9. use App\Service\PlacementHider;
  10. use App\Service\Sidebar;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. class SaloonSubscriber implements EventSubscriberInterface
  13. {
  14.     public function __construct(
  15.         private Sidebar $sidebar,
  16.         private PlacementHider $placementHider,
  17.         private IpAddressService $ipAddressService
  18.     ) {}
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             SaloonWasPlacedOnAdBoard::NAME => [
  23.                 ['addSidebarPlacement'0],
  24.                 ['removePlacementHiding'10],
  25.             ],
  26.             SaloonWasRemovedFromAdBoard::NAME => 'deleteSidebarPlacement',
  27.             SaloonWasProlongedOnAdBoard::NAME => 'prolongSidebarPlacement',
  28.             SaloonCommentWasAdded::NAME => 'checkIpAddressCommentBanNeeded',
  29.         ];
  30.     }
  31.     public function addSidebarPlacement(SaloonWasPlacedOnAdBoard $saloonWasPlacedOnAdBoard): void
  32.     {
  33.         $placement $saloonWasPlacedOnAdBoard->getPlacement();
  34.         $placementType $placement->getType();
  35.         if($placementType->isVip() || $placementType->isUltraVip()) {
  36.             $this->sidebar->doPlaceSaloonOnSidebar(
  37.                 $saloonWasPlacedOnAdBoard->getSaloon(),
  38.                 new SidebarPlacementType($placementType->getValue()),
  39.                 $placement->getPlacementPrice(),
  40.                 $placement->getPlacedAt(),
  41.                 $placement->getPlacedUntil()
  42.             );
  43.         }
  44.     }
  45.     public function deleteSidebarPlacement(SaloonWasRemovedFromAdBoard $saloonWasRemovedFromAdBoard): void
  46.     {
  47.         $this->sidebar->deleteSaloonFromSidebar($saloonWasRemovedFromAdBoard->getSaloon());
  48.     }
  49.     public function prolongSidebarPlacement(SaloonWasProlongedOnAdBoard $saloonWasProlongedOnAdBoard): void
  50.     {
  51.         $this->sidebar->prolongSaloonPlacement($saloonWasProlongedOnAdBoard->getSaloon(), $saloonWasProlongedOnAdBoard->getUntil());
  52.     }
  53.     public function removePlacementHiding(SaloonWasPlacedOnAdBoard $saloonWasPlacedOnAdBoard): void
  54.     {
  55.         $this->placementHider->deleteSaloonHiding($saloonWasPlacedOnAdBoard->getSaloon());
  56.     }
  57.     public function checkIpAddressCommentBanNeeded(SaloonCommentWasAdded $saloonCommentWasAddedEvent): void
  58.     {
  59.         $this->ipAddressService->checkDailyCommentBanNeeded();
  60.     }
  61. }