'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'
];
}
public function sendEmail($contactsArray, $fromProducer = true)
{
$productModule = ProductModule::getInstance();
$producerModule = ProducerModule::getInstance();
$distributionModule = DistributionModule::getInstance();
$messageAutoText = '' ;
$messageAutoHtml = '' ;
$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 :
' ;
$messageAutoText .= '
Produits disponibles :
' ;
foreach($productsArray as $product) {
$productDescription = $product->name ;
if(strlen($product->description)) {
$productDescription .= ' / '.$product->description ;
}
if($product->price) {
$productDescription .= ' / '.Price::format($productModule->getPriceWithTax($product)) ;
$productDescription .= ' ('. $productModule->getSolver()->strUnit($product, UnitDefinition::WORDING_UNIT).')' ;
}
$messageAutoText .= '- '.$productDescription.'
' ;
$messageAutoHtml .= '- '.Html::encode($productDescription).'
' ;
}
$messageAutoHtml .= '
' ;
}
}
}
}
if($fromProducer) {
$producer = GlobalParam::getCurrentProducer() ;
$fromEmail = $producerModule->getProducerEmailPlatform($producer) ;
$fromName = $producer->name ;
$linkProducer = 'https://'.$producer->slug.'.souke.fr';
$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@souke.fr' ;
$fromName = 'Souke' ;
}
$subject = $this->subject;
$htmlContent = nl2br($this->message).$messageAutoHtml;
$textContent = $this->message.$messageAutoText;
Yii::$app->bulkMailer->sendEmails($contactsArray, $fromName, $fromEmail, $subject, $htmlContent, $textContent);
}
/*
public function sendEmailMailjet($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']
);
$messageAutoText = '' ;
$messageAutoHtml = '' ;
$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 :
' ;
$messageAutoText .= '
Produits disponibles :
' ;
foreach($productsArray as $product) {
$productDescription = $product->name ;
if(strlen($product->description)) {
$productDescription .= ' / '.$product->description ;
}
if($product->price) {
$productDescription .= ' / '.Price::format($productModule->getPriceWithTax($product)) ;
$productDescription .= ' ('. $productModule->getSolver()->strUnit($product, UnitDefinition::WORDING_UNIT).')' ;
}
$messageAutoText .= '- '.$productDescription.'
' ;
$messageAutoHtml .= '- '.Html::encode($productDescription).'
' ;
}
$messageAutoHtml .= '
' ;
}
}
}
}
if($fromProducer) {
$producer = GlobalParam::getCurrentProducer() ;
$fromEmail = $producerModule->getProducerEmailPlatform($producer) ;
$fromName = $producer->name ;
$linkProducer = 'https://'.$producer->slug.'.souke.fr';
$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@souke.fr' ;
$fromName = 'Souke' ;
}
$body = ['Messages' => []] ;
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 = (isset($response) && $response) ? $response->success() : false ;
if(!$success) {
Yii::error($response->getBody(), 'Mailjet');
}
return $response ;
}
*/
}