src/EventSubscriber/UserMovePointSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\UserMovePoint;
  4. use App\Events\UserMovePointEvent;
  5. use App\Repository\UserMovePointRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class UserMovePointSubscriber implements EventSubscriberInterface
  9. {
  10.     private EntityManagerInterface $em;
  11.     private UserMovePointRepository $er;
  12.     public function __construct(
  13.         EntityManagerInterface $em,
  14.         UserMovePointRepository $er
  15.     ) {
  16.         $this->em $em;
  17.         $this->er $er;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             UserMovePointEvent::PUBLISHED => 'onPublished',
  23.         ];
  24.     }
  25.     public function onPublished(UserMovePointEvent $event): void
  26.     {
  27.         $ump $event->getUserMovePoint();
  28.         $user $ump->getUser();
  29.         if ($ump->getQtyIce()) {
  30.             $sum $this->er->sumQtyBy($userUserMovePoint::QTY_ICE);
  31.             $user->setNumTotalIce($sum);
  32.         }
  33.         if ($ump->getQtyFeatured()) {
  34.             $sum $this->er->sumQtyBy($userUserMovePoint::QTY_FEATURED);
  35.             $user->setNumTotalFeatured($sum);
  36.         }
  37.         if ($ump->getQtyLike()) {
  38.             $sum $this->er->sumQtyBy($userUserMovePoint::QTY_LIKE);
  39.             $user->setNumTotalLike($sum);
  40.         }
  41.         if ($ump->getQtySuperice()) {
  42.             $sum $this->er->sumQtyBy($userUserMovePoint::QTY_SUPERICE);
  43.             $user->setNumTotalSuperice($sum);
  44.         }
  45.         if ($ump->getFeaturedExpirationDate()) {
  46.             $user->setFeaturedExpirationDate(null);
  47.             $user->setIsFeatured(false);
  48.             $max $this->er->maxFeaturedExpirationDateBy($user);
  49.             if ($max) {
  50.                 $user->setFeaturedExpirationDate($max);
  51.                 $user->setIsFeatured(true);
  52.             }
  53.         }
  54.         if ($ump->getInvisibleExpirationDate()) {
  55.             $user->setInvisibleExpirationDate(null);
  56.             // $user->setIsEnabledInvisible(false);
  57.             $max $this->er->maxInvisibleExpirationDateBy($user);
  58.             if ($max) {
  59.                 $user->setInvisibleExpirationDate($max);
  60.                 // $user->setIsEnabledInvisible(true);
  61.             }
  62.         }
  63.         if ($ump->getIsUnlimitedRewind()) {
  64.             $user->setIsUnlimitedRewind(true);
  65.         }
  66.         if ($ump->getIsUnlimitedLike()) {
  67.             $user->setIsUnlimitedLike(true);
  68.         }
  69.         $this->em->persist($user);
  70.         $this->em->flush();
  71.     }
  72. }