Fixes for postmark delivery logging

This commit is contained in:
David Bomba 2022-08-17 17:18:30 +10:00
parent 72ad8915e9
commit 30defb6170
6 changed files with 69 additions and 18 deletions

View File

@ -1 +1 @@
5.5.10 5.5.11

View File

@ -102,6 +102,17 @@ class NinjaMailerJob implements ShouldQueue
$this->nmo->mailable->tag($this->company->company_key); $this->nmo->mailable->tag($this->company->company_key);
if($this->nmo->invitation)
{
$this->nmo
->mailable
->withSymfonyMessage(function ($message) {
$message->getHeaders()->addTextHeader('x-invitation', $this->nmo->invitation->key);
});
}
//send email //send email
try { try {
nlog("trying to send to {$this->nmo->to_user->email} ". now()->toDateTimeString()); nlog("trying to send to {$this->nmo->to_user->email} ". now()->toDateTimeString());

View File

@ -26,6 +26,7 @@ use App\Models\Company;
use App\Models\CreditInvitation; use App\Models\CreditInvitation;
use App\Models\InvoiceInvitation; use App\Models\InvoiceInvitation;
use App\Models\Payment; use App\Models\Payment;
use App\Models\PurchaseOrderInvitation;
use App\Models\QuoteInvitation; use App\Models\QuoteInvitation;
use App\Models\RecurringInvoiceInvitation; use App\Models\RecurringInvoiceInvitation;
use App\Models\SystemLog; use App\Models\SystemLog;
@ -283,6 +284,8 @@ class ProcessPostmarkWebhook implements ShouldQueue
return $invitation; return $invitation;
elseif($invitation = CreditInvitation::where('message_id', $message_id)->first()) elseif($invitation = CreditInvitation::where('message_id', $message_id)->first())
return $invitation; return $invitation;
elseif($invitation = PurchaseOrderInvitation::where('message_id', $message_id)->first())
return $invitation;
else else
return $invitation; return $invitation;
} }

View File

@ -12,9 +12,15 @@
namespace App\Listeners\Mail; namespace App\Listeners\Mail;
use App\Libraries\MultiDB; use App\Libraries\MultiDB;
use App\Models\CreditInvitation;
use App\Models\InvoiceInvitation;
use App\Models\PurchaseOrderInvitation;
use App\Models\QuoteInvitation;
use App\Models\RecurringInvoiceInvitation;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Events\MessageSent; use Illuminate\Mail\Events\MessageSent;
use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Notification;
use Symfony\Component\Mime\MessageConverter;
class MailSentListener implements ShouldQueue class MailSentListener implements ShouldQueue
{ {
@ -35,19 +41,50 @@ class MailSentListener implements ShouldQueue
*/ */
public function handle(MessageSent $event) public function handle(MessageSent $event)
{ {
nlog("mail listener");
nlog($event);
// if (property_exists($event->message, 'invitation') && $event->message->invitation) {
// MultiDB::setDb($event->sent->invitation->company->db);
// if ($event->message->getHeaders()->get('x-pm-message-id')) { $message_id = $event->sent->getMessageId();
// $postmark_id = $event->sent->getHeaders()->get('x-pm-message-id')->getValue();
// // nlog($postmark_id); $message = MessageConverter::toEmail($event->sent->getOriginalMessage());
// $invitation = $event->sent->invitation;
// $invitation->message_id = $postmark_id; $invitation_key = $message->getHeaders()->get('x-invitation')->getValue();
// $invitation->save();
// } if($message_id && $invitation_key)
// } {
$invitation = $this->discoverInvitation($invitation_key);
if(!$invitation)
return;
$invitation->message_id = $message_id;
$invitation->save();
} }
}
private function discoverInvitation($key)
{
$invitation = false;
foreach (MultiDB::$dbs as $db)
{
if($invitation = InvoiceInvitation::on($db)->where('key', $key)->first())
return $invitation;
elseif($invitation = QuoteInvitation::on($db)->where('key', $key)->first())
return $invitation;
elseif($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first())
return $invitation;
elseif($invitation = CreditInvitation::on($db)->where('key', $key)->first())
return $invitation;
elseif($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first())
return $invitation;
}
return $invitation;
}
} }

View File

@ -271,9 +271,9 @@ class EventServiceProvider extends ServiceProvider
], ],
MessageSending::class => [ MessageSending::class => [
], ],
// MessageSent::class => [ MessageSent::class => [
// MailSentListener::class, MailSentListener::class,
// ], ],
UserWasCreated::class => [ UserWasCreated::class => [
CreatedUserActivity::class, CreatedUserActivity::class,
SendVerificationNotification::class, SendVerificationNotification::class,

View File

@ -14,8 +14,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true), 'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
'app_version' => '5.5.10', 'app_version' => '5.5.11',
'app_tag' => '5.5.10', 'app_tag' => '5.5.11',
'minimum_client_version' => '5.0.16', 'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1', 'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', ''), 'api_secret' => env('API_SECRET', ''),