Browse Source

[Administration] Communiquer : possibilité de ne pas inclure la liste des produits dans le mail #162

refactoring
Guillaume Bourgeois 2 years ago
parent
commit
662fd2da85
3 changed files with 52 additions and 37 deletions
  1. +7
    -3
      backend/controllers/UserController.php
  2. +43
    -33
      backend/models/MailForm.php
  3. +2
    -1
      backend/views/user/emails.php

+ 7
- 3
backend/controllers/UserController.php View File

} else { } else {
$bodyResponseSendMail = $responseSendMail->getBody(); $bodyResponseSendMail = $responseSendMail->getBody();
$emailsErrorArray = []; $emailsErrorArray = [];
foreach ($bodyResponseSendMail['Messages'] as $message) {
if ($message['Status'] != 'success') {
$emailsErrorArray[] = $message['To']['Email'];

if(isset($bodyResponseSendMail['Messages'])) {
foreach ($bodyResponseSendMail['Messages'] as $message) {
if ($message['Status'] != 'success') {
$emailsErrorArray[] = $message['To']['Email'];
}
} }
} }

$messageError = 'Un problème est survenu lors de l\'envoi de votre email.'; $messageError = 'Un problème est survenu lors de l\'envoi de votre email.';
if (count($emailsErrorArray) > 0) { if (count($emailsErrorArray) > 0) {
$messageError .= '<br />Problème détecté sur les adresses suivantes : ' . implode(',', $emailsErrorArray); $messageError .= '<br />Problème détecté sur les adresses suivantes : ' . implode(',', $emailsErrorArray);

+ 43
- 33
backend/models/MailForm.php View File

public $id_distribution ; public $id_distribution ;
public $subject; public $subject;
public $message; public $message;
public $integrate_product_list = false;


/** /**
* @inheritdoc * @inheritdoc
{ {
return [ return [
[['subject', 'message'], 'required', 'message' => 'Champs obligatoire'], [['subject', 'message'], 'required', 'message' => 'Champs obligatoire'],
[['integrate_product_list'], 'boolean'],
[['id_distribution'],'integer'] [['id_distribution'],'integer']
]; ];
} }
return [ return [
'subject' => 'Sujet', 'subject' => 'Sujet',
'message' => 'Message', 'message' => 'Message',
'id_distribution' => 'Distribution'
'id_distribution' => 'Distribution',
'integrate_product_list' => 'Intégrer la liste des produits au message'
]; ];
} }


$messageAutoHtml .= '<a href="'.$linkOrder.'">Passer ma commande du '.$dateOrder.'</a>' ; $messageAutoHtml .= '<a href="'.$linkOrder.'">Passer ma commande du '.$dateOrder.'</a>' ;
$messageAutoText .= 'Suivez ce lien pour passer votre commande du '.$dateOrder.' : $messageAutoText .= 'Suivez ce lien pour passer votre commande du '.$dateOrder.' :
'.$linkOrder ; '.$linkOrder ;
$productsArray = Product::find()
->where([
'id_producer' => GlobalParam::getCurrentProducerId(),
])
->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 .= '<br /><br />Produits disponibles : <br /><ul>' ;
$messageAutoText .= '

if($this->integrate_product_list) {
$productsArray = Product::find()
->where([
'id_producer' => GlobalParam::getCurrentProducerId(),
])
->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 .= '<br /><br />Produits disponibles : <br /><ul>' ;
$messageAutoText .= '


Produits disponibles : Produits disponibles :
' ; ' ;
foreach($productsArray as $product) {
$productDescription = $product->name ;
if(strlen($product->description)) {
$productDescription .= ' / '.$product->description ;
}
if($product->price) {
$productDescription .= ' / '.Price::format($product->getPriceWithTax()) ;
$productDescription .= ' ('.Product::strUnit($product->unit, 'wording_unit').')' ;
}
$messageAutoText .= '- '.$productDescription.'
foreach($productsArray as $product) {
$productDescription = $product->name ;
if(strlen($product->description)) {
$productDescription .= ' / '.$product->description ;
}
if($product->price) {
$productDescription .= ' / '.Price::format($product->getPriceWithTax()) ;
$productDescription .= ' ('.Product::strUnit($product->unit, 'wording_unit').')' ;
}
$messageAutoText .= '- '.$productDescription.'
' ; ' ;
$messageAutoHtml .= '<li>'.Html::encode($productDescription).'</li>' ;
$messageAutoHtml .= '<li>'.Html::encode($productDescription).'</li>' ;
}
$messageAutoHtml .= '</ul>' ;
} }
$messageAutoHtml .= '</ul>' ;
} }
} }
} }
$fromEmail = 'contact@opendistrib.net' ; $fromEmail = 'contact@opendistrib.net' ;
$fromName = 'Opendistrib' ; $fromName = 'Opendistrib' ;
} }

// Tests
/*$usersArray = [
['email' => '', 'name' => '', 'lastname' => '']
];*/

foreach($usersArray as $user) { foreach($usersArray as $user) {
$body['Messages'][] = [ $body['Messages'][] = [
'From' => [ 'From' => [

+ 2
- 1
backend/views/user/emails.php View File

<div class="panel-body"> <div class="panel-body">
<?php $form = ActiveForm::begin(); ?> <?php $form = ActiveForm::begin(); ?>
<?= $form->field($mailForm, 'id_distribution')->dropDownList($incomingDistributionsArray) <?= $form->field($mailForm, 'id_distribution')->dropDownList($incomingDistributionsArray)
->hint("Sélectionnez une distribution pour ajouter automatiquement au message :<br /><ul><li>un lien vers la prise de commande de cette distribution</li><li>la liste des produits disponibles pour cette distribution</li></ul>"); ?>
->hint("Sélectionnez une distribution pour ajouter automatiquement au message un lien vers la prise de commande de cette distribution"); ?>
<?= $form->field($mailForm, 'integrate_product_list')->checkbox() ; ?>
<?= $form->field($mailForm, 'subject')->textInput() ; ?> <?= $form->field($mailForm, 'subject')->textInput() ; ?>
<?= $form->field($mailForm, 'message')->textarea(['rows' => '15']) ; ?> <?= $form->field($mailForm, 'message')->textarea(['rows' => '15']) ; ?>
<div class="form-group"> <div class="form-group">

Loading…
Cancel
Save