src/EventListener/MobileUserActivatedListener.php line 28

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Entity\Project\Transaction;
  5. use App\Infrastructure\Event\MobileUserActivatedEvent;
  6. use App\Repository\Project\ProjectTaskRepository;
  7. use App\Service\Workflow\TaskManager;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
  10. use Throwable;
  11. #[AsEventListener(eventMobileUserActivatedEvent::class, method'onUserActivated')]
  12. final class MobileUserActivatedListener
  13. {
  14.     public function __construct(
  15.         private readonly ProjectTaskRepository $projectTaskRepository,
  16.         private readonly TaskManager $taskManager,
  17.         private readonly EntityManagerInterface $entityManager
  18.     ) {
  19.     }
  20.     /**
  21.      * @throws Throwable
  22.      */
  23.     public function onUserActivated(MobileUserActivatedEvent $event)
  24.     {
  25.         $user         $event->getUser();
  26.         $transactions = [];
  27.         foreach ($this->projectTaskRepository->findProcessedRoleAssignedByPhone($user->getPhone()) as $projectTask) {
  28.             if (!isset($transactions[$projectTask->getContext()->getProject()->getId()])) {
  29.                 $transaction = new Transaction($projectTask->getContext()->getProject());
  30.                 $this->entityManager->persist($transaction);
  31.                 $transactions[$projectTask->getContext()->getProject()->getId()] = $transaction;
  32.             }
  33.             $this->taskManager->completeProjectTask($projectTask$transactions[$projectTask->getContext()->getProject()->getId()]);
  34.         }
  35.     }
  36. }