EknotifierEmail.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace ElkenGit\EknotifierPHP;
  3. use Carbon\Carbon;
  4. /**
  5. * Class EmailNotifier to provide Email Notifier integration for EKNotifier Service.
  6. */
  7. class EknotifierEmail extends EknotifierCommon
  8. {
  9. /**
  10. * Instantiate EknotifierEmail Class.
  11. *
  12. * @param string|null $url
  13. * @param string|null $applicationCode
  14. * @param string|null $applicationPassword
  15. * @throws \Exception
  16. */
  17. public function __construct(string $url = null, string $applicationCode = null, string $applicationPassword = null)
  18. {
  19. parent::__construct($url, $applicationCode, $applicationPassword);
  20. }
  21. /**
  22. * Send email to the eknotifier service.
  23. *
  24. * @param array $emails
  25. * @param string $subject
  26. * @param string $text
  27. * @param int $userId
  28. * @return bool
  29. * @throws \GuzzleHttp\Exception\GuzzleException
  30. */
  31. public function sendEmail(array $emails, string $subject, string $text): bool
  32. {
  33. $token = $this->getAuthToken();
  34. $request = [
  35. 'name' => $this->applicationCode . ' EMAIL ' . (count($emails) > 1 ? '[multiple]' : $emails[0]['email']),
  36. 'send_at' => Carbon::now()->format('Y-m-d H:i:s'),
  37. 'recipients' => []
  38. ];
  39. foreach ($emails as $recipient) {
  40. $request['recipients'][] = [
  41. 'application_user_id' => $recipient['user_id'] ?? 0,
  42. 'delivery_destination' => $recipient['email'],
  43. 'delivery_type' => 'EMAIL',
  44. 'subject' => $subject,
  45. 'body' => $text
  46. ];
  47. }
  48. $response = $this->postAPI('notification/send', $request, $token);
  49. return $response->getStatusCode() === 200;
  50. }
  51. }