diff --git a/api/BusinessLogic/Emails/EmailSenderHelper.php b/api/BusinessLogic/Emails/EmailSenderHelper.php index 5558024e..10dd99ca 100644 --- a/api/BusinessLogic/Emails/EmailSenderHelper.php +++ b/api/BusinessLogic/Emails/EmailSenderHelper.php @@ -25,8 +25,9 @@ class EmailSenderHelper { $this->mailgunEmailSender = $mailgunEmailSender; } - function sendEmailForTicket($emailTemplateName, $ticket, $heskSettings, $modsForHeskSettings) { - //-- parse template + function sendEmailForTicket($templateId, $languageCode, $ticket, $heskSettings, $modsForHeskSettings) { + $parsedTemplate = $this->emailTemplateParser->getFormattedEmailForLanguage($templateId, $languageCode, + $ticket, $heskSettings, $modsForHeskSettings); //-- if no mailgun, use basic sender diff --git a/api/BusinessLogic/Emails/EmailTemplateParser.php b/api/BusinessLogic/Emails/EmailTemplateParser.php index c6a3df11..0d3974ca 100644 --- a/api/BusinessLogic/Emails/EmailTemplateParser.php +++ b/api/BusinessLogic/Emails/EmailTemplateParser.php @@ -43,27 +43,27 @@ class EmailTemplateParser { /** * @param $templateId int - * @param $language string + * @param $languageCode string * @param $ticket Ticket * @param $heskSettings array * @param $modsForHeskSettings array * @return ParsedEmailProperties * @throws InvalidEmailTemplateException */ - function getFormattedEmailForLanguage($templateId, $language, $ticket, $heskSettings, $modsForHeskSettings) { + function getFormattedEmailForLanguage($templateId, $languageCode, $ticket, $heskSettings, $modsForHeskSettings) { $emailTemplate = $this->emailTemplateRetriever->getTemplate($templateId); if ($emailTemplate === null) { throw new InvalidEmailTemplateException($templateId); } - $template = self::getFromFileSystem($emailTemplate->fileName, $language, false); - $htmlTemplate = self::getFromFileSystem($emailTemplate->fileName, $language, true); + $template = self::getFromFileSystem($emailTemplate->fileName, $languageCode, false); + $htmlTemplate = self::getFromFileSystem($emailTemplate->fileName, $languageCode, true); $subject = $emailTemplate->languageKey; - $subject = $this->parseSubject($subject, $ticket, $language, $heskSettings); - $message = $this->parseMessage($template, $ticket, $language, $emailTemplate->forStaff, $heskSettings, $modsForHeskSettings, false); - $htmlMessage = $this->parseMessage($htmlTemplate, $ticket, $language, $emailTemplate->forStaff, $heskSettings, $modsForHeskSettings, true); + $subject = $this->parseSubject($subject, $ticket, $languageCode, $heskSettings); + $message = $this->parseMessage($template, $ticket, $languageCode, $emailTemplate->forStaff, $heskSettings, $modsForHeskSettings, false); + $htmlMessage = $this->parseMessage($htmlTemplate, $ticket, $languageCode, $emailTemplate->forStaff, $heskSettings, $modsForHeskSettings, true); return new ParsedEmailProperties($subject, $message, $htmlMessage); } diff --git a/api/Tests/BusinessLogic/Emails/EmailSenderHelperTest.php b/api/Tests/BusinessLogic/Emails/EmailSenderHelperTest.php index 4efcb99e..304868b4 100644 --- a/api/Tests/BusinessLogic/Emails/EmailSenderHelperTest.php +++ b/api/Tests/BusinessLogic/Emails/EmailSenderHelperTest.php @@ -3,6 +3,7 @@ namespace BusinessLogic\Emails; +use BusinessLogic\Tickets\Ticket; use PHPUnit\Framework\TestCase; class EmailSenderHelperTest extends TestCase { @@ -26,16 +27,38 @@ class EmailSenderHelperTest extends TestCase { */ private $emailSenderHelper; + /** + * @var $heskSettings array + */ + private $heskSettings; + + /** + * @var $modsForHeskSettings array + */ + private $modsForHeskSettings; + protected function setUp() { $this->emailTemplateParser = $this->createMock(EmailTemplateParser::class); $this->basicEmailSender = $this->createMock(BasicEmailSender::class); $this->mailgunEmailSender = $this->createMock(MailgunEmailSender::class); + $this->heskSettings = array(); $this->emailSenderHelper = new EmailSenderHelper($this->emailTemplateParser, $this->basicEmailSender, $this->mailgunEmailSender); } function testItParsesTheTemplateForTheTicket() { + //-- Arrange + $templateId = EmailTemplateRetriever::NEW_NOTE; + $languageCode = 'en'; + $ticket = new Ticket(); + + //-- Assert + $this->emailTemplateParser->expects($this->once()) + ->method('getFormattedEmailForLanguage') + ->with($templateId, $languageCode, $ticket, $this->heskSettings, $this->modsForHeskSettings); + //-- Act + $this->emailSenderHelper->sendEmailForTicket($templateId, $languageCode, $ticket, $this->heskSettings, $this->modsForHeskSettings); } }