use yii\filters\VerbFilter; | use yii\filters\VerbFilter; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use common\helpers\Upload; | use common\helpers\Upload; | ||||
use common\models\Etablissement; | |||||
use common\models\Facture; | |||||
use common\models\Producer; | |||||
use common\models\Invoice; | |||||
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class EtablissementController extends BackendController | |||||
class ProducerController extends BackendController | |||||
{ | { | ||||
public $enableCsrfValidation = false; | public $enableCsrfValidation = false; | ||||
'allow' => true, | 'allow' => true, | ||||
'roles' => ['@'], | 'roles' => ['@'], | ||||
'matchCallback' => function ($rule, $action) { | 'matchCallback' => function ($rule, $action) { | ||||
return Yii::$app->user->identity->status == USER::STATUS_ADMIN | |||||
|| Yii::$app->user->identity->status == USER::STATUS_BOULANGER; | |||||
return User::hasAccessBackend(); | |||||
} | } | ||||
] | ] | ||||
], | ], | ||||
} | } | ||||
/** | /** | ||||
* Modifie un établissement. | |||||
* Modifie un producteur. | |||||
* | * | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionUpdate() | public function actionUpdate() | ||||
{ | { | ||||
$request = Yii::$app->request; | $request = Yii::$app->request; | ||||
$model = $this->findModel(Yii::$app->user->identity->id_etablissement); | |||||
$logo_filename_old = $model->logo; | |||||
$photo_filename_old = $model->photo; | |||||
$model = $this->findModel(Producer::getId()); | |||||
$logoFilenameOld = $model->logo; | |||||
$photoFilenameOld = $model->photo; | |||||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||||
Upload::uploadFile($model, 'logo', $logo_filename_old); | |||||
Upload::uploadFile($model, 'photo', $photo_filename_old); | |||||
Upload::uploadFile($model, 'logo', $logoFilenameOld); | |||||
Upload::uploadFile($model, 'photo', $photoFilenameOld); | |||||
$delete_logo = $request->post('delete_logo', 0); | |||||
if ($delete_logo) { | |||||
$deleteLogo = $request->post('delete_logo', 0); | |||||
if ($deleteLogo) { | |||||
$model->logo = ''; | $model->logo = ''; | ||||
$model->save(); | $model->save(); | ||||
} | } | ||||
$delete_photo = $request->post('delete_photo', 0); | |||||
if ($delete_photo) { | |||||
$deletePhoto = $request->post('delete_photo', 0); | |||||
if ($deletePhoto) { | |||||
$model->photo = ''; | $model->photo = ''; | ||||
$model->save(); | $model->save(); | ||||
} | } | ||||
return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | ||||
} else { | } else { | ||||
return $this->render('update', [ | return $this->render('update', [ | ||||
'model' => $model, | |||||
'model' => $model, | |||||
]); | ]); | ||||
} | } | ||||
} | } | ||||
* | * | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionFacturation() | |||||
public function actionBilling() | |||||
{ | { | ||||
$datas_factures = new ActiveDataProvider([ | |||||
'query' => Facture::find() | |||||
->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||||
$datasInvoices = new ActiveDataProvider([ | |||||
'query' => Invoice::find() | |||||
->where(['id_producer' => Producer::getId()]) | |||||
->orderBy('reference DESC'), | ->orderBy('reference DESC'), | ||||
'pagination' => [ | 'pagination' => [ | ||||
'pageSize' => 1000, | 'pageSize' => 1000, | ||||
], | ], | ||||
]); | ]); | ||||
$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement); | |||||
$producer = Producer::findOne(Producer::getId()); | |||||
if ($etablissement->load(Yii::$app->request->post())) { | |||||
$etablissement->save(); | |||||
if ($producer->load(Yii::$app->request->post())) { | |||||
$producer->save(); | |||||
if (!is_null($etablissement->prix_libre)) | |||||
$alert_prix_libre = true; | |||||
if (!is_null($producer->free_price)) { | |||||
$alertFreeprice = true; | |||||
} | |||||
} | } | ||||
return $this->render('facturation', [ | |||||
'datas_factures' => $datas_factures, | |||||
'etablissement' => $etablissement, | |||||
'alert_prix_libre' => (isset($alert_prix_libre)) ? true : false | |||||
return $this->render('billing', [ | |||||
'datasInvoices' => $datasInvoices, | |||||
'producer' => $producer, | |||||
'alertFreePrice' => (isset($alertFreeprice)) ? true : false | |||||
]); | ]); | ||||
} | } | ||||
*/ | */ | ||||
protected function findModel($id) | protected function findModel($id) | ||||
{ | { | ||||
if (($model = Etablissement::findOne($id)) !== null) { | |||||
if (($model = Producer::findOne($id)) !== null) { | |||||
return $model; | return $model; | ||||
} else { | } else { | ||||
throw new NotFoundHttpException('The requested page does not exist.'); | throw new NotFoundHttpException('The requested page does not exist.'); |
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\models\User ; | use common\models\User ; | ||||
use common\models\Etablissement ; | |||||
use common\models\Producer ; | |||||
use yii\bootstrap\ActiveForm; | use yii\bootstrap\ActiveForm; | ||||
$this->title = 'Mon abonnement'; | $this->title = 'Mon abonnement'; | ||||
C'est pourquoi le modèle économique est basé sur un prix libre facturé mensuellement.<br /> | C'est pourquoi le modèle économique est basé sur un prix libre facturé mensuellement.<br /> | ||||
</p> | </p> | ||||
<div id="estimation-facture" class=""> | |||||
<div id="free-price" class=""> | |||||
<?php if($alert_prix_libre): ?> | <?php if($alert_prix_libre): ?> | ||||
<div class="alert alert-success"> | <div class="alert alert-success"> | ||||
<!-- | <!-- | ||||
<h2>Dernières factures</h2> | <h2>Dernières factures</h2> | ||||
<?= GridView::widget([ | <?= GridView::widget([ | ||||
'dataProvider' => $datas_factures, | |||||
'dataProvider' => $datasInvoices, | |||||
'columns' => [ | 'columns' => [ | ||||
[ | [ | ||||
'attribute' => 'reference', | 'attribute' => 'reference', | ||||
'attribute' => 'montant_ht', | 'attribute' => 'montant_ht', | ||||
'label' => 'Montant', | 'label' => 'Montant', | ||||
'value' => function($model) { | 'value' => function($model) { | ||||
return number_format($model->montant_ht,2).' €' ; | |||||
return number_format($model->amount_ht,2).' €' ; | |||||
} | } | ||||
], | ], | ||||
[ | [ | ||||
'label' => 'Payé', | 'label' => 'Payé', | ||||
'format' => 'raw', | 'format' => 'raw', | ||||
'value' => function($model) { | 'value' => function($model) { | ||||
if($model->paye) | |||||
if($model->paid) | |||||
{ | { | ||||
return '<span class="label label-success">Oui</span>' ; | return '<span class="label label-success">Oui</span>' ; | ||||
} | } |
<div class="user-form"> | <div class="user-form"> | ||||
<?php $form = ActiveForm::begin(); ?> | <?php $form = ActiveForm::begin(); ?> | ||||
<div class=""> | <div class=""> | ||||
<?= $form->field($model, 'actif') | |||||
<?= $form->field($model, 'active') | |||||
->dropDownList([ | ->dropDownList([ | ||||
0 => 'Non', | 0 => 'Non', | ||||
1 => 'Oui' | 1 => 'Oui' | ||||
], []) | ], []) | ||||
->label('Activer le producteur') | ->label('Activer le producteur') | ||||
->hint('Activez cette option pour rendre votre établissement visible à vos clients.') ; ?> | ->hint('Activez cette option pour rendre votre établissement visible à vos clients.') ; ?> | ||||
<?= $form->field($model, 'nom') ?> | |||||
<?= $form->field($model, 'name') ?> | |||||
<?= $form->field($model, 'type') ?> | <?= $form->field($model, 'type') ?> | ||||
<?= $form->field($model, 'description') | <?= $form->field($model, 'description') | ||||
->textarea(['rows' => 6]) | ->textarea(['rows' => 6]) | ||||
->hint('Affiché sur la page d\'accueil') ?> | ->hint('Affiché sur la page d\'accueil') ?> | ||||
<?= $form->field($model, 'code_postal') ?> | |||||
<?= $form->field($model, 'ville') ?> | |||||
<?= $form->field($model, 'postcode') ?> | |||||
<?= $form->field($model, 'city') ?> | |||||
<?= $form->field($model, 'code')->hint("Saisissez ce champs si vous souhaitez protéger l'accès à votre boutique par un code, sinon laissez-le vide.<br />" | <?= $form->field($model, 'code')->hint("Saisissez ce champs si vous souhaitez protéger l'accès à votre boutique par un code, sinon laissez-le vide.<br />" | ||||
. "Ce code est à communiquer à vos client pour qu'ils puissent ajouter votre établissement à leur tableau de bord.<br />" | . "Ce code est à communiquer à vos client pour qu'ils puissent ajouter votre établissement à leur tableau de bord.<br />" | ||||
. "<a href=\"".Yii::$app->urlManager->createUrl(['communiquer/index'])."\">Cliquez ici</a> pour télécharger un mode d'emploi comprenant ce code à distribuer à vos clients.") ?> | |||||
. "<a href=\"".Yii::$app->urlManager->createUrl(['communicate/index'])."\">Cliquez ici</a> pour télécharger un mode d'emploi comprenant ce code à distribuer à vos clients.") ?> | |||||
<?= $form->field($model, 'delai_commande') | |||||
<?= $form->field($model, 'order_delay') | |||||
->dropDownList([ | ->dropDownList([ | ||||
1 => '1 jour', | 1 => '1 jour', | ||||
2 => '2 jours', | 2 => '2 jours', | ||||
], []) | ], []) | ||||
->hint('Si <strong>1 jour</strong> est sélectionné, le client pourra commander jusqu\'à la veille de la production.<br />' | ->hint('Si <strong>1 jour</strong> est sélectionné, le client pourra commander jusqu\'à la veille de la production.<br />' | ||||
. 'Si <strong>2 jours</strong> est sélectionné, le client pourra commander jusqu\'à l\'avant-veille de la production, etc.') ; ?> | . 'Si <strong>2 jours</strong> est sélectionné, le client pourra commander jusqu\'à l\'avant-veille de la production, etc.') ; ?> | ||||
<?= $form->field($model, 'heure_limite_commande') | |||||
<?= $form->field($model, 'order_deadline') | |||||
->dropDownList([ | ->dropDownList([ | ||||
24 => 'Minuit', | 24 => 'Minuit', | ||||
23 => '23h', | 23 => '23h', | ||||
. 'Par exemple, si <strong>2 jours</strong> est sélectionné dans le délai de commande, le client devra commander l\'avant-veille de la production avant l\'heure précisée ici.') ; ?> | . 'Par exemple, si <strong>2 jours</strong> est sélectionné dans le délai de commande, le client devra commander l\'avant-veille de la production avant l\'heure précisée ici.') ; ?> | ||||
<?= $form->field($model, 'credit_pain') | |||||
<?= $form->field($model, 'credit') | |||||
->dropDownList([ | ->dropDownList([ | ||||
0 => 'Non', | 0 => 'Non', | ||||
1 => 'Oui', | 1 => 'Oui', | ||||
], []) | ], []) | ||||
->label('Activer le système de Crédit Pain') | |||||
->hint('Le système de Crédit Pain permet à vos clients d\'avoir un compte prépayé sur le site <em>La boîte à pain</em>.<br />' | |||||
. 'Ils créditent leur compte en vous donnant la somme de leur choix et c\'est ensuite à vous de '.Html::a('mettre à jour', ['user/index']).' leur compte Crédit Pain en ligne.<br />' | |||||
. 'Ceci fait, les clients paient leur commande directement via leur compte Crédit Pain.') ; ?> | |||||
->label('Activer le système de Crédit') | |||||
->hint('Le système de Crédit permet à vos clients d\'avoir un compte prépayé sur le site <em>La boîte à pain</em>.<br />' | |||||
. 'Ils créditent leur compte en vous donnant la somme de leur choix et c\'est ensuite à vous de '.Html::a('mettre à jour', ['user/index']).' leur Crédit en ligne.<br />' | |||||
. 'Ceci fait, les clients paient leur commande directement via leur Crédit.') ; ?> | |||||
<?= $form->field($model, 'photo')->fileInput() ?> | <?= $form->field($model, 'photo')->fileInput() ?> | ||||
<?php | <?php | ||||
} | } | ||||
?> | ?> | ||||
<?= $form->field($model, 'infos_commande') | |||||
<?= $form->field($model, 'order_infos') | |||||
->textarea(['rows' => 6]) | ->textarea(['rows' => 6]) | ||||
->hint('Affichées au client lors de sa commande')?> | ->hint('Affichées au client lors de sa commande')?> | ||||