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 %} +

+ Hallo aus Köln, +

+

+ 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 %} +

+ Hallo aus Köln, +

+

+ 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 %}

- Reminder zu fehlenden Dokumenten + Hallo aus Köln,

+

+ 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 %}

- Reminder zu fehlenden Dokumenten + Hallo aus Köln,

- - 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.