diff --git a/src/Command/CronCommand.php b/src/Command/CronCommand.php index 3674ea3..546db52 100644 --- a/src/Command/CronCommand.php +++ b/src/Command/CronCommand.php @@ -2,6 +2,7 @@ namespace App\Command; +use App\Service\Cron\DispositionReminderService; use App\Service\Cron\DispositionStatusService; use App\Service\Cron\FeedbackReminderService; use App\Service\Cron\FlushLogsService; @@ -22,7 +23,8 @@ class CronCommand extends Command private readonly FlushLogsService $flushLogsService, private readonly UploadReminderService $uploadReminderService, private readonly FeedbackReminderService $feedbackReminderService, - private readonly DispositionStatusService $dispositionStatusService + private readonly DispositionStatusService $dispositionStatusService, + private readonly DispositionReminderService $dispositionReminderService, ) { parent::__construct(); } @@ -50,6 +52,9 @@ class CronCommand extends Command $message = $this->dispositionStatusService->setEndedStatus(); $io->info($message); + $message = $this->dispositionReminderService->sendDispositionReminders(); + $io->info($message); + return Command::SUCCESS; } } diff --git a/src/Service/Cron/DispositionReminderService.php b/src/Service/Cron/DispositionReminderService.php new file mode 100644 index 0000000..588f961 --- /dev/null +++ b/src/Service/Cron/DispositionReminderService.php @@ -0,0 +1,62 @@ +modify('+5 days'); + $qb = $this->dispositionRepository->createQueryBuilder('disposition'); + + $dispositions = $qb + ->select('disposition', 'assignment', 'destination') + ->innerJoin('disposition.assignment', 'assignment') + ->innerJoin('assignment.destination', 'destination') + ->where($qb->expr()->eq('destination.dateFrom', ':dateFrom')) + ->setParameter('dateFrom', $dateFrom->format('Y-m-d')) + ->getQuery() + ->getResult() + ; + + if (0 === $count = count($dispositions)) { + $message = 'No disposition reminders to be sent to teamers'; + $this->logger->info($message); + + return $message; + } + + foreach ($dispositions as $disposition) { + /** @var Disposition $disposition */ + $teamer = $disposition->getTeamer(); + $assignment = $disposition->getAssignment(); + $destination = $assignment->getDestination(); + + $this->mailer->createAndSendEmail([ + 'disposition' => $disposition, + ], [ + 'to' => $teamer->getCommunication()->getEmail(), + 'subject' => 'Reminder: Dein Einsatz '.$destination, + 'template' => 'email/reminder_pre_disposition.html.twig', + ]); + } + + $message = 'Sent '.$count.' disposition reminders to teamers'; + $this->logger->info($message); + + return $message; + } +} \ No newline at end of file diff --git a/templates/email/reminder_pre_disposition.html.twig b/templates/email/reminder_pre_disposition.html.twig new file mode 100644 index 0000000..5221cce --- /dev/null +++ b/templates/email/reminder_pre_disposition.html.twig @@ -0,0 +1,31 @@ +{% extends 'email/layout.html.twig' %} + +{% block body %} + {% set destination = disposition.assignment.destination %} +

+ Hallo aus Köln, +

+

+ dein Einsatz als {{ disposition.assignment.jobProfile.name }}, {{ destination.product }} vom + {{ destination.dateFrom | date('d.m.Y') }} bis {{ destination.dateTo | date('d.m.Y') }} beginnt in fünf + Tagen. +

+

+ Wir hoffen, dass du ich schon freust und wünschen dir viel Spaß und Erfolg! Finale Infos erhältst du, falls noch + nicht geschehen, ein paar Tage vor deinem Einsatz von deinen zuständigen Haus- oder Reisemanager:innen. +

+

+ Bitte denk daran, deine ausgefüllte Honorarnote bis zu 14 Tage nach deinem Einsatz in My + E&P Team hochzuladen. +

+

+ Liebe Grüße, +
+ dein Team Personalabteilung +

+

+ + Zum Portal + +

+{% endblock %} \ No newline at end of file