From bbb60eea3a6d4d6ff47415635e8b158223baa66b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 17 Dec 2023 09:50:35 +1100 Subject: [PATCH] Updates for spam notifications --- app/Jobs/PostMark/ProcessPostmarkWebhook.php | 40 ++++++++----------- .../Ninja/EmailSpamNotification.php | 10 ++--- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/app/Jobs/PostMark/ProcessPostmarkWebhook.php b/app/Jobs/PostMark/ProcessPostmarkWebhook.php index a1b54aff4b81..b2152c8eb017 100644 --- a/app/Jobs/PostMark/ProcessPostmarkWebhook.php +++ b/app/Jobs/PostMark/ProcessPostmarkWebhook.php @@ -11,24 +11,25 @@ namespace App\Jobs\PostMark; -use App\DataMapper\Analytics\Mail\EmailBounce; -use App\DataMapper\Analytics\Mail\EmailSpam; -use App\Jobs\Util\SystemLogger; +use App\Models\Company; +use App\Models\SystemLog; use App\Libraries\MultiDB; +use Postmark\PostmarkClient; +use Illuminate\Bus\Queueable; +use App\Jobs\Util\SystemLogger; +use App\Models\QuoteInvitation; use App\Models\CreditInvitation; use App\Models\InvoiceInvitation; +use Illuminate\Queue\SerializesModels; +use Turbo124\Beacon\Facades\LightLogs; use App\Models\PurchaseOrderInvitation; -use App\Models\QuoteInvitation; +use Illuminate\Queue\InteractsWithQueue; use App\Models\RecurringInvoiceInvitation; -use App\Models\SystemLog; -use App\Notifications\Ninja\EmailSpamNotification; -use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Queue\SerializesModels; -use Postmark\PostmarkClient; -use Turbo124\Beacon\Facades\LightLogs; +use App\DataMapper\Analytics\Mail\EmailSpam; +use App\DataMapper\Analytics\Mail\EmailBounce; +use App\Notifications\Ninja\EmailSpamNotification; class ProcessPostmarkWebhook implements ShouldQueue { @@ -82,9 +83,14 @@ class ProcessPostmarkWebhook implements ShouldQueue public function handle() { MultiDB::findAndSetDbByCompanyKey($this->request['Tag']); + $company = Company::where('company_key', $this->request['Tag'])->first(); $this->invitation = $this->discoverInvitation($this->request['MessageID']); + if ($company && $this->request['RecordType'] == 'SpamComplaint' && config('ninja.notification.slack')) { + $company->notification(new EmailSpamNotification($company))->ninja(); + } + if (!$this->invitation) { return; } @@ -305,20 +311,8 @@ class ProcessPostmarkWebhook implements ShouldQueue if($sl) { $this->updateSystemLog($sl, $data); - - if (config('ninja.notification.slack')) { - $this->invitation->company->notification(new EmailSpamNotification($this->invitation->company->account))->ninja(); - } - - return; } - (new SystemLogger($data, SystemLog::CATEGORY_MAIL, SystemLog::EVENT_MAIL_SPAM_COMPLAINT, SystemLog::TYPE_WEBHOOK_RESPONSE, $this->invitation->contact->client, $this->invitation->company))->handle(); - -if (config('ninja.notification.slack')) { - $this->invitation->company->notification(new EmailSpamNotification($this->invitation->company->account))->ninja(); -} - } private function discoverInvitation($message_id) diff --git a/app/Notifications/Ninja/EmailSpamNotification.php b/app/Notifications/Ninja/EmailSpamNotification.php index e4cd98b6c5b4..8abdc6e8f1a2 100644 --- a/app/Notifications/Ninja/EmailSpamNotification.php +++ b/app/Notifications/Ninja/EmailSpamNotification.php @@ -11,6 +11,7 @@ namespace App\Notifications\Ninja; +use App\Models\Company; use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Notification; @@ -21,11 +22,8 @@ class EmailSpamNotification extends Notification * * @return void */ - protected $account; - - public function __construct($account) + public function __construct(protected Company $company) { - $this->account = $account; } /** @@ -63,9 +61,9 @@ class EmailSpamNotification extends Notification public function toSlack($notifiable) { - $content = "Email SPAM notification for Account {$this->account->key} \n"; + $content = "Email SPAM notification for Company {$this->company->company_key} \n"; - $owner = $this->account->companies()->first()->owner(); + $owner = $this->company->owner(); $content .= "Owner {$owner->present()->name() } | {$owner->email}";