53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Lib\Helpers\MailjetHelper;
|
|
use App\Models\BrandContactList;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Queue\Queueable;
|
|
use App\Exceptions\MailjetException;
|
|
|
|
class SyncEmailOptOuts implements ShouldQueue
|
|
{
|
|
use Queueable;
|
|
|
|
/**
|
|
* Execute the job.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function handle(): void
|
|
{
|
|
try {
|
|
$contactLists = MailjetHelper::getContactLists();
|
|
|
|
if (empty($contactLists)) {
|
|
return;
|
|
}
|
|
|
|
foreach ($contactLists as $contactList) {
|
|
$listId = $contactList['ID'];
|
|
$brandModel = BrandContactList::getBrandContactListByMailjetListId($listId);
|
|
|
|
if ($brandModel) {
|
|
$unsubscribedContacts = MailjetHelper::getUnsubscribedContacts($listId, Carbon::now()->subDay());
|
|
|
|
if (empty($unsubscribedContacts)) {
|
|
continue;
|
|
}
|
|
|
|
foreach ($unsubscribedContacts as $unsubscribedContact) {
|
|
$contact = MailjetHelper::getContact($unsubscribedContact['ContactID']);
|
|
|
|
MailjetHelper::unsubscribeContact($brandModel->brand, $contact[0]["Email"]);
|
|
}
|
|
}
|
|
}
|
|
} catch (MailjetException $e) {
|
|
report($e);
|
|
return;
|
|
}//end try
|
|
}
|
|
}
|