src/DueBundle/EventListener/DueUpdateListener.php line 21

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Due\EventListener;
  4. use Due\Enum\DueStatus;
  5. use Due\Event\DueUpdateEvent;
  6. use Due\Repository\DueTokenRepository;
  7. class DueUpdateListener
  8. {
  9.     private $tokenRepository;
  10.     private $due;
  11.     public function __construct(DueTokenRepository $tokenRepository)
  12.     {
  13.         $this->tokenRepository $tokenRepository;
  14.     }
  15.     public function onUpdate(DueUpdateEvent $dueUpdateEvent)
  16.     {
  17.         $this->due $dueUpdateEvent->getDue();
  18.         $this->checkDueExpiredFields();
  19.     }
  20.     private function checkDueExpiredFields()
  21.     {
  22.         if ($this->hasUpdateResetStatus()) {
  23.             $this->resetStatus();
  24.             $this->expireDueToken();
  25.             $this->deleteDocument();
  26.         }
  27.     }
  28.     private function hasUpdateResetStatus(): bool {
  29.         return in_array($this->due->getStatus(), DueStatus::getEditResetStatuses());
  30.     }
  31.     private function resetStatus(): void
  32.     {
  33.         $this->due->setStatus(DueStatus::READY_TO_SIGN());
  34.     }
  35.     private function expireDueToken(): void
  36.     {
  37.         if ($dueToken $this->tokenRepository->findOneByDue($this->due)) {
  38.             $dueToken->setExpiresAt(new \DateTimeImmutable());
  39.             $this->tokenRepository->save($dueToken);
  40.         }
  41.     }
  42.     private function deleteDocument(): void
  43.     {
  44.         $this->due->setDocument(null);
  45.     }
  46. }