Ajouter la possibilité de mettre en place un code d'accès pour les points de vente (en parallèle des accès restreints).master
@@ -49,6 +49,13 @@ use yii\helpers\ArrayHelper ; | |||
<?= $form->field($model, 'horaires_dimanche')->textarea(['rows' => 3]) ?> | |||
</div> | |||
<div class="col-md-4"> | |||
<?= $form->field($model, 'code') | |||
->label('Code d\'accès') | |||
->hint('Renseignez ce champs si vous souhaitez protéger ce point de vente par un code.') | |||
?> | |||
<?= $form->field($model, 'acces_restreint') | |||
->checkbox() | |||
->hint('Cochez cette case si seulement un groupe restreint d\'utilisateurs peuvent accéder à ce point de vente.<br />' |
@@ -56,9 +56,10 @@ $this->params['breadcrumbs'][] = $this->title; | |||
'format' => 'raw', | |||
'value' => function($model) { | |||
$count = PointVenteUser::find()->where(['id_point_vente' => $model->id])->count(); | |||
$html = '' ; | |||
if($model->acces_restreint) | |||
{ | |||
$html = '<span class="glyphicon glyphicon-lock"></span> ' ; | |||
$html .= '<span class="glyphicon glyphicon-lock"></span> ' ; | |||
if($count == 1) | |||
{ | |||
$html .= '1 utilisateur' ; | |||
@@ -66,11 +67,16 @@ $this->params['breadcrumbs'][] = $this->title; | |||
else { | |||
$html .= $count.' utilisateurs' ; | |||
} | |||
return $html ; | |||
} | |||
else { | |||
return '' ; | |||
if(strlen($model->code)) | |||
{ | |||
if(strlen($html)) $html .= '<br />' ; | |||
$html .= 'Code : <strong>'.Html::encode($model->code).'</strong>' ; | |||
} | |||
return $html ; | |||
} | |||
], | |||
[ |
@@ -43,13 +43,13 @@ class PointVente extends \yii\db\ActiveRecord | |||
return [ | |||
[['nom'], 'required'], | |||
[['acces_restreint'], 'boolean'], | |||
[['nom'], 'string', 'max' => 255], | |||
[['nom','code'], 'string', 'max' => 255], | |||
[['adresse','localite','horaires_lundi','horaires_mardi','horaires_mercredi','horaires_jeudi','horaires_vendredi','horaires_samedi','horaires_dimanche'], 'string'], | |||
[['point_fabrication','vrac','pain', 'credit_pain','livraison_lundi','livraison_mardi','livraison_mercredi','livraison_jeudi','livraison_vendredi','livraison_samedi','livraison_dimanche'], 'boolean'], | |||
['point_fabrication', 'default','value'=>0], | |||
['id_etablissement','integer'], | |||
['id_etablissement','required'], | |||
[['users','users_commentaire'],'safe'] | |||
[['users','users_commentaire','code'],'safe'] | |||
]; | |||
} | |||
@@ -82,6 +82,7 @@ class PointVente extends \yii\db\ActiveRecord | |||
'livraison_vendredi' => 'Vendredi', | |||
'livraison_samedi' => 'Samedi', | |||
'livraison_dimanche' => 'Dimanche', | |||
'code' => 'Code', | |||
]; | |||
} | |||
@@ -199,4 +200,21 @@ class PointVente extends \yii\db\ActiveRecord | |||
]) | |||
->count() ; | |||
} | |||
public function verifCode($code) | |||
{ | |||
if(strlen($this->code)) | |||
{ | |||
if(trim(strtolower($code)) == trim(strtolower($this->code))) | |||
{ | |||
return true ; | |||
} | |||
else { | |||
return false ; | |||
} | |||
} | |||
else { | |||
return true ; | |||
} | |||
} | |||
} |
@@ -0,0 +1,17 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
class m170201_074937_champs_code_point_vente extends Migration | |||
{ | |||
public function up() | |||
{ | |||
$this->addColumn('point_vente', 'code', Schema::TYPE_STRING) ; | |||
} | |||
public function down() | |||
{ | |||
$this->dropColumn('point_vente','code') ; | |||
} | |||
} |
@@ -358,13 +358,24 @@ class CommandeController extends \yii\web\Controller { | |||
'id_point_vente' => $posts['Commande']['id_point_vente'] | |||
]) | |||
->one() ; | |||
//print_r($ppv) ; | |||
//die() ; | |||
if(!$ppv || !$ppv->livraison) | |||
{ | |||
$err_point_vente = true ; | |||
} | |||
$point_vente = PointVente::findOne($posts['Commande']['id_point_vente']) ; | |||
if($point_vente) | |||
{ | |||
if(strlen($point_vente->code) && !$point_vente->verifCode($posts['code_point_vente_'.$point_vente->id])) | |||
{ | |||
$err_point_vente = true ; | |||
} | |||
} | |||
else { | |||
$err_point_vente = true ; | |||
} | |||
} | |||
if ($commande->validate() && count($produits) && !$err_nb_produits && !$err_date && !$err_point_vente) { | |||
@@ -376,6 +387,8 @@ class CommandeController extends \yii\web\Controller { | |||
->one() ; | |||
if($pv && strlen($pv->getCommentaire())) | |||
$commande->commentaire_point_vente = $pv->getCommentaire() ; | |||
else | |||
$commande->commentaire_point_vente = '' ; | |||
// sauvegarde de la commande | |||
$commande->save(); | |||
@@ -491,5 +504,18 @@ class CommandeController extends \yii\web\Controller { | |||
$this->redirect(Yii::$app->urlManager->createUrl(['commande/index', 'annule_ok' => true])); | |||
} | |||
public function actionVerifCodePointVente($id_point_vente, $code) | |||
{ | |||
$point_vente = PointVente::findOne($id_point_vente) ; | |||
if($point_vente) | |||
{ | |||
if($point_vente->verifCode($code)) | |||
{ | |||
return true ; | |||
} | |||
} | |||
return false ; | |||
} | |||
} |
@@ -99,9 +99,20 @@ use common\models\Etablissement; | |||
} | |||
} | |||
echo '<li class="bloc point-vente point-vente-' . $pv->id . '" data-vrac="' . (int) $pv->vrac . '" data-pain="' . (int) $pv->pain . '" data-credit-pain="'.(int) $pv->credit_pain.'"><div class="contenu">' . | |||
$html_code = '' ; | |||
$data_code = '0' ; | |||
if(strlen($pv->code)) | |||
{ | |||
if(!isset($model->id_point_vente) || $model->id_point_vente != $pv->id) | |||
{ | |||
$html_code .= '<span class="glyphicon glyphicon-lock"></span> ' ; | |||
$data_code = '1' ; | |||
} | |||
} | |||
echo '<li class="bloc point-vente point-vente-' . $pv->id . '" data-code="'.$data_code.'" data-vrac="' . (int) $pv->vrac . '" data-pain="' . (int) $pv->pain . '" data-credit-pain="'.(int) $pv->credit_pain.'"><div class="contenu">' . | |||
'<span style="display:none;" class="id">' . $pv->id . '</span>' . | |||
'<div class="nom">' . Html::encode($pv->nom) . '</div>' . | |||
'<div class="nom">' .$html_code. Html::encode($pv->nom) . '</div>' . | |||
'<div class="adresse">à ' . Html::encode($pv->localite) . '</div>' . | |||
'<div class="horaires">' . | |||
'<div class="jour jour-1">' . (strlen($pv->horaires_lundi) ? nl2br(Html::encode($pv->horaires_lundi)) : 'Fermé') . '</div>' . | |||
@@ -113,10 +124,12 @@ use common\models\Etablissement; | |||
'<div class="jour jour-0">' . (strlen($pv->horaires_dimanche) ? nl2br(Html::encode($pv->horaires_dimanche)) : 'Fermé') . '</div>' . | |||
'</div>' | |||
. $commentaire . | |||
'<input type="hidden" name="code_point_vente_'.$pv->id.'" value="" />'. | |||
'</div></li>'; | |||
} | |||
?> | |||
</ul> | |||
<div class="clr"></div> | |||
</div> | |||
@@ -246,5 +259,34 @@ use common\models\Etablissement; | |||
<?php ActiveForm::end(); ?> | |||
<!-- modal code point de vente --> | |||
<div class="modal fade" id="modal-code" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> | |||
<div class="modal-dialog modal-lg" role="document"> | |||
<div class="modal-content"> | |||
<div class="modal-header"> | |||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |||
<h4 class="modal-title" id="myModalLabel">Code d'accès</h4> | |||
</div> | |||
<div class="modal-body"> | |||
<div class="alert alert-warning"> | |||
Ce point de vente nécessite un code d'accès. | |||
</div> | |||
<form action="index.php?r=commande/verif-code" method="post"> | |||
<input type="hidden" value="" name="id_point_vente" id="id-point-vente" /> | |||
<div class="form-group field-code required"> | |||
<label class="control-label" for="code">Code d'accès :</label> | |||
<input type="password" class="form-control" id="code" name="code" /> | |||
<p class="help-block help-block-error" style="display:none;">Code incorrect</p> | |||
</div> | |||
<div class="form-group"> | |||
<button type="submit" class="btn btn-primary">Valider</button> | |||
</div> | |||
</form> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div><!-- commande-form --> |
@@ -65,41 +65,52 @@ function chat_profil_user() { | |||
} | |||
function chat_event_click_point_vente(id, force) { | |||
$('#commande-id_point_vente').val(id) ; | |||
$('#points-vente .point-vente').removeClass('selected') ; | |||
$('.point-vente-'+id).addClass('selected') ; | |||
$('.point-vente-'+id).hide().fadeIn('fast') ; | |||
var pain = parseInt($('.point-vente-'+id).data('pain')) ; | |||
var vrac = parseInt($('.point-vente-'+id).data('vrac')) ; | |||
if(pain) { | |||
$('#pain .table').show() ; | |||
$('#pain .indisponible').hide() ; | |||
} | |||
else { | |||
$('#pain .table').hide() ; | |||
$('#pain .indisponible').show() ; | |||
} | |||
if($('.point-vente-'+id).data('code') == 1) { | |||
$('#modal-code #id-point-vente').val(id) ; | |||
$('#modal-code').modal('show') ; | |||
} | |||
else { | |||
$('#commande-id_point_vente').val(id) ; | |||
if(vrac) { | |||
$('#vrac .table').show() ; | |||
$('#vrac .indisponible').hide() ; | |||
} | |||
else { | |||
$('#vrac .table').hide() ; | |||
$('#vrac .indisponible').show() ; | |||
} | |||
$('#points-vente .point-vente').removeClass('selected') ; | |||
$('.point-vente-'+id).addClass('selected') ; | |||
$('.point-vente-'+id).hide().fadeIn('fast') ; | |||
var pain = parseInt($('.point-vente-'+id).data('pain')) ; | |||
var vrac = parseInt($('.point-vente-'+id).data('vrac')) ; | |||
if(pain) { | |||
$('#pain .table').show() ; | |||
$('#pain .indisponible').hide() ; | |||
} | |||
else { | |||
$('#pain .table').hide() ; | |||
$('#pain .indisponible').show() ; | |||
} | |||
if(vrac) { | |||
$('#vrac .table').show() ; | |||
$('#vrac .indisponible').hide() ; | |||
} | |||
else { | |||
$('#vrac .table').hide() ; | |||
$('#vrac .indisponible').show() ; | |||
} | |||
$('#produits, .valider-commande, .btn-commentaire, #bar-fixed').fadeIn() ; | |||
// credit pain | |||
chat_systeme_commande_credit_pain_event(chat_systeme_commande_maj_table_prix()) ; | |||
// scroll | |||
if(!force) | |||
boulange_scroll('step-choix-produits') ; | |||
} | |||
$('#produits, .valider-commande, .btn-commentaire, #bar-fixed').fadeIn() ; | |||
// credit pain | |||
chat_systeme_commande_credit_pain_event(chat_systeme_commande_maj_table_prix()) ; | |||
// scroll | |||
if(!force) | |||
boulange_scroll('step-choix-produits') ; | |||
} | |||
function chat_init_horaire_point_vente(date) { | |||
@@ -146,9 +157,34 @@ function chat_systeme_commande() { | |||
$('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ; | |||
} | |||
// points de vente | |||
if($('#commande-id_point_vente').val()) | |||
chat_event_click_point_vente($('#commande-id_point_vente').val(), true) ; | |||
$('#modal-code form').submit(function() { | |||
var id_pv = $('#modal-code #id-point-vente').val() ; | |||
var code = $('#modal-code #code').val() ; | |||
$.get('index.php',{ | |||
r: 'commande/verif-code-point-vente', | |||
id_point_vente: id_pv, | |||
code: code | |||
}, function(ok) { | |||
if(ok) { | |||
$('.point-vente-'+id_pv).data('code',0) ; | |||
$('.point-vente-'+id_pv+' .glyphicon').remove() ; | |||
$('input[name="code_point_vente_'+id_pv+'"]').val(code) ; | |||
$('#modal-code').modal('hide') ; | |||
chat_event_click_point_vente($('#modal-code #id-point-vente').val()) ; | |||
} | |||
else { | |||
$('#modal-code .field-code').addClass('has-error') ; | |||
$('#modal-code .help-block-error').hide().fadeIn() ; | |||
} | |||
}) ; | |||
return false ; | |||
}) ; | |||
$('#points-vente .point-vente').click(function() { | |||
var id = parseInt($(this).find('.id').html()) ; | |||
chat_event_click_point_vente(id) ; |