Working on email history for PostMark

This commit is contained in:
David Bomba 2023-08-23 14:36:55 +10:00
parent 6f23fc3133
commit e1e99cbd9e
2 changed files with 40 additions and 20 deletions

View File

@ -38,14 +38,14 @@ class ProcessPostmarkWebhook implements ShouldQueue
public $invitation;
private $entity;
private array $default_response = [
'recipients' => '',
'subject' => 'Message not found.',
'status' => '',
'recipient' => '',
'type' => '',
'delivery_message' => '',
'server' => '',
'server_ip' => '',
'entity' => '',
'entity_id' => '',
'events' => [],
];
/**
@ -275,14 +275,19 @@ class ProcessPostmarkWebhook implements ShouldQueue
$invitation = false;
if ($invitation = InvoiceInvitation::where('message_id', $message_id)->first()) {
$this->entity = 'invoice';
return $invitation;
} elseif ($invitation = QuoteInvitation::where('message_id', $message_id)->first()) {
$this->entity = 'quote';
return $invitation;
} elseif ($invitation = RecurringInvoiceInvitation::where('message_id', $message_id)->first()) {
$this->entity = 'recurring_invoice';
return $invitation;
} elseif ($invitation = CreditInvitation::where('message_id', $message_id)->first()) {
$this->entity = 'credit';
return $invitation;
} elseif ($invitation = PurchaseOrderInvitation::where('message_id', $message_id)->first()) {
$this->entity = 'purchase_order';
return $invitation;
} else {
return $invitation;
@ -297,17 +302,31 @@ class ProcessPostmarkWebhook implements ShouldQueue
try {
$postmark = new PostmarkClient(config('services.postmark.secret'));
$postmark = new PostmarkClient(config('services.postmark.token'));
$messageDetail = $postmark->getOutboundMessageDetails($this->request['MessageID']);
$recipients = collect($messageDetail['recipients'])->flatten()->implode(',');
$subject = $messageDetail->subject ?? '';
$events = collect($messageDetail->messageevents)->map(function ($event) {
return [
'subject' => $messageDetail->subject ?? '',
'status' => $messageDetail->status ?? '',
'recipient' => $messageDetail->messageevents[0]['Recipient'] ?? '',
'type' => $messageDetail->messageevents[0]->Type ?? '',
'subject' => $messageDetail->messageevents[0]->Details->DeliveryMessage ?? '',
'server' => $messageDetail->messageevents[0]->Details->DestinationServer ?? '',
'server_ip' => $messageDetail->messageevents[0]->Details->DestinationIP ?? '',
'recipient' => $event->Recipient ?? '',
'status' => $event->Type ?? '',
'delivery_message' => $event->Details->DeliveryMessage ?? $event->Details->Summary ?? '',
'server' => $event->Details->DestinationServer ?? '',
'server_ip' => $event->Details->DestinationIP ?? '',
'date' => \Carbon\Carbon::parse($event->ReceivedAt)->format('Y-m-d H:m:s') ?? '',
];
})->toArray();
return [
'recipients' => $recipients,
'subject' => $subject,
'entity' => $this->entity ?? '',
'entity_id' => $this->invitation->{$this->entity}->hashed_id ?? '',
'events' => $events,
];
}

View File

@ -16,6 +16,7 @@ use App\Models\SystemLog;
use Postmark\PostmarkClient;
use App\Services\AbstractService;
/** @deprecated */
class EmailHistory extends AbstractService
{
private string $postmark_token;
@ -27,7 +28,7 @@ class EmailHistory extends AbstractService
'status' => '',
'recipient' => '',
'type' => '',
'subject' => '',
'delivery_message' => '',
'server' => '',
'server_ip' => '',
];