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;
*/
public function handle()
{
-
+ $this->syncStatusFromMailjet();
+ dump('Synced status from mailjet');
$skippedCompanies = [];
$companies = [];
foreach ($contacts as $action => $list) {
$this->addContactsToList($list, $action);
}
+
}
protected function addContactsToList($contacts, $action = 'addnoforce')
}
}
+ 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
*/