feat: decouple logic using events

This commit is contained in:
Björn Fromme
2024-07-18 11:09:49 +02:00
parent 174ae5e5e3
commit 3a77697d9d
13 changed files with 190 additions and 27 deletions
@@ -4,6 +4,7 @@ namespace App\Controller\Administrative\Document;
use App\Controller\Traits\ReturnUrlTrait;
use App\Entity\Upload;
use App\Event\DocumentConfirmedEvent;
use App\Event\DocumentRejectedEvent;
use App\Form\DocumentCheckType;
use App\Htmx\HxRedirectResponse;
@@ -46,16 +47,20 @@ class CheckController extends AbstractController
switch ($formData->getStatus()) {
case Upload::STATUS_CHECKED:
$this->confirmDocument($document, 'confirm_contract', Upload::STATUS_CHECKED, $formData);
// Contract confirmed: Update staffing status of related assignment
$document->getDisposition()->getAssignment()->updateStaffingStatus();
$this->entityManager->flush();
$this->eventDispatcher->dispatch(
new DocumentConfirmedEvent($document),
DocumentConfirmedEvent::NAME
);
break;
case Upload::STATUS_PAID:
$this->confirmDocument($document, 'confirm_invoice', Upload::STATUS_PAID, $formData);
break;
case Upload::STATUS_REJECTED:
$this->rejectDocument($document, $formData->getComment());
$this->eventDispatcher->dispatch(new DocumentRejectedEvent($formData), DocumentRejectedEvent::NAME);
$this->eventDispatcher->dispatch(
new DocumentRejectedEvent($formData),
DocumentRejectedEvent::NAME
);
break;
default:
$document