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

@@ -444,11 +444,15 @@ class UserController extends BackendController
} else {
$bodyResponseSendMail = $responseSendMail->getBody();
$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.';
if (count($emailsErrorArray) > 0) {
$messageError .= '<br />Problème détecté sur les adresses suivantes : ' . implode(',', $emailsErrorArray);

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

@@ -52,6 +52,7 @@ class MailForm extends Model
public $id_distribution ;
public $subject;
public $message;
public $integrate_product_list = false;

/**
* @inheritdoc
@@ -60,6 +61,7 @@ class MailForm extends Model
{
return [
[['subject', 'message'], 'required', 'message' => 'Champs obligatoire'],
[['integrate_product_list'], 'boolean'],
[['id_distribution'],'integer']
];
}
@@ -72,7 +74,8 @@ class MailForm extends Model
return [
'subject' => 'Sujet',
'message' => 'Message',
'id_distribution' => 'Distribution'
'id_distribution' => 'Distribution',
'integrate_product_list' => 'Intégrer la liste des produits au message'
];
}

@@ -111,42 +114,44 @@ class MailForm extends Model
$messageAutoHtml .= '<a href="'.$linkOrder.'">Passer ma commande du '.$dateOrder.'</a>' ;
$messageAutoText .= 'Suivez ce lien pour passer votre commande du '.$dateOrder.' :
'.$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 :
' ;
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>' ;
}
}
}
@@ -160,7 +165,12 @@ Produits disponibles :
$fromEmail = 'contact@opendistrib.net' ;
$fromName = 'Opendistrib' ;
}

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

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

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

@@ -66,7 +66,8 @@ $this->render('_menu',[
<div class="panel-body">
<?php $form = ActiveForm::begin(); ?>
<?= $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, 'message')->textarea(['rows' => '15']) ; ?>
<div class="form-group">

Loading…
Cancel
Save