Updates for spam notifications

This commit is contained in:
David Bomba 2023-12-17 09:50:35 +11:00
parent dd77eba16a
commit bbb60eea3a
2 changed files with 21 additions and 29 deletions

View File

@ -11,24 +11,25 @@
namespace App\Jobs\PostMark; namespace App\Jobs\PostMark;
use App\DataMapper\Analytics\Mail\EmailBounce; use App\Models\Company;
use App\DataMapper\Analytics\Mail\EmailSpam; use App\Models\SystemLog;
use App\Jobs\Util\SystemLogger;
use App\Libraries\MultiDB; 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\CreditInvitation;
use App\Models\InvoiceInvitation; use App\Models\InvoiceInvitation;
use Illuminate\Queue\SerializesModels;
use Turbo124\Beacon\Facades\LightLogs;
use App\Models\PurchaseOrderInvitation; use App\Models\PurchaseOrderInvitation;
use App\Models\QuoteInvitation; use Illuminate\Queue\InteractsWithQueue;
use App\Models\RecurringInvoiceInvitation; use App\Models\RecurringInvoiceInvitation;
use App\Models\SystemLog;
use App\Notifications\Ninja\EmailSpamNotification;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use App\DataMapper\Analytics\Mail\EmailSpam;
use Illuminate\Queue\SerializesModels; use App\DataMapper\Analytics\Mail\EmailBounce;
use Postmark\PostmarkClient; use App\Notifications\Ninja\EmailSpamNotification;
use Turbo124\Beacon\Facades\LightLogs;
class ProcessPostmarkWebhook implements ShouldQueue class ProcessPostmarkWebhook implements ShouldQueue
{ {
@ -82,9 +83,14 @@ class ProcessPostmarkWebhook implements ShouldQueue
public function handle() public function handle()
{ {
MultiDB::findAndSetDbByCompanyKey($this->request['Tag']); MultiDB::findAndSetDbByCompanyKey($this->request['Tag']);
$company = Company::where('company_key', $this->request['Tag'])->first();
$this->invitation = $this->discoverInvitation($this->request['MessageID']); $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) { if (!$this->invitation) {
return; return;
} }
@ -305,20 +311,8 @@ class ProcessPostmarkWebhook implements ShouldQueue
if($sl) { if($sl) {
$this->updateSystemLog($sl, $data); $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) private function discoverInvitation($message_id)

View File

@ -11,6 +11,7 @@
namespace App\Notifications\Ninja; namespace App\Notifications\Ninja;
use App\Models\Company;
use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Messages\SlackMessage;
use Illuminate\Notifications\Notification; use Illuminate\Notifications\Notification;
@ -21,11 +22,8 @@ class EmailSpamNotification extends Notification
* *
* @return void * @return void
*/ */
protected $account; public function __construct(protected Company $company)
public function __construct($account)
{ {
$this->account = $account;
} }
/** /**
@ -63,9 +61,9 @@ class EmailSpamNotification extends Notification
public function toSlack($notifiable) 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}"; $content .= "Owner {$owner->present()->name() } | {$owner->email}";