diff --git a/src/Controller/Admin/Application/DeleteController.php b/src/Controller/Admin/Application/DeleteController.php index 021905a..4113d32 100644 --- a/src/Controller/Admin/Application/DeleteController.php +++ b/src/Controller/Admin/Application/DeleteController.php @@ -5,7 +5,6 @@ namespace App\Controller\Admin\Application; use App\Entity\Application; use App\Event\ApplicationDeletedEvent; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; @@ -16,8 +15,7 @@ class DeleteController extends AbstractController { public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -36,11 +34,6 @@ class DeleteController extends AbstractController $this->addFlash('success', 'Die Bewerbung wurde gelöscht'); - $this->logger->info('Delete application', [ - 'destination' => (string) $application->getAssignment()->getDestination(), - 'teamer' => (string) $application->getTeamer(), - ]); - return $this->redirectToRoute('app_administrative_assignment_detail', [ 'uuid' => $application->getAssignment()->getUuid(), ]); diff --git a/src/Controller/Admin/Application/DisposeController.php b/src/Controller/Admin/Application/DisposeController.php index 7a16daa..6c532d0 100644 --- a/src/Controller/Admin/Application/DisposeController.php +++ b/src/Controller/Admin/Application/DisposeController.php @@ -8,7 +8,6 @@ use App\Event\DispositionCreatedEvent; use App\Form\SpecialAgreementsType; use App\Htmx\HxRedirectResponse; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,8 +19,7 @@ class DisposeController extends AbstractController { public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -45,10 +43,6 @@ class DisposeController extends AbstractController ); $this->addFlash('success', 'Teamer:in wurde eingeteilt'); - $this->logger->info('Create disposition', [ - 'disposition_id' => $disposition->getId(), - 'teamer' => (string) $application->getTeamer(), - ]); $redirectUrl = $this->generateUrl('app_administrative_assignment_detail', [ 'uuid' => $application->getAssignment()->getUuid(), diff --git a/src/Controller/Admin/Application/StatusController.php b/src/Controller/Admin/Application/StatusController.php index bd8e2dd..770ef25 100644 --- a/src/Controller/Admin/Application/StatusController.php +++ b/src/Controller/Admin/Application/StatusController.php @@ -8,7 +8,6 @@ use App\Form\ApplicationStatusType; use App\Htmx\HxRedirectResponse; use App\Model\ApplicationStatusDto; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,8 +19,7 @@ class StatusController extends AbstractController { public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -49,11 +47,6 @@ class StatusController extends AbstractController ); $this->addFlash('success', 'Der Status der Bewerbung wurde aktualisiert'); - $this->logger->info('Update application status', [ - 'application_id' => $application->getId(), - 'status_new' => $statusDto->getStatus(), - 'teamer' => (string) $application->getTeamer(), - ]); return new HxRedirectResponse($this->generateUrl('app_administrative_assignment_detail', [ 'uuid' => $application->getAssignment()->getUuid(), diff --git a/src/Controller/Admin/Disposition/DeleteController.php b/src/Controller/Admin/Disposition/DeleteController.php index 1909641..b4a84ee 100644 --- a/src/Controller/Admin/Disposition/DeleteController.php +++ b/src/Controller/Admin/Disposition/DeleteController.php @@ -6,7 +6,6 @@ use App\Entity\Disposition; use App\Event\DispositionDeletedEvent; use App\Htmx\HxRedirectResponse; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\HttpFoundation\Request; @@ -19,8 +18,7 @@ class DeleteController extends AbstractController { public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -44,10 +42,6 @@ class DeleteController extends AbstractController if ($form->isSubmitted() && $form->isValid()) { $this->addFlash('success', 'Die Einteilung wurde gelöscht'); - $this->logger->info('Delete disposition', [ - 'disposition_id' => $disposition->getId(), - 'teamer' => (string) $disposition->getTeamer(), - ]); $this->entityManager->remove($disposition); $this->entityManager->flush(); diff --git a/src/Controller/Administrative/Document/CheckController.php b/src/Controller/Administrative/Document/CheckController.php index 6500541..aa21b8d 100644 --- a/src/Controller/Administrative/Document/CheckController.php +++ b/src/Controller/Administrative/Document/CheckController.php @@ -54,6 +54,10 @@ class CheckController extends AbstractController break; case Upload::STATUS_PAID: $this->confirmDocument($document, 'confirm_invoice', Upload::STATUS_PAID, $formData); + $this->eventDispatcher->dispatch( + new DocumentConfirmedEvent($document), + DocumentConfirmedEvent::NAME + ); break; case Upload::STATUS_REJECTED: $this->rejectDocument($document, $formData->getComment()); diff --git a/src/Controller/HouseManager/Feedback/ProvideController.php b/src/Controller/HouseManager/Feedback/ProvideController.php index 87f1212..591c92e 100644 --- a/src/Controller/HouseManager/Feedback/ProvideController.php +++ b/src/Controller/HouseManager/Feedback/ProvideController.php @@ -8,7 +8,6 @@ use App\Entity\User; use App\Event\FeedbackProvidedEvent; use App\Form\FeedbackType; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,8 +19,7 @@ class ProvideController extends AbstractController { public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -32,7 +30,6 @@ class ProvideController extends AbstractController /** @var User $user */ $user = $this->getUser(); $assignment = $disposition->getAssignment(); - $destination = $assignment->getDestination(); if (null !== $disposition->getFeedback()) { $this->addFlash('error', 'Es liegt schon ein Feedback vor.'); @@ -63,12 +60,10 @@ class ProvideController extends AbstractController $this->entityManager->persist($feedback); $this->entityManager->flush(); - $this->eventDispatcher->dispatch(new FeedbackProvidedEvent($feedback), FeedbackProvidedEvent::NAME); - $this->logger->info('Feedback provided', [ - 'feedback_id' => $feedback->getId(), - 'teamer' => (string) $teamer, - 'destination' => (string) $destination, - ]); + $this->eventDispatcher->dispatch( + new FeedbackProvidedEvent($feedback), + FeedbackProvidedEvent::NAME + ); $this->addFlash('success', 'Das Feedback wurde entgegengenommen'); diff --git a/src/Controller/Teamer/Application/CreateController.php b/src/Controller/Teamer/Application/CreateController.php index 2797bf4..7d0e7bd 100644 --- a/src/Controller/Teamer/Application/CreateController.php +++ b/src/Controller/Teamer/Application/CreateController.php @@ -8,7 +8,6 @@ use App\Entity\User; use App\Event\ApplicationCreatedEvent; use App\Form\TeamerApplicationType; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,8 +19,7 @@ class CreateController extends AbstractController { public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -48,13 +46,6 @@ class CreateController extends AbstractController ); $this->addFlash('success', 'Deine Bewerbung wurde entgegengenommen'); - $this->logger->info('Create application', [ - 'teamer_id' => $teamer->getId(), - 'teamer_name' => (string) $teamer, - 'application_id' => $application->getId(), - 'assignment_id' => $assignment->getId(), - 'destination' => (string) $assignment->getDestination(), - ]); return $this->redirectToRoute('app_teamer_index'); } diff --git a/src/Controller/Teamer/Application/WithdrawController.php b/src/Controller/Teamer/Application/WithdrawController.php index c08809b..69ab046 100644 --- a/src/Controller/Teamer/Application/WithdrawController.php +++ b/src/Controller/Teamer/Application/WithdrawController.php @@ -4,11 +4,9 @@ namespace App\Controller\Teamer\Application; use App\Controller\Traits\ReturnUrlTrait; use App\Entity\Application; -use App\Entity\User; use App\Event\ApplicationDeletedEvent; use App\Htmx\HxRedirectResponse; use Doctrine\ORM\EntityManagerInterface; -use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -22,8 +20,7 @@ class WithdrawController extends AbstractController public function __construct( private readonly EntityManagerInterface $entityManager, - private readonly EventDispatcherInterface $eventDispatcher, - private readonly LoggerInterface $logger + private readonly EventDispatcherInterface $eventDispatcher ) { } @@ -32,11 +29,6 @@ class WithdrawController extends AbstractController public function index(Application $application, Request $request): Response { if (true === $request->isMethod('POST')) { - /** @var User $user */ - $user = $this->getUser(); - $teamer = $user->getTeamer(); - $assignment = $application->getAssignment(); - $this->entityManager->remove($application); $this->entityManager->flush(); @@ -45,14 +37,6 @@ class WithdrawController extends AbstractController ApplicationDeletedEvent::NAME ); - $this->logger->info('Withdraw application', [ - 'teamer_id' => $teamer->getId(), - 'teamer_name' => (string) $teamer, - 'application_id' => $application->getId(), - 'assignment_id' => $assignment->getId(), - 'destination' => (string) $assignment->getDestination(), - ]); - return new HxRedirectResponse($this->getReturnUrl($request, 'app_teamer_index')); } diff --git a/src/EventListener/LoggingSubscriber.php b/src/EventListener/LoggingSubscriber.php new file mode 100644 index 0000000..01a031a --- /dev/null +++ b/src/EventListener/LoggingSubscriber.php @@ -0,0 +1,103 @@ + 'onApplicationCreated', + ApplicationDeletedEvent::NAME => 'onApplicationDeleted', + ApplicationStatusEvent::NAME => 'onApplicationStatus', + DispositionCreatedEvent::NAME => 'onDispositionCreated', + DispositionDeletedEvent::NAME => 'onDispositionDeleted', + FeedbackProvidedEvent::NAME => 'onFeedbackProvided', + ]; + } + + public function onApplicationCreated(ApplicationCreatedEvent $event): void + { + $application = $event->getApplication(); + $assignment = $application->getAssignment(); + $teamer = $application->getTeamer(); + + $this->logger->info('Create application', [ + 'teamer' => $teamer->getUuid(), + 'teamer_name' => (string) $teamer, + 'application' => $application->getUuid(), + 'assignment_id' => $assignment->getUuid(), + 'destination' => (string) $assignment->getDestination(), + ]); + } + + public function onApplicationDeleted(ApplicationDeletedEvent $event): void + { + $application = $event->getApplication(); + $assignment = $application->getAssignment(); + $teamer = $application->getTeamer(); + + $this->logger->info('Delete application', [ + 'application' => $application->getUuid(), + 'assignment' => $assignment->getUuid(), + 'destination' => (string) $assignment->getDestination(), + 'teamer' => $teamer->getUuid(), + 'teamer_name' => (string) $application->getTeamer(), + ]); + } + + public function onApplicationStatus(ApplicationStatusEvent $event): void + { + $application = $event->getApplication(); + + $this->logger->info('Update application status', [ + 'application' => $application->getUuid(), + 'status_new' => $application->getStatus(), + 'teamer' => (string) $application->getTeamer(), + ]); + } + + public function onDispositionCreated(DispositionCreatedEvent $event): void + { + $disposition = $event->getDisposition(); + + $this->logger->info('Create disposition', [ + 'disposition' => $disposition->getUuid(), + 'teamer' => (string) $disposition->getTeamer(), + ]); + } + + public function onDispositionDeleted(DispositionDeletedEvent $event): void + { + $disposition = $event->getDisposition(); + + $this->logger->info('Delete disposition', [ + 'disposition' => $disposition->getUuid(), + 'teamer' => (string) $disposition->getTeamer(), + ]); + } + + public function onFeedbackProvided(FeedbackProvidedEvent $event): void + { + $feedback = $event->getFeedback(); + + $this->logger->info('Feedback provided', [ + 'feedback' => $feedback->getUuid(), + 'teamer' => (string) $feedback->getTeamer(), + 'destination' => $feedback->getDestinationName(), + ]); + } +} \ No newline at end of file diff --git a/src/EventListener/StaffingStatusSubscriber.php b/src/EventListener/StaffingStatusSubscriber.php index 1551488..796814a 100644 --- a/src/EventListener/StaffingStatusSubscriber.php +++ b/src/EventListener/StaffingStatusSubscriber.php @@ -3,6 +3,7 @@ namespace App\EventListener; use App\Entity\Assignment; +use App\Entity\Upload; use App\Event\ApplicationCreatedEvent; use App\Event\ApplicationDeletedEvent; use App\Event\ApplicationStatusEvent; @@ -68,7 +69,14 @@ class StaffingStatusSubscriber implements EventSubscriberInterface public function onDocumentConfirmed(DocumentConfirmedEvent $event): void { - $assignment = $event->getDocument()->getDisposition()->getAssignment(); + $document = $event->getDocument(); + + // Only contract documents have an impact on staffing status + if (Upload::TYPE_CONTRACT !== $document->getType()) { + return; + } + + $assignment = $document->getDisposition()->getAssignment(); $this->updateStaffingStatus($assignment); }