ソースを参照

Adaptations frontend/site/signup

dev
コミット
78bfb0943f
14個のファイルの変更118行の追加117行の削除
  1. +1
    -2
      backend/controllers/OrderController.php
  2. +1
    -1
      backend/web/js/lechatdesnoisettes.js
  3. +3
    -1
      common/components/ActiveRecordCommon.php
  4. +1
    -1
      common/helpers/Departments.php
  5. +1
    -1
      common/mail/new-producer-html.php
  6. +1
    -1
      common/mail/new-producer-text.php
  7. +4
    -4
      common/mail/signup-html.php
  8. +4
    -4
      common/mail/signup-text.php
  9. +2
    -2
      common/models/Producer.php
  10. +2
    -2
      frontend/controllers/SiteController.php
  11. +81
    -82
      frontend/models/SignupForm.php
  12. +4
    -4
      frontend/views/site/signup.php
  13. +6
    -6
      frontend/web/js/boulange.js
  14. +7
    -6
      producer/web/js/boulange.js

+ 1
- 2
backend/controllers/OrderController.php ファイルの表示

@@ -43,7 +43,6 @@ use common\models\ProductOrder ;
use common\models\Product ;
use common\models\User ;
use common\models\ProductDistribution ;
use common\models\Product ;

class OrderController extends BackendController
{
@@ -691,7 +690,7 @@ class OrderController extends BackendController
/**
* Génère le contenu nécessaire aux exports au format CSV.
*
* @see CommandeController::actionDownload()
* @see OrderController::actionDownload()
* @param string $date
* @param array $produits
* @param array $points_vente

+ 1
- 1
backend/web/js/lechatdesnoisettes.js ファイルの表示

@@ -748,7 +748,7 @@ function chat_calendar() {
dayClick: function(date, jsEvent, view) {
var url = $(location).attr('href') ;
var tab_url = url.split('?') ;
$(location).attr('href',tab_url[0]+'?r=commande/index&date='+date.format());
$(location).attr('href',tab_url[0]+'?r=order/index&date='+date.format());
},
eventRender: function (event, element) {
var dataToFind = moment(event.start).format('YYYY-MM-DD');

+ 3
- 1
common/components/ActiveRecordCommon.php ファイルの表示

@@ -70,7 +70,9 @@ class ActiveRecordCommon extends \yii\db\ActiveRecord
$pk = $class::primaryKey() ;
$pk = $class::tableName().'.'.$pk[0] ;
if (!isset($params[$options['attribute_id_producer']]) && !Yii::$app->user->isGuest) {
if (isset($options['attribute_id_producer']) && strlen($options['attribute_id_producer'])
&& !isset($params[$options['attribute_id_producer']]) && !Yii::$app->user->isGuest)
{
$params[$options['attribute_id_producer']] = Producer::getId();
}

common/helpers/Departements.php → common/helpers/Departments.php ファイルの表示

@@ -38,7 +38,7 @@ termes.

namespace common\helpers;

class Departements {
class Departments {

public static function get()
{

common/mail/new-boulanger-html.php → common/mail/new-producer-html.php ファイルの表示

@@ -40,6 +40,6 @@ use yii\helpers\Html;

?>

<p>Un nouveau producteur vient de s'inscrire : <strong><?= Html::encode($etablissement->nom) ?></strong>.</p>
<p>Un nouveau producteur vient de s'inscrire : <strong><?= Html::encode($producer->name) ?></strong>.</p>



common/mail/new-boulanger-text.php → common/mail/new-producer-text.php ファイルの表示

@@ -38,4 +38,4 @@ termes.

?>

Un nouveau producteur vient de s'inscrire : <?= $etablissement->nom; ?>.
Un nouveau producteur vient de s'inscrire : <?= $producer->name; ?>.

+ 4
- 4
common/mail/signup-html.php ファイルの表示

@@ -42,7 +42,7 @@ use common\helpers\Url ;

?>

<p>Bonjour <?= Html::encode($user->prenom) ?>,</p>
<p>Bonjour <?= Html::encode($user->name) ?>,</p>

<p>Votre inscription sur <strong>La boîte à pain</strong> a bien été prise en compte.</p>

@@ -50,11 +50,11 @@ use common\helpers\Url ;
<strong><?= Html::encode($user->email) ?></strong></p>

<?php if($user->status == User::STATUS_PRODUCER): ?>
<p>Vous pouvez dès maintenant vous connecter à votre <a href="<?= Url::backend(); ?>">Espace boulanger</a> pour mettre
<p>Vous pouvez dès maintenant vous connecter à votre <a href="<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['site/index']); ?>">Espace producteur</a> pour mettre
en place votre système de réservation.</p>
<?php else: ?>
<?php if(!is_null($etablissement)): ?>
<p>Vous pouvez maintenant <a href="<?= Url::frontend().'index.php?r=commande/create&id_etablissement='.$etablissement->id ?>">passer commande</a> chez votre producteur <strong><?= Html::encode($etablissement->nom); ?></strong>.</p>
<?php if(!is_null($producer)): ?>
<p>Vous pouvez maintenant <a href="<?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['site/index', 'slug_producer' => $producer->slug]); ?>">passer commande</a> chez votre producteur <strong><?= Html::encode($producer->name); ?></strong>.</p>
<?php else: ?>
<p>Vous pouvez maintenant passer commande chez votre producteur.</p>
<?php endif; ?>

+ 4
- 4
common/mail/signup-text.php ファイルの表示

@@ -50,11 +50,11 @@ Voici votre identifiant de connexion :

<?php if($user->status == User::STATUS_PRODUCER): ?>
Vous pouvez dès maintenant vous connecter à votre Espace boulanger pour mettre en place votre système de réservation :
<?= Url::backend(); ?>
<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['site/index']); ?>
<?php else: ?>
<?php if(!is_null($etablissement)): ?>
Vous pouvez maintenant passer commande chez votre producteur "<?= $etablissement->nom ?>" :
<?= Url::frontend().'index.php?r=commande/create&id_etablissement='.$etablissement->id ?>
<?php if(!is_null($producer)): ?>
Vous pouvez maintenant passer commande chez votre producteur "<?= $producer->name ?>" :
<?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['site/index', 'slug_producer' => $producer->slug]) ; ?>
<?php else: ?>
Vous pouvez maintenant passer commande chez votre producteur.
<?php endif; ?>

+ 2
- 2
common/models/Producer.php ファイルの表示

@@ -167,12 +167,12 @@ class Producer extends ActiveRecordCommon
['orderby' => 'postcode, city ASC']
) ;
$departments = Departmments::get();
$departments = Departments::get();
$dataProducers = [];
$optionsProducers = [];
foreach ($producers as $p) {
if (!key_exists('d' . substr($p->postcode, 0, 2), $dataProducers)) {
$dataProducers['d' . substr($p->postcode, 0, 2)] = '<strong>' . $departments[substr($e->postcode, 0, 2)] . '</strong>';
$dataProducers['d' . substr($p->postcode, 0, 2)] = '<strong>' . $departments[substr($p->postcode, 0, 2)] . '</strong>';
$optionsProducers['d' . substr($p->postcode, 0, 2)] = ['disabled' => true];
}


+ 2
- 2
frontend/controllers/SiteController.php ファイルの表示

@@ -179,7 +179,7 @@ class SiteController extends FrontendController
public function actionLogin()
{
if (!\Yii::$app->user->isGuest) {
return Yii::$app->getResponse()->redirect(['commande/index']);
return Yii::$app->getResponse()->redirect(['order/index']);
}

$model = new LoginForm();
@@ -243,7 +243,7 @@ class SiteController extends FrontendController
if ($model->load(Yii::$app->request->post())) {
if ($user = $model->signup()) {
if (Yii::$app->getUser()->login($user)) {
$this->redirect(['commande/index']);
$this->redirect(['site/index']);
}
}
}

+ 81
- 82
frontend/models/SignupForm.php ファイルの表示

@@ -40,9 +40,9 @@ namespace frontend\models;

use Yii;
use common\models\User;
use common\models\Etablissement;
use common\models\Producer;
use yii\base\Model;
use common\models\UserEtablissement;
use common\models\UserProducer;
use common\helpers\Password;

/**
@@ -59,15 +59,15 @@ class SignupForm extends Model
public $phone;
public $is_producer;
public $siret;
public $nom_magasin;
public $code_postal;
public $ville;
public $id_etablissement;
public $option_client_boulanger;
public $name_producer;
public $postcode;
public $city;
public $id_producer;
public $option_user_producer;
public $cgv;
public $code;
public $type;
public $prix_libre ;
public $free_price ;

/**
* @inheritdoc
@@ -79,46 +79,46 @@ class SignupForm extends Model
['email', 'required', 'message' => 'Champs obligatoire'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'Cet email est déjà utilisé'],
[['nom', 'prenom', 'telephone'], 'required', 'message' => 'Champs obligatoire'],
[['nom', 'prenom', 'telephone', 'option_client_boulanger'], 'string', 'min' => 2, 'max' => 255],
[['name', 'lastname', 'phone'], 'required', 'message' => 'Champs obligatoire'],
[['name', 'lastname', 'phone', 'option_user_producer'], 'string', 'min' => 2, 'max' => 255],
['password', 'required', 'message' => 'Champs obligatoire'],
['password', 'string', 'min' => 6, 'tooShort' => 'Votre mot de passe doit contenir au moins 6 caractères'],
['is_boulanger', 'boolean'],
['is_producer', 'boolean'],
['cgv', 'boolean'],
['cgv', function($attribute, $params) {
$cgv = $this->$attribute;

if ($this->option_client_boulanger == 'boulanger' && !$cgv) {
if ($this->option_user_producer == 'producer' && !$cgv) {
$this->addError($attribute, 'Vous devez accepter les conditions générales de vente pour vous inscrire.');
}
}],
['code_postal', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_client_boulanger == 'boulanger';
['postcode', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_user_producer == 'producer';
}, 'whenClient' => "function (attribute, value) {
return $('#option-boulanger').prop('checked') ;
return $('#option-producer').prop('checked') ;
}"],
['ville', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_client_boulanger == 'boulanger';
['city', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_user_producer == 'producer';
}, 'whenClient' => "function (attribute, value) {
return $('#option-boulanger').prop('checked') ;
return $('#option-producer').prop('checked') ;
}"],
['nom_magasin', 'string'],
['nom_magasin', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_client_boulanger == 'boulanger';
['name_producer', 'string'],
['name_producer', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_user_producer == 'producer';
}, 'whenClient' => "function (attribute, value) {
return $('#option-boulanger').prop('checked') ;
return $('#option-producer').prop('checked') ;
}"],
['type', 'string'],
['type', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_client_boulanger == 'boulanger';
return $model->option_user_producer == 'producer';
}, 'whenClient' => "function (attribute, value) {
return $('#option-boulanger').prop('checked') ;
return $('#option-producer').prop('checked') ;
}"],
['siret', 'string'],
['siret', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
return $model->option_client_boulanger == 'boulanger';
return $model->option_user_producer == 'producer';
}, 'whenClient' => "function (attribute, value) {
return $('#option-boulanger').prop('checked') ;
return $('#option-producer').prop('checked') ;
}"],
['siret', function($attribute, $params) {

@@ -154,32 +154,32 @@ class SignupForm extends Model
if (($sum % 10) != 0)
$this->addError($attribute, 'Numéro SIRET invalide');
}],
['id_etablissement', 'integer'],
['id_etablissement', function($attribute, $params) {
if ($this->id_etablissement) {
$etablissement = Etablissement::findOne($this->id_etablissement);
if (!$etablissement) {
['id_producer', 'integer'],
['id_producer', function($attribute, $params) {
if ($this->id_producer) {
$producer = Producer::findOne($this->id_producer);
if (!$producer) {
$this->addError($attribute, 'Ce producteur n\'existe pas.');
}
}
}],
['code', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
$etablissement = Etablissement::findOne($this->id_etablissement);
if ($etablissement) {
return strlen($etablissement->code);
$producer = Producer::findOne($this->id_producer);
if ($producer) {
return strlen($producer->code);
} else {
return false;
}
}],
['code', function($attribute, $params) {
$code = $this->$attribute;
$etablissement = Etablissement::findOne($this->id_etablissement);
$producer = Producer::findOne($this->id_producer);

if ($etablissement && strtolower(trim($code)) != strtolower(trim($etablissement->code))) {
if ($producer && strtolower(trim($code)) != strtolower(trim($producer->code))) {
$this->addError($attribute, 'Code incorrect');
}
}],
['prix_libre', 'number'],
['free_price', 'number'],
];
}
@@ -190,16 +190,17 @@ class SignupForm extends Model
'username' => 'Identifiant',
'password' => 'Mot de passe',
'rememberMe' => 'Se souvenir de moi',
'prenom' => 'Prénom',
'telephone' => 'Téléphone',
'is_boulanger' => "Je suis professionnel et souhaite mettre en place un système de réservation dans mon établissement",
'nom_magasin' => 'Nom de l\'établissement',
'name' => 'Prénom',
'lastname' => 'Nom',
'phone' => 'Téléphone',
'is_producer' => "Je suis professionnel et souhaite mettre en place un système de réservation dans mon établissement",
'name_producer' => 'Nom du producteur',
'siret' => 'Numéro SIRET',
'code_postal' => 'Code postal',
'ville' => 'Commune',
'id_etablissement' => 'Producteur',
'type' => 'Type d\'établissement',
'prix_libre' => 'Prix libre'
'postcode' => 'Code postal',
'city' => 'Commune',
'id_producer' => 'Producteur',
'type' => 'Type de producteur',
'free_price' => 'Prix libre'
];
}

@@ -214,44 +215,42 @@ class SignupForm extends Model
$user = new User();
$user->username = $this->email;
$user->email = $this->email;
$user->nom = $this->nom;
$user->prenom = $this->prenom;
$user->telephone = $this->telephone;
$user->confiance = 1;
$user->name = $this->name;
$user->lastname = $this->lastname;
$user->phone = $this->phone;

if ($this->option_client_boulanger == 'boulanger') {
if ($this->option_user_producer == 'producer') {
// etablissement
$etablissement = new Etablissement;
$etablissement->nom = $this->nom_magasin;
$etablissement->type = $this->type;
$etablissement->siret = $this->siret;
$etablissement->code_postal = $this->code_postal;
$etablissement->ville = $this->ville;
$etablissement->heure_limite_commande = 20;
$etablissement->delai_commande = 1;
$etablissement->gratuit = 1;
$etablissement->prix_libre = (float) abs($this->prix_libre);
$etablissement->slug = \common\helpers\Url::slugify($this->nom_magasin) ;
$producer = new Producer;
$producer->name = $this->name_producer;
$producer->type = $this->type;
$producer->siret = $this->siret;
$producer->postcode = $this->postcode;
$producer->city = $this->city;
$producer->order_deadline = 20;
$producer->order_delay = 1;
$producer->free_price = (float) abs($this->free_price);
$producer->slug = \common\helpers\Url::slugify($this->name_producer) ;

// génération d'un code
do {
$code = Password::generate();
$etablissement->code = $code;
} while (Etablissement::findOne(['code' => $code]));
$producer->code = $code;
} while (Producer::findOne(['code' => $code]));

$etablissement->save();
$producer->save();

// user
$user->id_etablissement = $etablissement->id;
$user->id_producer = $producer->id;
$user->status = User::STATUS_PRODUCER;

// envoi d'un email à l'administrateur pour le prévenir
Yii::$app->mailer->compose(
[
'html' => 'new-boulanger-html',
'text' => 'new-boulanger-text'
'html' => 'new-producer-html',
'text' => 'new-producer-text'
], [
'etablissement' => $etablissement
'producer' => $producer
])
->setTo(Yii::$app->params['adminEmail'])
->setFrom([Yii::$app->params['adminEmail'] => 'La boîte à pain'])
@@ -264,11 +263,11 @@ class SignupForm extends Model
if ($user->save()) {

// on ajoute l'établissement sélectionnée par l'user en favoris
if ($this->option_client_boulanger == 'client') {
if ($this->id_etablissement) {
$etablissement = Etablissement::find()->where(['id' => $this->id_etablissement])->one();
if ($etablissement) {
Etablissement::addUser($user->id, $this->id_etablissement) ;
if ($this->option_user_producer == 'producer') {
if ($this->id_producer) {
$producer = Producer::find()->where(['id' => $this->id_producer])->one();
if ($producer) {
Producer::addUser($user->id, $this->id_producer) ;

// envoi d'un email à l'utilisateur
Yii::$app->mailer->compose(
@@ -278,7 +277,7 @@ class SignupForm extends Model
],
[
'user' => $user,
'etablissement' => $etablissement
'producer' => $producer
])
->setTo($user->email)
->setFrom([Yii::$app->params['adminEmail'] => 'La boîte à pain'])
@@ -288,13 +287,13 @@ class SignupForm extends Model
}
}

if ($this->option_client_boulanger == 'boulanger') {
$etab_user = new UserEtablissement;
$etab_user->id_etablissement = $etablissement->id;
$etab_user->id_user = $user->id;
$etab_user->credit = 0;
$etab_user->actif = 1;
$etab_user->save();
if ($this->option_user_producer == 'producer') {
$userProducer = new UserProducer;
$userProducer->id_producer = $producer->id;
$userProducer->id_user = $user->id;
$userProducer->credit = 0;
$userProducer->active = 1;
$userProducer->save();
}

return $user;

+ 4
- 4
frontend/views/site/signup.php ファイルの表示

@@ -73,8 +73,8 @@ $this->params['breadcrumbs'][] = $this->title;
</label>
</div>

<div id="champs-boulanger">
<?= $form->field($model, 'name') ?>
<div id="fields-producer">
<?= $form->field($model, 'name_producer') ?>
<?= $form->field($model, 'type')->textInput(['placeholder' => 'Boulangerie, brasserie, ferme ...']); ?>
<?= $form->field($model, 'siret') ?>
<?= $form->field($model, 'postcode') ?>
@@ -84,9 +84,9 @@ $this->params['breadcrumbs'][] = $this->title;
])
->label('Prix libre HT / mois')
->hint('Laissez ce champs vide si vous souhaitez dans un premier temps simplement tester la plateforme. Une fois l\'outil mis en place dans votre structure, vous pourrez modifier ce coût dans la section "Mon abonnement" de votre panneau d\'administration.') ; ?>
<?= $form->field($model, 'cgv')->checkbox()->label('J\'accepte les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-cgv" href="javascript:void(0);">conditions générales de service</a> et les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-tarifs" href="javascript:void(0);">conditions tarifaires</a> (prix libre).') ?>
<?= $form->field($model, 'cgv')->checkbox()->label('J\'accepte les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-cgv" href="javascript:void(0);">conditions générales de service</a> et les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-prices" href="javascript:void(0);">conditions tarifaires</a> (prix libre).') ?>
</div>
<div id="champs-user">
<div id="fields-user">
<?= $form->field($model, 'id_producer')->dropDownList($dataProducers, ['prompt' => '--','encode' => false,'options' => $optionsProducers]) ?>
<div id="bloc-code-acces">
<?= $form->field($model, 'code',[

+ 6
- 6
frontend/web/js/boulange.js ファイルの表示

@@ -86,7 +86,7 @@ function boulange_signup()
if($('#form-signup').size())
{
boulange_signup_champs_boulanger() ;
$('#option-client, #option-boulanger').change(function() {
$('#option-user, #option-producer').change(function() {
boulange_signup_champs_boulanger() ;
}) ;
}
@@ -94,14 +94,14 @@ function boulange_signup()

function boulange_signup_champs_boulanger()
{
if($('#option-boulanger').prop('checked'))
if($('#option-producer').prop('checked'))
{
$('#champs-boulanger').fadeIn() ;
$('#champs-client').hide() ;
$('#fields-producer').fadeIn() ;
$('#fields-user').hide() ;
}
else {
$('#champs-boulanger').hide() ;
$('#champs-client').fadeIn() ;
$('#fields-producer').hide() ;
$('#fields-user').fadeIn() ;
}
}


+ 7
- 6
producer/web/js/boulange.js ファイルの表示

@@ -86,7 +86,7 @@ function boulange_signup()
if($('#form-signup').size())
{
boulange_signup_champs_boulanger() ;
$('#option-client, #option-boulanger').change(function() {
$('#option-user, #option-producer').change(function() {
boulange_signup_champs_boulanger() ;
}) ;
}
@@ -94,14 +94,15 @@ function boulange_signup()

function boulange_signup_champs_boulanger()
{
if($('#option-boulanger').prop('checked'))
if($('#option-producer').prop('checked'))
{
$('#champs-boulanger').fadeIn() ;
$('#champs-client').hide() ;
$('#fields-producer').fadeIn() ;
$('#fields-user').hide() ;
}
else {
$('#champs-boulanger').hide() ;
$('#champs-client').fadeIn() ;
$('#fields-producer').hide() ;
$('#fields-user').fadeIn() ;
}
}


読み込み中…
キャンセル
保存