'Champs obligatoire'], [['integrate_product_list'], 'boolean'], [['id_distribution'],'integer'] ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'subject' => 'Sujet', 'message' => 'Message', 'id_distribution' => 'Distribution', 'integrate_product_list' => 'Intégrer la liste des produits au message' ]; } /** * Envoie un email aux utilisateurs définis en paramètre. * * @param array $usersArray * @param boolean $fromProducer */ public function sendEmail($usersArray, $fromProducer = true) { $productModule = ProductModule::getInstance(); $producerModule = ProducerModule::getInstance(); $distributionModule =DistributionModule::getInstance(); $mj = new \Mailjet\Client( Mailjet::getApiKey('public'), Mailjet::getApiKey('private'), true, ['version' => 'v3.1'] ); $body = ['Messages' => []] ; $messageAutoText = '' ; $messageAutoHtml = '' ; if($this->id_distribution) { $messageAutoText = ' ' ; $messageAutoHtml = '

' ; $distribution = Distribution::searchOne(['id' => $this->id_distribution]) ; if($distribution) { $linkOrder = $distributionModule->getLinkOrder($distribution); $dateOrder = strftime('%A %d %B %Y', strtotime($distribution->date)) ; $messageAutoHtml .= 'Passer ma commande du '.$dateOrder.'' ; $messageAutoText .= 'Suivez ce lien pour passer votre commande du '.$dateOrder.' : '.$linkOrder ; if($this->integrate_product_list) { $productsArray = Product::find() ->where([ 'id_producer' => GlobalParam::getCurrentProducerId(), ]) ->andWhere('status >= :status') ->addParams(['status' => Product::STATUS_OFFLINE]) ->innerJoinWith(['productDistribution' => function($query) use($distribution) { $query->andOnCondition([ 'product_distribution.id_distribution' => $distribution->id, 'product_distribution.active' => 1 ]); }]) ->orderBy('product.name ASC') ->all(); if(count($productsArray) > 1) { $messageAutoHtml .= '

Produits disponibles :
' ; } } } } if($fromProducer) { $producer = GlobalParam::getCurrentProducer() ; $fromEmail = $producerModule->getEmailOpendistrib($producer) ; $fromName = $producer->name ; $linkProducer = 'https://'.$producer->slug.'.opendistrib.net'; $linkUnsubscribe = Yii::$app->urlManagerProducer->createAbsoluteUrl(['newsletter/unsubscribe', 'slug_producer' => $producer->slug]); // Message inscription newsletter $messageAutoText .= " -- Boutique : ".$linkProducer." Me désinscrire : ".$linkUnsubscribe; $messageAutoHtml .= "

--
"; $messageAutoHtml .= "Boutique : ".$linkProducer."
"; $messageAutoHtml .= "Me désinscrire : ".$linkUnsubscribe.""; } else { $fromEmail = 'contact@opendistrib.net' ; $fromName = 'Opendistrib' ; } // Tests /*$usersArray = [ ['email' => 'contact@guillaumebourgeois.fr', 'name' => '', 'lastname' => ''] ];*/ foreach($usersArray as $user) { $body['Messages'][] = [ 'From' => [ 'Email' => $fromEmail, 'Name' => $fromName ], 'To' => [ [ 'Email' => $user['email'], 'Name' => $user['name'].' '.$user['lastname'] ] ], 'Subject' => $this->subject, 'TextPart' => $this->message.$messageAutoText, 'HTMLPart' => nl2br($this->message).$messageAutoHtml ] ; if(count($body['Messages']) == 50) { $response = $mj->post(\Mailjet\Resources::$Email, ['body' => $body]); $body['Messages'] = [] ; } } if(count($body['Messages']) > 0) { $response = $mj->post(\Mailjet\Resources::$Email, ['body' => $body]); } $success = $response->success() ; if(!$success) { Yii::error($response->getBody(), 'Mailjet'); } return $response ; } }