From: Vincent Vanwaelscappel Date: Tue, 16 Jan 2024 15:40:44 +0000 (+0100) Subject: wait #6626 @1.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=a2426bde246226661ae7ee07568d67a2376de854;p=fluidbook-toolbox.git wait #6626 @1.5 --- diff --git a/app/Jobs/MailjetSyncList.php b/app/Jobs/MailjetSyncList.php index ff4744a2e..1b9885cae 100644 --- a/app/Jobs/MailjetSyncList.php +++ b/app/Jobs/MailjetSyncList.php @@ -11,6 +11,7 @@ use Egulias\EmailValidator\Validation\DNSCheckValidation; use Egulias\EmailValidator\Validation\MultipleValidationWithAnd; use Egulias\EmailValidator\Validation\RFCValidation; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\DB; use Mailjet\Client; use Mailjet\Resources; @@ -23,7 +24,8 @@ class MailjetSyncList extends Base */ public function handle() { - + $this->syncStatusFromMailjet(); + dump('Synced status from mailjet'); $skippedCompanies = []; $companies = []; @@ -106,6 +108,7 @@ class MailjetSyncList extends Base foreach ($contacts as $action => $list) { $this->addContactsToList($list, $action); } + } protected function addContactsToList($contacts, $action = 'addnoforce') @@ -134,6 +137,48 @@ class MailjetSyncList extends Base } } + protected function syncStatusFromMailjet() + { + $mj = static::_api(); + $i = 0; + $batchs = 500; + $unsub = []; + $unsubEmails = []; + while (true) { + $response = $mj->get(Resources::$Listrecipient, ['filters' => ['ContactsList' => static::LIST_ID, + 'Limit' => $batchs, + 'Offset' => $i * $batchs, + 'Unsub' => "true"]]); + + + foreach ($response->getData() as $contact) { + $unsub[] = $contact['ContactID']; + } + + if ($response->getCount() < $batchs) { + break; + } + $i++; + } + while (true) { + $response = $mj->get(Resources::$Contact, ['filters' => ['ContactsList' => static::LIST_ID, + 'Limit' => $batchs, + 'Offset' => $i * $batchs, + ]]); + + foreach ($response->getData() as $contact) { + if (in_array($contact['ID'], $unsub)) { + $unsubEmails[] = $contact['Email']; + } + } + if ($response->getCount() < $batchs) { + break; + } + $i++; + } + DB::table('extranet_users.user')->whereIn('email', $unsubEmails)->update(['marketing' => 0]); + } + /** * @return Client */