src/StartPlatz/Bundle/AcceleratorBundle/EventSubscriber/AcceleratorEvidenceSubscriber.php line 29

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\StartPlatz\Bundle\AcceleratorBundle\EventSubscriber;
  3. use App\StartPlatz\Bundle\AcceleratorBundle\Event\AcceleratorReviewStatusChangedEvent;
  4. use App\StartPlatz\Ecosystem\Evidence\SystemEvidenceRecorder;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. /**
  7.  * Records evidence for Accelerator review status changes (UP-113 Status-Evidenz-Matrix).
  8.  *
  9.  * Pattern: Same as GsEvidenceSubscriber — listens to domain events, delegates to SystemEvidenceRecorder.
  10.  * The controller dispatches AcceleratorReviewStatusChangedEvent after workflow transition;
  11.  * this subscriber maps the transition name to the correct evidence recording method.
  12.  */
  13. class AcceleratorEvidenceSubscriber implements EventSubscriberInterface
  14. {
  15.     public function __construct(
  16.         private readonly SystemEvidenceRecorder $evidenceRecorder
  17.     ) {}
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [
  21.             AcceleratorReviewStatusChangedEvent::class => 'onReviewStatusChanged',
  22.         ];
  23.     }
  24.     public function onReviewStatusChanged(AcceleratorReviewStatusChangedEvent $event): void
  25.     {
  26.         $app $event->application;
  27.         $applicationId $app->getId();
  28.         $batchId $app->getBatchId();
  29.         $documentedBy $event->documentedBy;
  30.         match ($event->transition) {
  31.             'reject_before_interview' => $this->evidenceRecorder->documentRejectedBeforeInterview($applicationId$batchId$documentedBy),
  32.             'invite_to_interview' => $this->evidenceRecorder->documentInterviewInvited($applicationId$batchId$documentedBy),
  33.             'reject_after_interview' => $this->evidenceRecorder->documentRejectedAfterInterview($applicationId$batchId$documentedBy),
  34.             'offer_spot' => $this->evidenceRecorder->documentSpotOffered($applicationId$batchId$documentedBy),
  35.             'accept_spot' => $this->evidenceRecorder->documentSpotAccepted($applicationId$batchId$documentedBy),
  36.             default => null// 'discuss' has no evidence by design (UP-113 Matrix row 3)
  37.         };
  38.     }
  39. }