src/GamificationBundle/Service/GamificationNotificationService.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\GamificationBundle\Service;
  3. use App\GamificationBundle\Enum\CustomEventEnum;
  4. use App\GamificationBundle\Message\CustomEventOccurredMessage;
  5. use App\GamificationBundle\Message\GamificationEventOccurredMessage;
  6. use App\GamificationBundle\Message\QuestProgressUpdatedMessage;
  7. use App\GamificationBundle\Message\RewardRedeemedMessage;
  8. use App\GamificationBundle\Message\UserCoinsBalanceUpdatedMessage;
  9. use Symfony\Component\Messenger\MessageBusInterface;
  10. class GamificationNotificationService
  11. {
  12.     public function __construct(
  13.         private readonly MessageBusInterface $messageBus
  14.     ) {}
  15.     /**
  16.      * @param int $userId
  17.      * @param int $coinsBalance
  18.      * @param int $coinsBalanceChange
  19.      * @param array $questDetails
  20.      * @return void
  21.      */
  22.     public function notifyAboutUpdatedBalance(
  23.         int $userId,
  24.         int $coinsBalance,
  25.         int $coinsBalanceChange,
  26.         array $questDetails
  27.     ): void
  28.     {
  29.         $message = new UserCoinsBalanceUpdatedMessage(
  30.             $userId,
  31.             $coinsBalance,
  32.             $coinsBalanceChange,
  33.             $questDetails
  34.         );
  35.         $this->messageBus->dispatch($message);
  36.     }
  37.     /**
  38.      * @param int $userId
  39.      * @param string $type
  40.      * @param array $quest
  41.      * @return void
  42.      */
  43.     public function notifyAboutUpdatedQuest(
  44.         int $userId,
  45.         string $type,
  46.         array $quest
  47.     ): void
  48.     {
  49.         $message = new QuestProgressUpdatedMessage(
  50.             $userId,
  51.             $type,
  52.             $quest
  53.         );
  54.         $this->messageBus->dispatch($message);
  55.     }
  56.     /**
  57.      * @param int $userId
  58.      * @param array $reward
  59.      * @return void
  60.      */
  61.     public function notifyAboutRedeemedReward(
  62.         int $userId,
  63.         array $reward
  64.     ): void
  65.     {
  66.         $message = new RewardRedeemedMessage(
  67.             $userId,
  68.             $reward
  69.         );
  70.         $this->messageBus->dispatch($message);
  71.     }
  72.     /**
  73.      * @param int $userId
  74.      * @return void
  75.      */
  76.     public function notifyAboutUniqueNicknameSet(int $userId): void
  77.     {
  78.         $message = new CustomEventOccurredMessage(
  79.             $userId, [
  80.                 'type' => CustomEventEnum::UNIQUE_NICKNAME_SET,
  81.                 'body' => []
  82.             ]
  83.         );
  84.         $this->messageBus->dispatch($message);
  85.     }
  86.     /**
  87.      * @param int $userId
  88.      * @param int $casinoId
  89.      * @return void
  90.      */
  91.     public function notifyAboutCasinoReviewCreated(int $userIdint $casinoId): void
  92.     {
  93.         $message = new CustomEventOccurredMessage(
  94.             $userId, [
  95.                 'type' => CustomEventEnum::CASINO_REVIEW_CREATED,
  96.                 'body' => [
  97.                     'casinoId' => $casinoId
  98.                 ]
  99.             ]
  100.         );
  101.         $this->messageBus->dispatch($message);
  102.     }
  103.     /**
  104.      * @param int $userId
  105.      * @param int $casinoId
  106.      * @param int $eventType
  107.      * @return void
  108.      */
  109.     public function notifyAboutCasinoPostbackTracked(
  110.         int $userId,
  111.         int $casinoId,
  112.         int $eventType
  113.     ): void
  114.     {
  115.         $message = new CustomEventOccurredMessage(
  116.             $userId, [
  117.                 'type' => CustomEventEnum::CASINO_POSTBACK_TRACKED,
  118.                 'body' => [
  119.                     'casinoId' => $casinoId,
  120.                     'event' => $eventType
  121.                 ]
  122.             ]
  123.         );
  124.         $this->messageBus->dispatch($message);
  125.     }
  126.     /**
  127.      * @param int $userId
  128.      * @param string $visitorFingerprint
  129.      * @return void
  130.      */
  131.     public function notifyAboutSharedLinkVisited(
  132.         int $userId,
  133.         string $visitorFingerprint
  134.     ): void
  135.     {
  136.         $message = new CustomEventOccurredMessage(
  137.             $userId, [
  138.                 'type' => CustomEventEnum::SHARED_LINK_VISITED,
  139.                 'body' => [
  140.                     'visitorId' => $visitorFingerprint
  141.                 ]
  142.             ]
  143.         );
  144.         $this->messageBus->dispatch($message);
  145.     }
  146.     /**
  147.      * @param int $userId
  148.      * @param string $email
  149.      * @param string $eventName
  150.      * @return void
  151.      */
  152.     public function notifyAboutGamificationEventOccurred(int $userIdstring $emailstring $eventName): void
  153.     {
  154.         $message = new GamificationEventOccurredMessage(
  155.             $userId,
  156.             $email,
  157.             $eventName
  158.         );
  159.         $this->messageBus->dispatch($message);
  160.     }
  161. }