diff --git a/src/EventListener/EmailNotificationSubscriber.php b/src/EventListener/EmailNotificationSubscriber.php index 2a510ae..1dded31 100644 --- a/src/EventListener/EmailNotificationSubscriber.php +++ b/src/EventListener/EmailNotificationSubscriber.php @@ -3,8 +3,11 @@ namespace App\EventListener; use App\Email\Mailer; +use App\Entity\Application; use App\Entity\Upload; +use App\Event\ApplicationStatusEvent; use App\Event\DispositionCreatedEvent; +use App\Event\DocumentRejectedEvent; use App\Event\DocumentUploadedEvent; use App\Repository\UserRepository; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -22,9 +25,14 @@ class EmailNotificationSubscriber implements EventSubscriberInterface return [ DispositionCreatedEvent::NAME => 'onDispositionCreated', DocumentUploadedEvent::NAME => 'onDocumentUploaded', + DocumentRejectedEvent::NAME => 'onDocumentRejected', + ApplicationStatusEvent::NAME => 'onApplicationStatus', ]; } + /** + * Notify teamer about accepted application + */ public function onDispositionCreated(DispositionCreatedEvent $event): void { $disposition = $event->getDisposition(); @@ -39,6 +47,9 @@ class EmailNotificationSubscriber implements EventSubscriberInterface ]); } + /** + * Notify managers about uploaded documents + */ public function onDocumentUploaded(DocumentUploadedEvent $event): void { $document = $event->getDocument(); @@ -67,4 +78,52 @@ class EmailNotificationSubscriber implements EventSubscriberInterface } } } + + /** + * Notify teamer about rejected document + */ + public function onDocumentRejected(DocumentRejectedEvent $event): void + { + $document = $event->getDocument(); + $disposition = $document->getDisposition(); + $teamer = $disposition->getTeamer(); + + $documentTypeLabel = match ($document->getType()) { + Upload::TYPE_CONTRACT => 'dein Honorarvertrag', + Upload::TYPE_INVOICE => 'deine Honorarnote', + default => 'Dokument '.$document->getOriginalFilename(), + }; + + $this->mailer->createAndSendEmail([ + 'disposition' => $disposition, + 'documentTypeLabel' => $documentTypeLabel, + 'comment' => $event->getComment(), + ], [ + 'to' => $teamer->getCommunication()->getEmail(), + 'subject' => ucfirst($documentTypeLabel).' wurde abgelehnt', + 'template' => 'email/document_rejected.html.twig', + ]); + } + + /** + * Notify teamer about rejected application + */ + public function onApplicationStatus(ApplicationStatusEvent $event): void + { + $application = $event->getApplication(); + + if (Application::STATUS_REJECTED !== $application->getStatus()) { + return; + } + + $teamer = $application->getTeamer(); + + $this->mailer->createAndSendEmail([ + 'appplication' => $application, + ], [ + 'to' => $teamer->getCommunication()->getEmail(), + 'subject' => 'Deine Bewerbung wurde abgelehnt', + 'template' => 'email/application_rejected.html.twig', + ]); + } } \ No newline at end of file diff --git a/templates/email/application_rejected.html.twig b/templates/email/application_rejected.html.twig new file mode 100644 index 0000000..34882ee --- /dev/null +++ b/templates/email/application_rejected.html.twig @@ -0,0 +1,20 @@ +{% extends 'email/layout.html.twig' %} + +{% block body %} +
+ leider konnte deine Bewerbung für den vorliegenden Einsatz nicht angenommen werden. Dies kann unterschiedliche + Gründe haben, wie bspw. Unpassende Buszustiege, zu späte Bewerbung, unpassendes Jobprofil, zu viele andere + Bewerbungen o.ä. +
++ Bewirb dich doch gerne auf weitere Einsätze, vielleicht hast du diesmal Glück! 😊 +
++ + Zum Portal + +
+{% endblock %} \ No newline at end of file diff --git a/templates/email/document_rejected.html.twig b/templates/email/document_rejected.html.twig new file mode 100644 index 0000000..6015a05 --- /dev/null +++ b/templates/email/document_rejected.html.twig @@ -0,0 +1,22 @@ +{% extends 'email/layout.html.twig' %} + +{% block body %} ++ leider wurde {{ documentTypeLabel }} für den Einsatz {{ disposition.assignment.destination}} mit folgender + Begründung abgelehnt: +
++ {{ comment | nl2br }} +
++ Überarbeite das Dokument bitte und lade es erneut hoch. +
++ + Zum Portal + +
+{% endblock %} \ No newline at end of file diff --git a/templates/email/reminder_contract_upload.html.twig b/templates/email/reminder_contract_upload.html.twig index 3dd2267..0d99f82 100644 --- a/templates/email/reminder_contract_upload.html.twig +++ b/templates/email/reminder_contract_upload.html.twig @@ -2,21 +2,17 @@ {% block body %}+ bitte denke daran, deinen ausgefüllten Honorarvertrag für folgenden Einsatz hochzuladen. Vorher können wir nicht + fest mit dir planen und behalten uns vor den Einsatz anderweitig zu vergeben. +
- Honorarvertrag zu deinem Einsatz {{ disposition.assignment.destination}}. + {{ disposition.assignment.destination}}.
-- Dein Honorarvertrag wurde noch nicht ausgefüllt. Du hast noch 3 Tage Zeit diesen ausgefüllt hochzuladen. Hältst - du diese Frist nicht ein, verfällt das Einsatzangebot und deine Teamkolleg:innen erhalten die Chance, diesen - Einsatz zu besetzen. -
-- Setz dich am besten direkt dran, damit du es nicht vergisst! 😊 -
Zum Portal
diff --git a/templates/email/reminder_invoice_upload.html.twig b/templates/email/reminder_invoice_upload.html.twig
index 298adcb..7c1639d 100644
--- a/templates/email/reminder_invoice_upload.html.twig
+++ b/templates/email/reminder_invoice_upload.html.twig
@@ -2,19 +2,12 @@
{% block body %}
-
- Honorarnote zu deinem Einsatz {{ disposition.assignment.destination}}.
-
-
- Deine Honorarnote wurde noch nicht ausgefüllt. Du hast noch 3 Tage Zeit diese ausgefüllt hochzuladen. Hältst du
- diese Frist nicht ein, verfällt die Honorarnote und du erhältst kein Geld mehr!
-
- Setz dich am besten direkt dran, damit du es nicht vergisst! 😊
+ vielen Dank für deinen Einsatz {{ disposition.assignment.destination}}. Bitte lade deine Honorarnote innerhalb
+ der nächsten 14 Tage hoch, damit wir dein Honorar bearbeiten können. Solltest du deine Honorarnote zu spät
+ hochladen, können wir sie eventuell nicht mehr annehmen.
- Reminder zu fehlenden Dokumenten
+ Hallo aus Köln,