<?php
/**
* Copyright insign gmbh. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Insign\FormDataBundle\Event;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Krankheitsmeldung;
use Pimcore\Tool\Admin;
class WorkflowUpdateEvents extends FormDataSavedListener
{
const WORKFLOW_LOG_FOLDER = 'workflowLog';
/**
* This event trigger email sending when Certfificate going to expire in x dayss
* @param $event
* @return void
*/
public function onReminderMedicalCertfificateGoingToExpire($event)
{
$data = $event->getData();
$template = '@InsignFormData/email/workflow/reminder_medical_certificate_going_expire.html.twig';
$this->sendReminderEmails($data, $template);
}
/**
* This email is triggered when certificate is already expired.
* Template: reminder_medical_certificate_expire.html.twig
* @param $event
* @return void
*/
public function onReminderMedicalCertfificateExpired($event)
{
$data = $event->getData();
$template = '@InsignFormData/email/workflow/reminder_medical_certificate_expired.html.twig';
$this->sendReminderEmails($data, $template);
}
private function sendReminderEmails(array $data, string $template)
{
$uuid = $data ['uuid'] ?? '';
$validUntil = $data ['validUntil'] ?? '';
$updateUntil = $data ['updateUntil'] ?? '';
/** @var Krankheitsmeldung $sickness */
$sickness = $data ['sickness'];
$name = $sickness->getNachname_erkrankte_Person().' '. $sickness->getVorname_erkrankte_Person();
$email = $sickness->getE_Mail_zustaendige_Person();
$url = sprintf("%s%s%s", $this->encryption->getReactFormUrl(), 'auth/', $uuid);
$parameters = [
'uuid'=>$uuid,
'name'=>$name,
'validUntil' => $validUntil,
'updateUntil' => $updateUntil,
'update_url' => $url
];
$subject = $name; // it might be change
$emailBody = $this->mailer->getBody($template, $parameters);
$mailer = $this->mailer->getEmailObject();
$mailer->from($this->mailer->getFromEmailWorkflow())
->subject($subject)
->to($email)
->html($emailBody);
try {
$mailer->send();
} catch (\Exception $e) {
$this->logger->error($e->getMessage());
}
}
}