Pretty much done with the EmailSenderHelper
This commit is contained in:
parent
e7eeac9f34
commit
2a6766c10e
21
api/BusinessLogic/Emails/Addressees.php
Normal file
21
api/BusinessLogic/Emails/Addressees.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace BusinessLogic\Emails;
|
||||
|
||||
|
||||
class Addressees {
|
||||
/**
|
||||
* @var $to string[]
|
||||
*/
|
||||
public $to;
|
||||
|
||||
/**
|
||||
* @var $cc string[]|null
|
||||
*/
|
||||
public $cc;
|
||||
|
||||
/**
|
||||
* @var $bcc string[]|null
|
||||
*/
|
||||
public $bcc;
|
||||
}
|
@ -3,6 +3,8 @@
|
||||
namespace BusinessLogic\Emails;
|
||||
|
||||
|
||||
use BusinessLogic\Tickets\Ticket;
|
||||
|
||||
class EmailSenderHelper {
|
||||
/**
|
||||
* @var $emailTemplateParser EmailTemplateParser
|
||||
@ -25,12 +27,35 @@ class EmailSenderHelper {
|
||||
$this->mailgunEmailSender = $mailgunEmailSender;
|
||||
}
|
||||
|
||||
function sendEmailForTicket($templateId, $languageCode, $ticket, $heskSettings, $modsForHeskSettings) {
|
||||
/**
|
||||
* @param $templateId int the EmailTemplateRetriever::TEMPLATE_NAME
|
||||
* @param $languageCode string the language code that matches the language folder
|
||||
* @param $addressees Addressees the addressees. **cc and bcc addresses from custom fields will be added here!**
|
||||
* @param $ticket Ticket
|
||||
* @param $heskSettings array
|
||||
* @param $modsForHeskSettings array
|
||||
*/
|
||||
function sendEmailForTicket($templateId, $languageCode, $addressees, $ticket, $heskSettings, $modsForHeskSettings) {
|
||||
$parsedTemplate = $this->emailTemplateParser->getFormattedEmailForLanguage($templateId, $languageCode,
|
||||
$ticket, $heskSettings, $modsForHeskSettings);
|
||||
|
||||
//-- if no mailgun, use basic sender
|
||||
$emailBuilder = new EmailBuilder();
|
||||
$emailBuilder->subject = $parsedTemplate->subject;
|
||||
$emailBuilder->message = $parsedTemplate->message;
|
||||
$emailBuilder->htmlMessage = $parsedTemplate->htmlMessage;
|
||||
$emailBuilder->to = $addressees->to;
|
||||
$emailBuilder->cc = $addressees->cc;
|
||||
$emailBuilder->bcc = $addressees->bcc;
|
||||
|
||||
if ($modsForHeskSettings['attachments']) {
|
||||
$emailBuilder->attachments = $ticket->attachments;
|
||||
}
|
||||
|
||||
if ($modsForHeskSettings['use_mailgun']) {
|
||||
$this->mailgunEmailSender->sendEmail($emailBuilder, $heskSettings, $modsForHeskSettings, $modsForHeskSettings['html_emails']);
|
||||
} else {
|
||||
$this->basicEmailSender->sendEmail($emailBuilder, $heskSettings, $modsForHeskSettings, $modsForHeskSettings['html_emails']);
|
||||
}
|
||||
|
||||
//-- otherwise use mailgun sender
|
||||
}
|
||||
}
|
@ -42,6 +42,11 @@ class EmailSenderHelperTest extends TestCase {
|
||||
$this->basicEmailSender = $this->createMock(BasicEmailSender::class);
|
||||
$this->mailgunEmailSender = $this->createMock(MailgunEmailSender::class);
|
||||
$this->heskSettings = array();
|
||||
$this->modsForHeskSettings = array(
|
||||
'attachments' => 0,
|
||||
'use_mailgun' => 0,
|
||||
'html_emails' => 0
|
||||
);
|
||||
|
||||
$this->emailSenderHelper = new EmailSenderHelper($this->emailTemplateParser, $this->basicEmailSender,
|
||||
$this->mailgunEmailSender);
|
||||
@ -52,6 +57,7 @@ class EmailSenderHelperTest extends TestCase {
|
||||
$templateId = EmailTemplateRetriever::NEW_NOTE;
|
||||
$languageCode = 'en';
|
||||
$ticket = new Ticket();
|
||||
$this->emailTemplateParser->method('getFormattedEmailForLanguage')->willReturn(new ParsedEmailProperties('Subject', 'Message', 'HTML Message'));
|
||||
|
||||
//-- Assert
|
||||
$this->emailTemplateParser->expects($this->once())
|
||||
@ -59,6 +65,62 @@ class EmailSenderHelperTest extends TestCase {
|
||||
->with($templateId, $languageCode, $ticket, $this->heskSettings, $this->modsForHeskSettings);
|
||||
|
||||
//-- Act
|
||||
$this->emailSenderHelper->sendEmailForTicket($templateId, $languageCode, $ticket, $this->heskSettings, $this->modsForHeskSettings);
|
||||
$this->emailSenderHelper->sendEmailForTicket($templateId, $languageCode, new Addressees(), $ticket, $this->heskSettings, $this->modsForHeskSettings);
|
||||
}
|
||||
|
||||
function testItSendsTheEmailThroughTheMailgunEmailSender() {
|
||||
//-- Arrange
|
||||
$addressees = new Addressees();
|
||||
$addressees->to = ['to@email'];
|
||||
$addressees->cc = ['cc1', 'cc2'];
|
||||
$addressees->bcc = ['bcc1', 'bcc2'];
|
||||
$this->modsForHeskSettings['use_mailgun'] = 1;
|
||||
$this->modsForHeskSettings['html_emails'] = true;
|
||||
|
||||
$expectedEmailBuilder = new EmailBuilder();
|
||||
$expectedEmailBuilder->to = $addressees->to;
|
||||
$expectedEmailBuilder->cc = $addressees->cc;
|
||||
$expectedEmailBuilder->bcc = $addressees->bcc;
|
||||
$expectedEmailBuilder->subject = 'Subject';
|
||||
$expectedEmailBuilder->message = 'Message';
|
||||
$expectedEmailBuilder->htmlMessage = 'HTML Message';
|
||||
|
||||
$this->emailTemplateParser->method('getFormattedEmailForLanguage')->willReturn(new ParsedEmailProperties('Subject', 'Message', 'HTML Message'));
|
||||
|
||||
//-- Assert
|
||||
$this->mailgunEmailSender->expects($this->once())
|
||||
->method('sendEmail')
|
||||
->with($expectedEmailBuilder, $this->heskSettings, $this->modsForHeskSettings, true);
|
||||
|
||||
//-- Act
|
||||
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::NEW_NOTE, 'en', $addressees, new Ticket(), $this->heskSettings, $this->modsForHeskSettings);
|
||||
}
|
||||
|
||||
function testItSendsTheEmailThroughTheBasicEmailSender() {
|
||||
//-- Arrange
|
||||
$addressees = new Addressees();
|
||||
$addressees->to = ['to@email'];
|
||||
$addressees->cc = ['cc1', 'cc2'];
|
||||
$addressees->bcc = ['bcc1', 'bcc2'];
|
||||
$this->modsForHeskSettings['use_mailgun'] = 0;
|
||||
$this->modsForHeskSettings['html_emails'] = true;
|
||||
|
||||
$expectedEmailBuilder = new EmailBuilder();
|
||||
$expectedEmailBuilder->to = $addressees->to;
|
||||
$expectedEmailBuilder->cc = $addressees->cc;
|
||||
$expectedEmailBuilder->bcc = $addressees->bcc;
|
||||
$expectedEmailBuilder->subject = 'Subject';
|
||||
$expectedEmailBuilder->message = 'Message';
|
||||
$expectedEmailBuilder->htmlMessage = 'HTML Message';
|
||||
|
||||
$this->emailTemplateParser->method('getFormattedEmailForLanguage')->willReturn(new ParsedEmailProperties('Subject', 'Message', 'HTML Message'));
|
||||
|
||||
//-- Assert
|
||||
$this->basicEmailSender->expects($this->once())
|
||||
->method('sendEmail')
|
||||
->with($expectedEmailBuilder, $this->heskSettings, $this->modsForHeskSettings, true);
|
||||
|
||||
//-- Act
|
||||
$this->emailSenderHelper->sendEmailForTicket(EmailTemplateRetriever::NEW_NOTE, 'en', $addressees, new Ticket(), $this->heskSettings, $this->modsForHeskSettings);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user