Source of file SendQuestionnaireSubmittedEmailJob.php
Size: 3,019 Bytes - Last Modified: 2021-12-23T10:08:54+00:00
/var/www/docs.ssmods.com/process/src/src/Job/SendQuestionnaireSubmittedEmailJob.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | <?php /** * This file contains the "SendQuestionnaireSubmittedEmailJob" class. * * @category SilverStripe_Project * @package SDLT * @author Catalyst I.T. SilverStripe Team 2018 <silverstripedev@catalyst.net.nz> * @copyright NZ Transport Agency * @license BSD-3 * @link https://www.catalyst.net.nz */ namespace NZTA\SDLT\Job; use SilverStripe\Control\Email\Email; use Symbiote\QueuedJobs\Services\AbstractQueuedJob; use Symbiote\QueuedJobs\Services\QueuedJobService; use Symbiote\QueuedJobs\Services\QueuedJob; use NZTA\SDLT\Model\QuestionnaireEmail; use NZTA\SDLT\Model\QuestionnaireSubmission; use SilverStripe\ORM\ManyManyList; use SilverStripe\Security\Member; /** * A QueuedJob is specifically designed to be invoked from an onAfterWrite() process */ class SendQuestionnaireSubmittedEmailJob extends AbstractQueuedJob implements QueuedJob { /** * @param QuestionnaireSubmission $questionnaireSubmission $questionnaireSubmission * @param ManyManyList $members A list of {@link Member} records. * @return void */ public function __construct($questionnaireSubmission = null, $members = null) { $this->questionnaireSubmission = $questionnaireSubmission; $this->members = $members; } /** * @return string */ public function getTitle() { return sprintf( 'Initialising questionnaire submitted email job for %s (%d)', $this->questionnaireSubmission->Questionnaire()->Name, $this->questionnaireSubmission->ID ); } /** * {@inheritDoc} * @return string */ public function getJobType() { return QueuedJob::QUEUED; } /** * @return mixed void | null */ public function process() { if ($this->members) { foreach ($this->members as $member) { $this->sendEmail( $member->FirstName, $member->Email ); } } $this->isComplete = true; } /** * Handles the meat of the CSV import process. * * @return mixed void | null */ public function sendEmail($name = '', $toEmail = '') { $emailDetails = QuestionnaireEmail::get()->first(); $sub = $this->questionnaireSubmission->replaceVariable( $emailDetails->QuestionnaireSubmittedEmailSubject ); $body = $this->questionnaireSubmission->replaceVariable( $emailDetails->QuestionnaireSubmittedEmailBody ); $from = $emailDetails->FromEmailAddress; $email = Email::create() ->setHTMLTemplate('Email\\EmailTemplate') ->setData([ 'Name' => $name, 'Body' => $body, 'EmailSignature' => $emailDetails->EmailSignature ]) ->setFrom($from) ->setTo($toEmail) ->setSubject($sub); $email->send(); } } |