@@ -38,7 +38,8 @@ termes. | |||
namespace backend\controllers; | |||
class BackendController extends \common\controllers\CommonController { | |||
class BackendController extends \common\controllers\CommonController | |||
{ | |||
} | |||
@@ -38,11 +38,13 @@ termes. | |||
namespace backend\controllers; | |||
class CommandeController extends BackendController { | |||
class CommandeController extends BackendController | |||
{ | |||
var $enableCsrfValidation = false; | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
@@ -64,14 +66,17 @@ class CommandeController extends BackendController { | |||
]; | |||
} | |||
public function actionReportCron($date = '', $save = false, $id_etablissement = 0, $key = '') { | |||
if ($key == '64ac0bdab7e9f5e48c4d991ec5201d57') { | |||
$this->actionReport($date, $save, $id_etablissement); | |||
} | |||
} | |||
public function actionReport($date = '', $save = false, $id_etablissement = 0) { | |||
/** | |||
* Génére un PDF récapitulatif des commandes d'un producteur pour une | |||
* date donnée. | |||
* | |||
* @param string $date | |||
* @param boolean $save | |||
* @param integer $id_etablissement | |||
* @return PDF|null | |||
*/ | |||
public function actionReport($date = '', $save = false, $id_etablissement = 0) | |||
{ | |||
if (!Yii::$app->user->isGuest) | |||
$id_etablissement = Yii::$app->user->identity->id_etablissement; | |||
@@ -150,9 +155,18 @@ class CommandeController extends BackendController { | |||
// return the pdf output as per the destination setting | |||
return $pdf->render(); | |||
} | |||
return null ; | |||
} | |||
public function actionDeleteCommande($date, $id_commande) { | |||
/** | |||
* Supprime une commande. | |||
* | |||
* @param string $date | |||
* @param integer $id_commande | |||
*/ | |||
public function actionDeleteCommande($date, $id_commande) | |||
{ | |||
$commande = Commande::find() | |||
->with(['production', 'commandeProduits']) | |||
@@ -180,7 +194,18 @@ class CommandeController extends BackendController { | |||
$this->redirect(['index', 'date' => $date]); | |||
} | |||
public function gestionFormCommandes($production, $date, $points_vente, $produits, $users) { | |||
/** | |||
* Traite le formulaire d'ajout/modification de commande. | |||
* | |||
* @param Production $production | |||
* @param string $date | |||
* @param array $points_vente | |||
* @param array $produits | |||
* @param array $users | |||
*/ | |||
public function gestionFormCommandes( | |||
$production, $date, $points_vente, $produits, $users) | |||
{ | |||
if ($date != '') { | |||
// commandes | |||
@@ -262,7 +287,15 @@ class CommandeController extends BackendController { | |||
} | |||
} | |||
public function actionIndex($date = '', $return_data = false) { | |||
/** | |||
* Page principale de la gestion des commandes. | |||
* | |||
* @param string $date | |||
* @param boolean $return_data | |||
* @return string | |||
*/ | |||
public function actionIndex($date = '', $return_data = false) | |||
{ | |||
if (!Produit::count() && !PointVente::count()) { | |||
$this->redirect(['site/index', 'erreur_produits_points_vente' => 1]); | |||
@@ -535,8 +568,15 @@ class CommandeController extends BackendController { | |||
} | |||
} | |||
public function actionDownload($date = '', $id_point_vente = 0, $global = 0) { | |||
/** | |||
* Génère un fichier d'export des commandes au format CSV. | |||
* | |||
* @param string $date | |||
* @param integer $id_point_vente | |||
* @param boolean $global | |||
*/ | |||
public function actionDownload($date = '', $id_point_vente = 0, $global = 0) | |||
{ | |||
// commandes | |||
$commandes = Commande::find() | |||
->with('commandeProduits', 'user') | |||
@@ -693,8 +733,18 @@ class CommandeController extends BackendController { | |||
} | |||
} | |||
public function contentRecapCSV($date, $produits, $points_vente, $commandes) { | |||
/** | |||
* Génère le contenu nécessaire aux exports au format CSV. | |||
* | |||
* @see CommandeController::actionDownload() | |||
* @param string $date | |||
* @param array $produits | |||
* @param array $points_vente | |||
* @param array $commandes | |||
* @return array | |||
*/ | |||
public function contentRecapCSV($date, $produits, $points_vente, $commandes) | |||
{ | |||
$data = []; | |||
$filename = 'recapitulatif_' . $date; | |||
@@ -741,7 +791,18 @@ class CommandeController extends BackendController { | |||
]; | |||
} | |||
public function contentPointVenteCSV($date, $produits, $points_vente, $id_point_vente) { | |||
/** | |||
* Génère le contenu relatif aux points de vente nécessaires aux exports au | |||
* format CSV. | |||
* | |||
* @param string $date | |||
* @param array $produits | |||
* @param array $points_vente | |||
* @param integer $id_point_vente | |||
* @return array | |||
*/ | |||
public function contentPointVenteCSV($date, $produits, $points_vente, $id_point_vente) | |||
{ | |||
$data = []; | |||
@@ -811,13 +872,26 @@ class CommandeController extends BackendController { | |||
]; | |||
} | |||
public function actionAddCommandesAuto($date) { | |||
/** | |||
* Ajoute les commandes récurrentes pour une date donnée. | |||
* | |||
* @param string $date | |||
*/ | |||
public function actionAddCommandesAuto($date) | |||
{ | |||
CommandeAuto::addAll($date, true); | |||
$this->redirect(['index', 'date' => $date]); | |||
} | |||
public function actionChangeState($date, $actif, $redirect = true) { | |||
/** | |||
* Change l'état d'un jour de production (activé, désactivé). | |||
* | |||
* @param string $date | |||
* @param integer $actif | |||
* @param boolean $redirect | |||
*/ | |||
public function actionChangeState($date, $actif, $redirect = true) | |||
{ | |||
// changement état | |||
$production = Production::initProduction($date) ; | |||
$production->actif = $actif; | |||
@@ -828,12 +902,19 @@ class CommandeController extends BackendController { | |||
CommandeAuto::addAll($date); | |||
} | |||
if($redirect) | |||
if($redirect) { | |||
$this->redirect(['index', 'date' => $date]); | |||
} | |||
} | |||
public function actionChangeStateSemaine($date, $actif) { | |||
/** | |||
* Change l'état d'une semaine de production (activé, désactivé). | |||
* | |||
* @param string $date | |||
* @param integer $actif | |||
*/ | |||
public function actionChangeStateSemaine($date, $actif) | |||
{ | |||
$week = sprintf('%02d',date('W',strtotime($date))); | |||
$start = strtotime(date('Y',strtotime($date)).'W'.$week); | |||
$date_lundi = date('Y-m-d',strtotime('Monday',$start)) ; | |||
@@ -877,14 +958,17 @@ class CommandeController extends BackendController { | |||
$this->redirect(['index', 'date' => $date]); | |||
} | |||
public function actionChangeLivraison($date, $livraison) { | |||
$production = Production::find()->where(['date' => $date])->one(); | |||
$production->livraison = $livraison; | |||
$production->save(); | |||
$this->redirect(['index', 'date' => $date]); | |||
} | |||
public function actionAjaxUpdate($id_commande, $produits, $date, $commentaire) { | |||
/** | |||
* Met à jour une commande via une requête AJAX. | |||
* | |||
* @param integer $id_commande | |||
* @param array $produits | |||
* @param string $date | |||
* @param string $commentaire | |||
*/ | |||
public function actionAjaxUpdate( | |||
$id_commande, $produits, $date, $commentaire) | |||
{ | |||
$commande = Commande::find()->with('production', 'creditHistorique', 'user')->where(['id' => $id_commande])->one(); | |||
if ($commande && | |||
@@ -950,7 +1034,14 @@ class CommandeController extends BackendController { | |||
} | |||
} | |||
public function actionAjaxDelete($date, $id_commande) { | |||
/** | |||
* Supprime une commande via une requête AJAX. | |||
* | |||
* @param string $date | |||
* @param integer $id_commande | |||
*/ | |||
public function actionAjaxDelete($date, $id_commande) | |||
{ | |||
$commande = Commande::find() | |||
->with(['production', 'commandeProduits']) | |||
->where(['id' => $id_commande]) | |||
@@ -995,7 +1086,19 @@ class CommandeController extends BackendController { | |||
die(); | |||
} | |||
public function actionAjaxCreate($date, $id_pv, $id_user, $username, $produits, $commentaire) { | |||
/** | |||
* Crée une commande via une requête AJAX. | |||
* | |||
* @param string $date | |||
* @param integer $id_pv | |||
* @param integer $id_user | |||
* @param string $username | |||
* @param array $produits | |||
* @param string $commentaire | |||
*/ | |||
public function actionAjaxCreate( | |||
$date, $id_pv, $id_user, $username, $produits, $commentaire) | |||
{ | |||
$produits = json_decode($produits); | |||
$point_vente = PointVente::findOne($id_pv); | |||
$production = Production::findOne([ | |||
@@ -1107,6 +1210,12 @@ class CommandeController extends BackendController { | |||
} | |||
} | |||
/** | |||
* Retourne un récapitulatif du total des commandes (potentiel, commandé et | |||
* par produits) au format HTML; | |||
* | |||
* @param string $date | |||
*/ | |||
public function actionAjaxTotalCommandes($date) { | |||
$production = Production::find() | |||
@@ -1114,7 +1223,6 @@ class CommandeController extends BackendController { | |||
->andWhere(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||
->one(); | |||
if ($production) { | |||
// produits | |||
$produits = Produit::find() | |||
@@ -1122,8 +1230,6 @@ class CommandeController extends BackendController { | |||
->orderBy('order ASC') | |||
->all(); | |||
// commandes | |||
$commandes = Commande::find() | |||
->with('commandeProduits','commandeProduits.produit', 'user') | |||
@@ -1147,7 +1253,6 @@ class CommandeController extends BackendController { | |||
// produits selec pour production | |||
$produits_selec = ProductionProduit::findProduits($production->id); | |||
$ca_potentiel = 0; | |||
$poids_total = 0; | |||
foreach ($produits_selec as $id_produit_selec => $produit_selec) { | |||
@@ -1171,7 +1276,6 @@ class CommandeController extends BackendController { | |||
'poids_pain' => $poids_pain, | |||
]); | |||
echo json_encode([ | |||
'html_totaux' => $html_totaux, | |||
]); | |||
@@ -1180,7 +1284,16 @@ class CommandeController extends BackendController { | |||
die(); | |||
} | |||
public function actionAjaxPointVenteLivraison($id_production, $id_point_vente, $bool_livraison) { | |||
/** | |||
* Active ou désactive la livraison dans un point de vente. | |||
* | |||
* @param integer $id_production | |||
* @param integer $id_point_vente | |||
* @param boolean $bool_livraison | |||
*/ | |||
public function actionAjaxPointVenteLivraison( | |||
$id_production, $id_point_vente, $bool_livraison) | |||
{ | |||
$production_point_vente = ProductionPointVente::find() | |||
->where([ | |||
@@ -1197,7 +1310,13 @@ class CommandeController extends BackendController { | |||
die(); | |||
} | |||
public function actionStatutPaiement($id_commande) { | |||
/** | |||
* Retourne l'état du paiement (historique, crédit) d'une commande donnée. | |||
* | |||
* @param integer $id_commande | |||
*/ | |||
public function actionStatutPaiement($id_commande) | |||
{ | |||
$commande = Commande::find() | |||
->with('commandeProduits', 'production') | |||
->where(['id' => $id_commande]) | |||
@@ -1274,7 +1393,16 @@ class CommandeController extends BackendController { | |||
die(); | |||
} | |||
public function actionPaiement($id_commande, $type, $montant) { | |||
/** | |||
* Effectue le paiement/remboursement d'une commande. | |||
* | |||
* @param integer $id_commande | |||
* @param string $type | |||
* @param float $montant | |||
* @return string | |||
*/ | |||
public function actionPaiement($id_commande, $type, $montant) | |||
{ | |||
$commande = Commande::find() | |||
->with('commandeProduits', 'production') | |||
->where(['id' => $id_commande]) |
@@ -73,11 +73,12 @@ termes. | |||
namespace backend\controllers; | |||
class CommandeautoController extends BackendController { | |||
class CommandeautoController extends BackendController | |||
{ | |||
var $enableCsrfValidation = false; | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
@@ -94,7 +95,13 @@ class CommandeautoController extends BackendController { | |||
]; | |||
} | |||
public function actionIndex() { | |||
/** | |||
* Liste les commandes récurrente du producteur. | |||
* | |||
* @return string | |||
*/ | |||
public function actionIndex() | |||
{ | |||
$dataProvider = new ActiveDataProvider([ | |||
'query' => CommandeAuto::find() | |||
->with(['user', 'etablissement', 'pointVente', 'commandeAutoProduit']) | |||
@@ -107,11 +114,17 @@ class CommandeautoController extends BackendController { | |||
]); | |||
return $this->render('index', [ | |||
'dataProvider' => $dataProvider | |||
]); | |||
'dataProvider' => $dataProvider | |||
]); | |||
} | |||
public function actionCreate() { | |||
/** | |||
* Crée une commande récurrente. | |||
* | |||
* @return string | |||
*/ | |||
public function actionCreate() | |||
{ | |||
// form | |||
$model = new CommandeAutoForm; | |||
$model->id_etablissement = Yii::$app->user->identity->id_etablissement; | |||
@@ -122,8 +135,9 @@ class CommandeautoController extends BackendController { | |||
->orderBy('order ASC') | |||
->all(); | |||
if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->save()) { | |||
if ($model->load(Yii::$app->request->post()) && $model->validate() | |||
&& $model->save()) | |||
{ | |||
$this->redirect(['commandeauto/index']); | |||
} | |||
@@ -133,7 +147,15 @@ class CommandeautoController extends BackendController { | |||
]); | |||
} | |||
public function actionUpdate($id) { | |||
/** | |||
* Modifie une commande récurrente. | |||
* | |||
* @param integer $id | |||
* @return string | |||
* @throws NotFoundHttpException | |||
*/ | |||
public function actionUpdate($id) | |||
{ | |||
// form | |||
$model = new CommandeAutoForm; | |||
$commandeauto = CommandeAuto::findOne($id); | |||
@@ -169,28 +191,32 @@ class CommandeautoController extends BackendController { | |||
// produits | |||
$produits = Produit::find() | |||
->where(['id_etablissement' => $model->id_etablissement]) | |||
->orderBy('order ASC') | |||
->all(); | |||
->where(['id_etablissement' => $model->id_etablissement]) | |||
->orderBy('order ASC') | |||
->all(); | |||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | |||
if (!strlen($model->date_fin)) { | |||
$model->date_fin = null; | |||
} | |||
if ($model->save()) { | |||
$this->redirect(['commandeauto/index']); | |||
} | |||
} | |||
return $this->render('update', [ | |||
'model' => $model, | |||
'produits' => $produits | |||
]); | |||
'model' => $model, | |||
'produits' => $produits | |||
]); | |||
} | |||
public function actionDelete($id) { | |||
/** | |||
* Supprime une commande récurrente. | |||
* | |||
* @param integer $id | |||
*/ | |||
public function actionDelete($id) | |||
{ | |||
CommandeAutoProduit::deleteAll(['id_commande_auto' => $id]); | |||
CommandeAuto::findOne($id)->delete(); | |||
$this->redirect(['commandeauto/index']); |
@@ -41,7 +41,8 @@ namespace backend\controllers; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class CommuniquerController extends BackendController { | |||
class CommuniquerController extends BackendController | |||
{ | |||
public function behaviors() { | |||
return [ | |||
@@ -66,15 +67,29 @@ class CommuniquerController extends BackendController { | |||
]; | |||
} | |||
public function actionIndex() { | |||
/** | |||
* Affiche la page d'accueil de la section avec un aperçu du mpde d'emploi | |||
* à imprimer. | |||
* | |||
* @return string | |||
*/ | |||
public function actionIndex() | |||
{ | |||
$etablissement = Etablissement::findOne(['id' => Yii::$app->user->identity->id_etablissement]); | |||
return $this->render('index', [ | |||
'etablissement' => $etablissement, | |||
]); | |||
'etablissement' => $etablissement, | |||
]); | |||
} | |||
public function actionModeemploi() { | |||
/** | |||
* Génére un PDF contenant le mode d'emploi d'utilisation de la plateforme | |||
* à destination des clients des producteurs. | |||
* | |||
* @return string | |||
*/ | |||
public function actionModeemploi() | |||
{ | |||
$etablissement = Etablissement::findOne(['id' => Yii::$app->user->identity->id_etablissement]); | |||
@@ -54,9 +54,11 @@ use common\models\Production; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class CronController extends BackendController { | |||
class CronController extends BackendController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -76,7 +78,14 @@ class CronController extends BackendController { | |||
]; | |||
} | |||
public function actionInitBddDemo($key = '') { | |||
/** | |||
* Initialise la base de données de démo avec les données de l'environnement | |||
* de production (en modifiant les données privées). | |||
* | |||
* @param string $key | |||
*/ | |||
public function actionInitBddDemo($key = '') | |||
{ | |||
if ($key == '45432df6e842ac71aa0b5bb6b9f25d44' && YII_ENV == 'demo') { | |||
$arr_noms = [ | |||
@@ -194,7 +203,15 @@ class CronController extends BackendController { | |||
} | |||
} | |||
public function actionProcessCommandes($key = '', $force_date = '') { | |||
/** | |||
* Routine quotidienne concernant les commandes : paiement et envoi d'un | |||
* récap aux producteurs. | |||
* | |||
* @param string $key | |||
* @param string $force_date | |||
*/ | |||
public function actionProcessCommandes($key = '', $force_date = '') | |||
{ | |||
if ($key == '64ac0bdab7e9f5e48c4d991ec5201d57') { | |||
if(strlen($force_date)) { |
@@ -51,7 +51,8 @@ use yii\filters\AccessControl; | |||
/** | |||
* DeveloppementController implements the CRUD actions for Developpement model. | |||
*/ | |||
class DeveloppementController extends Controller { | |||
class DeveloppementController extends Controller | |||
{ | |||
/** | |||
* @inheritdoc | |||
@@ -74,10 +75,12 @@ class DeveloppementController extends Controller { | |||
} | |||
/** | |||
* Lists all Developpement models. | |||
* Liste les développements. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex($statut = Developpement::STATUT_OPEN) { | |||
public function actionIndex($statut = Developpement::STATUT_OPEN) | |||
{ | |||
$dataProvider = new ActiveDataProvider([ | |||
'query' => Developpement::find()->with(['developpementPriorite', 'developpementPrioriteCurrentEtablissement'])->where(['statut' => $statut])->orderBy('date DESC'), | |||
]); | |||
@@ -93,7 +96,8 @@ class DeveloppementController extends Controller { | |||
* If creation is successful, the browser will be redirected to the 'view' page. | |||
* @return mixed | |||
*/ | |||
public function actionCreate() { | |||
public function actionCreate() | |||
{ | |||
$model = new Developpement(); | |||
if ($model->load(Yii::$app->request->post())) { | |||
@@ -116,7 +120,8 @@ class DeveloppementController extends Controller { | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionUpdate($id) { | |||
public function actionUpdate($id) | |||
{ | |||
$model = $this->findModel($id); | |||
if ($model->load(Yii::$app->request->post())) { | |||
@@ -138,14 +143,22 @@ class DeveloppementController extends Controller { | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionDelete($id) { | |||
public function actionDelete($id) | |||
{ | |||
$this->findModel($id)->delete(); | |||
Yii::$app->getSession()->setFlash('success', 'Développement supprimé'); | |||
return $this->redirect(['index']); | |||
} | |||
public function actionPriorite($id_developpement, $priorite = null) { | |||
/** | |||
* Définit une priorité pour un développement. | |||
* | |||
* @param integer $id_developpement | |||
* @param string $priorite | |||
*/ | |||
public function actionPriorite($id_developpement, $priorite = null) | |||
{ | |||
$developpement_priorite = DeveloppementPriorite::find() | |||
->where(['id_developpement' => $id_developpement, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||
@@ -182,7 +195,8 @@ class DeveloppementController extends Controller { | |||
* @return Developpement the loaded model | |||
* @throws NotFoundHttpException if the model cannot be found | |||
*/ | |||
protected function findModel($id) { | |||
protected function findModel($id) | |||
{ | |||
if (($model = Developpement::findOne($id)) !== null) { | |||
return $model; | |||
} else { |
@@ -51,9 +51,11 @@ use common\models\Facture; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class EtablissementAdminController extends BackendController { | |||
class EtablissementAdminController extends BackendController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -76,7 +78,13 @@ class EtablissementAdminController extends BackendController { | |||
]; | |||
} | |||
public function actionIndex() { | |||
/** | |||
* Liste les producteurs. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex() | |||
{ | |||
$datas_etablissements = new ActiveDataProvider([ | |||
'query' => Etablissement::find() | |||
->with('userEtablissement', 'user') | |||
@@ -87,12 +95,17 @@ class EtablissementAdminController extends BackendController { | |||
]); | |||
return $this->render('index', [ | |||
'datas_etablissements' => $datas_etablissements, | |||
'datas_etablissements' => $datas_etablissements, | |||
]); | |||
} | |||
public function actionFacturer($id_etablissement) { | |||
/** | |||
* Génère la facture mensuelle d'un producteur. | |||
* | |||
* @param integer $id_etablissement | |||
*/ | |||
public function actionFacturer($id_etablissement) | |||
{ | |||
$etablissement = Etablissement::findOne($id_etablissement); | |||
if ($etablissement) { | |||
@@ -124,7 +137,13 @@ class EtablissementAdminController extends BackendController { | |||
$this->redirect(['etablissement-admin/index']); | |||
} | |||
public function actionFacturation() { | |||
/** | |||
* Liste les factures des producteurs. | |||
* | |||
* @return mxied | |||
*/ | |||
public function actionFacturation() | |||
{ | |||
$datas_factures = new ActiveDataProvider([ | |||
'query' => Facture::find() | |||
->with('etablissement') | |||
@@ -139,6 +158,13 @@ class EtablissementAdminController extends BackendController { | |||
]); | |||
} | |||
/** | |||
* Recherche un établissement. | |||
* | |||
* @param integer $id | |||
* @return Etablissement | |||
* @throws NotFoundHttpException | |||
*/ | |||
protected function findModel($id) { | |||
if (($model = Etablissement::findOne($id)) !== null) { | |||
return $model; |
@@ -53,11 +53,13 @@ use common\models\Facture; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class EtablissementController extends BackendController { | |||
class EtablissementController extends BackendController | |||
{ | |||
public $enableCsrfValidation = false; | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -81,7 +83,13 @@ class EtablissementController extends BackendController { | |||
]; | |||
} | |||
public function actionUpdate() { | |||
/** | |||
* Modifie un établissement. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionUpdate() | |||
{ | |||
$request = Yii::$app->request; | |||
$model = $this->findModel(Yii::$app->user->identity->id_etablissement); | |||
$logo_filename_old = $model->logo; | |||
@@ -111,7 +119,14 @@ class EtablissementController extends BackendController { | |||
} | |||
} | |||
public function actionFacturation() { | |||
/** | |||
* Affiche le formulaire permettant au producteur de définir le montant | |||
* de son abonnement. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionFacturation() | |||
{ | |||
$datas_factures = new ActiveDataProvider([ | |||
'query' => Facture::find() | |||
->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||
@@ -137,7 +152,15 @@ class EtablissementController extends BackendController { | |||
]); | |||
} | |||
protected function findModel($id) { | |||
/** | |||
* Recherche un établissement via son ID. | |||
* | |||
* @param integer $id | |||
* @return Etablissement | |||
* @throws NotFoundHttpException | |||
*/ | |||
protected function findModel($id) | |||
{ | |||
if (($model = Etablissement::findOne($id)) !== null) { | |||
return $model; | |||
} else { |
@@ -1,136 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
namespace backend\controllers; | |||
use Yii; | |||
use yii\filters\AccessControl; | |||
use yii\data\ActiveDataProvider; | |||
use yii\web\Controller; | |||
use yii\web\NotFoundHttpException; | |||
use yii\filters\VerbFilter; | |||
use common\models\User; | |||
use common\models\Etablissement; | |||
use c006\paypal_ipn\PayPal_Ipn; | |||
/** | |||
* ProduitController implements the CRUD actions for Produit model. | |||
*/ | |||
class PaiementController extends BackendController { | |||
var $enableCsrfValidation = false; | |||
public function behaviors() { | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
'actions' => [ | |||
], | |||
], | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
'rules' => [ | |||
[ | |||
'actions' => ['ipn'], | |||
'allow' => true, | |||
'roles' => ['?'], | |||
], | |||
[ | |||
'allow' => true, | |||
'roles' => ['@'], | |||
'matchCallback' => function ($rule, $action) { | |||
return Yii::$app->user->identity->status == USER::STATUS_ADMIN | |||
|| Yii::$app->user->identity->status == USER::STATUS_BOULANGER; | |||
} | |||
] | |||
], | |||
], | |||
]; | |||
} | |||
/** | |||
* Lists all Produit models. | |||
* @return mixed | |||
*/ | |||
public function actionIndex() { | |||
return $this->render('index', [ | |||
]); | |||
} | |||
public function actionAnnuler() { | |||
return $this->render('annuler', [ | |||
]); | |||
} | |||
public function actionSucces() { | |||
return $this->render('succes', [ | |||
]); | |||
} | |||
public function beforeAction($action) { | |||
if (Yii::$app->controller->action->id == "ipn") | |||
$this->enableCsrfValidation = false; | |||
return parent::beforeAction($action); | |||
} | |||
public function actionIpn() { | |||
if (isset($_POST)) { | |||
$ipn = new PayPal_Ipn(false); | |||
if ($ipn->init()) { | |||
$custom = $ipn->getKeyValue('custom'); | |||
$txn_type = $ipn->getKeyValue('txn_type'); | |||
if ($txn_type == 'subscr_payment' && $custom) { | |||
$user = User::findOne($custom); | |||
if ($user) { | |||
$etablissement = Etablissement::findOne($user->id_etablissement); | |||
if ($etablissement) { | |||
$etablissement->date_paiement = date('Y-m-d H:i:s', time()); | |||
$etablissement->save(); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
/* Enable again if you use it */ | |||
Yii::$app->request->enableCsrfValidation = true; | |||
} | |||
} |
@@ -51,9 +51,11 @@ use common\models\PointVenteUser; | |||
/** | |||
* PointVenteController implements the CRUD actions for PointVente model. | |||
*/ | |||
class PointVenteController extends BackendController { | |||
class PointVenteController extends BackendController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -77,11 +79,12 @@ class PointVenteController extends BackendController { | |||
} | |||
/** | |||
* Lists all PointVente models. | |||
* Liste les points de vente. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex() { | |||
public function actionIndex() | |||
{ | |||
$dataProvider = new ActiveDataProvider([ | |||
'query' => PointVente::find()->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||
]); | |||
@@ -92,22 +95,12 @@ class PointVenteController extends BackendController { | |||
} | |||
/** | |||
* Displays a single PointVente model. | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionView($id) { | |||
return $this->render('view', [ | |||
'model' => $this->findModel($id), | |||
]); | |||
} | |||
/** | |||
* Creates a new PointVente model. | |||
* If creation is successful, the browser will be redirected to the 'view' page. | |||
* Crée un point de vente. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionCreate() { | |||
public function actionCreate() | |||
{ | |||
$model = new PointVente(); | |||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||
@@ -122,12 +115,13 @@ class PointVenteController extends BackendController { | |||
} | |||
/** | |||
* Updates an existing PointVente model. | |||
* If update is successful, the browser will be redirected to the 'view' page. | |||
* Modifie un point de vente. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionUpdate($id) { | |||
public function actionUpdate($id) | |||
{ | |||
$model = PointVente::find() | |||
->with('pointVenteUser') | |||
->where(['id' => $id]) | |||
@@ -149,7 +143,14 @@ class PointVenteController extends BackendController { | |||
} | |||
} | |||
public function initForm($id = 0) { | |||
/** | |||
* Initialise le formulaire de création/modification. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function initForm($id = 0) | |||
{ | |||
$users = User::findBy() | |||
->orderBy('nom ASC') | |||
->all(); | |||
@@ -159,12 +160,13 @@ class PointVenteController extends BackendController { | |||
} | |||
/** | |||
* Deletes an existing PointVente model. | |||
* If deletion is successful, the browser will be redirected to the 'index' page. | |||
* Supprime un point de vente et redirige vers la liste des points de vente. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionDelete($id) { | |||
public function actionDelete($id) | |||
{ | |||
$this->findModel($id)->delete(); | |||
PointVenteUser::deleteAll(['id_point_vente' => $id]); | |||
ProductionPointVente::deleteAll(['id_point_vente' => $id]) ; | |||
@@ -172,13 +174,14 @@ class PointVenteController extends BackendController { | |||
} | |||
/** | |||
* Finds the PointVente model based on its primary key value. | |||
* If the model is not found, a 404 HTTP exception will be thrown. | |||
* Recherche un point de vente en fonction de son ID. | |||
* | |||
* @param integer $id | |||
* @return PointVente the loaded model | |||
* @throws NotFoundHttpException if the model cannot be found | |||
* @return PointVente | |||
* @throws NotFoundHttpException si le modèle n'est pas trouvé | |||
*/ | |||
protected function findModel($id) { | |||
protected function findModel($id) | |||
{ | |||
if (($model = PointVente::findOne($id)) !== null) { | |||
return $model; | |||
} else { |
@@ -55,11 +55,12 @@ use common\helpers\Upload; | |||
/** | |||
* ProduitController implements the CRUD actions for Produit model. | |||
*/ | |||
class ProduitController extends BackendController { | |||
class ProduitController extends BackendController | |||
{ | |||
var $enableCsrfValidation = false; | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -83,10 +84,12 @@ class ProduitController extends BackendController { | |||
} | |||
/** | |||
* Lists all Produit models. | |||
* Liste les modèles Produit. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex() { | |||
public function actionIndex() | |||
{ | |||
$dataProvider = new ActiveDataProvider([ | |||
'query' => Produit::find() | |||
->where('(vrac IS NULL OR vrac = 0)') | |||
@@ -103,22 +106,13 @@ class ProduitController extends BackendController { | |||
} | |||
/** | |||
* Displays a single Produit model. | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionView($id) { | |||
return $this->render('view', [ | |||
'model' => $this->findModel($id), | |||
]); | |||
} | |||
/** | |||
* Creates a new Produit model. | |||
* If creation is successful, the browser will be redirected to the 'view' page. | |||
* Crée un modèle Produit. | |||
* Si la création réussit, le navigateur est redirigé vers la page 'index'. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionCreate() { | |||
public function actionCreate() | |||
{ | |||
$model = new Produit(); | |||
$model->actif = 1; | |||
$model->id_etablissement = Yii::$app->user->identity->id_etablissement; | |||
@@ -151,12 +145,14 @@ class ProduitController extends BackendController { | |||
} | |||
/** | |||
* Updates an existing Produit model. | |||
* If update is successful, the browser will be redirected to the 'view' page. | |||
* Modifie un modèle Produit existant. | |||
* Si la modification réussit, le navigateur est redirigé vers la page 'index'. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionUpdate($id) { | |||
public function actionUpdate($id) | |||
{ | |||
$request = Yii::$app->request; | |||
$model = $this->findModel($id); | |||
@@ -188,12 +184,15 @@ class ProduitController extends BackendController { | |||
} | |||
/** | |||
* Deletes an existing Produit model. | |||
* If deletion is successful, the browser will be redirected to the 'index' page. | |||
* Supprime un modèle Produit. | |||
* Si la suppression réussit, le navigateur est redirigé vers la page | |||
* 'index'. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionDelete($id) { | |||
public function actionDelete($id) | |||
{ | |||
$this->findModel($id)->delete(); | |||
$productions_produits = ProductionProduit::find()->where(['id_produit' => $id])->all(); | |||
@@ -204,7 +203,13 @@ class ProduitController extends BackendController { | |||
return $this->redirect(['index']); | |||
} | |||
public function actionOrdre($tab) { | |||
/** | |||
* Modifie l'ordre des produits. | |||
* | |||
* @param array $tab | |||
*/ | |||
public function actionOrdre($tab) | |||
{ | |||
$tab_ordre = json_decode(stripslashes($tab)); | |||
foreach ($tab_ordre as $id => $o) { | |||
@@ -215,13 +220,14 @@ class ProduitController extends BackendController { | |||
} | |||
/** | |||
* Finds the Produit model based on its primary key value. | |||
* If the model is not found, a 404 HTTP exception will be thrown. | |||
* Recherche un produit en fonction de son ID. | |||
* | |||
* @param integer $id | |||
* @return Produit the loaded model | |||
* @throws NotFoundHttpException if the model cannot be found | |||
* @return Produit | |||
* @throws NotFoundHttpException si le modèle n'est pas trouvé | |||
*/ | |||
protected function findModel($id) { | |||
protected function findModel($id) | |||
{ | |||
if (($model = Produit::findOne($id)) !== null) { | |||
return $model; | |||
} else { |
@@ -53,12 +53,14 @@ use common\models\Commande; | |||
/** | |||
* Site controller | |||
*/ | |||
class SiteController extends BackendController { | |||
class SiteController extends BackendController | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
@@ -98,7 +100,8 @@ class SiteController extends BackendController { | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function actions() { | |||
public function actions() | |||
{ | |||
return [ | |||
'error' => [ | |||
'class' => 'yii\web\ErrorAction', | |||
@@ -106,7 +109,15 @@ class SiteController extends BackendController { | |||
]; | |||
} | |||
public function actionIndex() { | |||
/** | |||
* Affiche le tableau de bord du backend avec les dernières commandes | |||
* réalisée, les dernières inscriptions, la liste des clients ayant un crédit | |||
* négatif etc. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex() | |||
{ | |||
// commandes | |||
$productions = Production::find() | |||
->with('commande') | |||
@@ -153,7 +164,13 @@ class SiteController extends BackendController { | |||
]); | |||
} | |||
public function actionLogin() { | |||
/** | |||
* Affiche la page de connexion. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionLogin() | |||
{ | |||
if (!\Yii::$app->user->isGuest) { | |||
return $this->goHome(); | |||
} | |||
@@ -163,18 +180,31 @@ class SiteController extends BackendController { | |||
return $this->goBack(); | |||
} else { | |||
return $this->render('login', [ | |||
'model' => $model, | |||
'model' => $model, | |||
]); | |||
} | |||
} | |||
public function actionLogout() { | |||
/** | |||
* Déconnecte l'utilisateur et le redirige à la page d'accueil. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionLogout() | |||
{ | |||
Yii::$app->user->logout(); | |||
return $this->goHome(); | |||
} | |||
public function actionChangeEtablissement($id) { | |||
/** | |||
* Change le producteur courant de l'utilisateur connecté. | |||
* Permet de passer d'un producteur à un autre en tant qu'administrateur. | |||
* | |||
* @param integer $id | |||
*/ | |||
public function actionChangeEtablissement($id) | |||
{ | |||
Yii::$app->user->identity->id_etablissement = $id; | |||
Yii::$app->user->identity->save(); | |||
$this->redirect(['site/index']); |
@@ -47,9 +47,11 @@ use DateTime; | |||
use DateInterval; | |||
use DatePeriod; | |||
class StatsController extends BackendController { | |||
class StatsController extends BackendController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
@@ -67,8 +69,13 @@ class StatsController extends BackendController { | |||
]; | |||
} | |||
public function actionIndex() { | |||
/** | |||
* Affiche les statistiques de l'année avec le CA réalisé par mois. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex() | |||
{ | |||
/* | |||
* Volume de commande de l'année passée (par mois) | |||
*/ | |||
@@ -123,8 +130,15 @@ class StatsController extends BackendController { | |||
const TOTAUX = 13 ; | |||
public function actionProduits($year = 0) { | |||
/** | |||
* Affiche un tableau avec les totaux (maximums, commandés) de chaque produit | |||
* par mois d'une année donnée. | |||
* | |||
* @param integer $year | |||
* @return mixed | |||
*/ | |||
public function actionProduits($year = 0) | |||
{ | |||
if(!$year) $year = date('Y') ; | |||
$produits = Produit::find() |
@@ -41,9 +41,11 @@ namespace backend\controllers; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class UserController extends BackendController { | |||
class UserController extends BackendController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -67,10 +69,13 @@ class UserController extends BackendController { | |||
} | |||
/** | |||
* Lists all User models. | |||
* Liste les utilisateurs. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex($id_point_vente = 0, $section_clients_inactifs = false) { | |||
public function actionIndex( | |||
$id_point_vente = 0, $section_clients_inactifs = false) | |||
{ | |||
$params = Yii::$app->request->queryParams; | |||
if($id_point_vente) | |||
$params['id_point_vente'] = $id_point_vente ; | |||
@@ -103,7 +108,8 @@ class UserController extends BackendController { | |||
* If creation is successful, the browser will be redirected to the 'view' page. | |||
* @return mixed | |||
*/ | |||
public function actionCreate() { | |||
public function actionCreate() | |||
{ | |||
$model = new User(); | |||
if ($model->load(Yii::$app->request->post()) && $model->validate() && YII_ENV != 'demo') { | |||
@@ -143,7 +149,8 @@ class UserController extends BackendController { | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionUpdate($id) { | |||
public function actionUpdate($id) | |||
{ | |||
$model = $this->findModel($id); | |||
$previous_mail = $model->email ; | |||
@@ -177,8 +184,8 @@ class UserController extends BackendController { | |||
* | |||
* @param integer $id ID de l'utilisateur | |||
*/ | |||
public function actionDelete($id) { | |||
public function actionDelete($id) | |||
{ | |||
$user_etablissement = UserEtablissement::findOne([ | |||
'id_user' => $id, | |||
'id_etablissement' => Yii::$app->user->identity->id_etablissement | |||
@@ -198,8 +205,15 @@ class UserController extends BackendController { | |||
$this->redirect(array_merge(['index'],$params)); | |||
} | |||
public function actionMail($id_point_vente = 0) { | |||
/** | |||
* Affiche la liste des emails des utilisateurs liés à un point de vente | |||
* donné. | |||
* | |||
* @param integer $id_point_vente | |||
* @return mixed | |||
*/ | |||
public function actionMail($id_point_vente = 0) | |||
{ | |||
$users = User::findBy([ | |||
'id_etablissement' => Yii::$app->user->identity->id_etablissement, | |||
'id_point_vente' => $id_point_vente | |||
@@ -217,7 +231,6 @@ class UserController extends BackendController { | |||
if($id_point_vente) { | |||
$point_vente = PointVente::findOne(['id' => $id_point_vente, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) ; | |||
} | |||
return $this->render('liste_mails', [ | |||
'users' => $arr_users, | |||
@@ -226,7 +239,16 @@ class UserController extends BackendController { | |||
]); | |||
} | |||
public function actionCredit($id) { | |||
/** | |||
* Affiche les données liées au crédit d'un utilisateur (formulaire, | |||
* historique). | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
* @throws UserException | |||
*/ | |||
public function actionCredit($id) | |||
{ | |||
$user = User::find()->with('userEtablissement')->where(['id' => $id])->one(); | |||
$user_etablissement = UserEtablissement::findOne(['id_user' => $id, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]); | |||
@@ -259,7 +281,14 @@ class UserController extends BackendController { | |||
} | |||
} | |||
public function actionCommandes($id) { | |||
/** | |||
* Affiche les commandes d'un utilisateur. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionCommandes($id) | |||
{ | |||
$user = User::findOne($id); | |||
@@ -289,7 +318,8 @@ class UserController extends BackendController { | |||
* @return User the loaded model | |||
* @throws NotFoundHttpException if the model cannot be found | |||
*/ | |||
protected function findModel($id) { | |||
protected function findModel($id) | |||
{ | |||
if (($model = User::findOne($id)) !== null) { | |||
return $model; | |||
} else { |
@@ -1,231 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
namespace backend\controllers; | |||
use common\models\ProductionProduit; | |||
use Yii; | |||
use yii\filters\AccessControl; | |||
use common\models\Produit; | |||
use common\models\Production; | |||
use common\models\User; | |||
use yii\data\ActiveDataProvider; | |||
use yii\web\Controller; | |||
use yii\web\NotFoundHttpException; | |||
use yii\filters\VerbFilter; | |||
use yii\web\UploadedFile; | |||
/** | |||
* ProduitController implements the CRUD actions for Produit model. | |||
*/ | |||
class VracController extends BackendController { | |||
var $enableCsrfValidation = false; | |||
public function behaviors() { | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
'actions' => [ | |||
'delete' => ['post'], | |||
], | |||
], | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
'rules' => [ | |||
[ | |||
'allow' => true, | |||
'roles' => ['@'], | |||
'matchCallback' => function ($rule, $action) { | |||
return Yii::$app->user->identity->status == USER::STATUS_ADMIN | |||
|| Yii::$app->user->identity->status == USER::STATUS_BOULANGER; | |||
} | |||
] | |||
], | |||
], | |||
]; | |||
} | |||
/** | |||
* Lists all Produit models. | |||
* @return mixed | |||
*/ | |||
public function actionIndex() { | |||
$dataProvider = new ActiveDataProvider([ | |||
'query' => Produit::find()->where('vrac = 1')->orderBy('order ASC'), | |||
]); | |||
return $this->render('index', [ | |||
'dataProvider' => $dataProvider, | |||
]); | |||
} | |||
/** | |||
* Displays a single Produit model. | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionView($id) { | |||
return $this->render('view', [ | |||
'model' => $this->findModel($id), | |||
]); | |||
} | |||
/** | |||
* Creates a new Produit model. | |||
* If creation is successful, the browser will be redirected to the 'view' page. | |||
* @return mixed | |||
*/ | |||
public function actionCreate() { | |||
$model = new Produit(); | |||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||
self::uploadFile($model, 'illustration'); | |||
self::uploadFile($model, 'photo'); | |||
$model->vrac = 1; | |||
$model->lundi = 1; | |||
$model->mardi = 1; | |||
$model->mercredi = 1; | |||
$model->jeudi = 1; | |||
$model->vendredi = 1; | |||
$model->samedi = 1; | |||
$model->dimanche = 1; | |||
$model->save(); | |||
// on ajoute un enregistrement ProductionProduit pour chaque production | |||
$productions = Production::find()->where('date > ' . date('Y-m-d'))->all(); | |||
foreach ($productions as $prod) { | |||
$production_produit = new ProductionProduit; | |||
$production_produit->id_production = $prod->id; | |||
$production_produit->id_produit = $model->id; | |||
$production_produit->actif = 0; | |||
$production_produit->save(); | |||
} | |||
return $this->redirect(['index']); | |||
} else { | |||
return $this->render('create', [ | |||
'model' => $model, | |||
]); | |||
} | |||
} | |||
/** | |||
* Updates an existing Produit model. | |||
* If update is successful, the browser will be redirected to the 'view' page. | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionUpdate($id) { | |||
$request = Yii::$app->request; | |||
$model = $this->findModel($id); | |||
$illustration_filename_old = $model->illustration; | |||
$photo_filename_old = $model->photo; | |||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||
self::uploadFile($model, 'illustration', $illustration_filename_old); | |||
self::uploadFile($model, 'photo', $photo_filename_old); | |||
$delete_illustration = $request->post('delete_illustration', 0); | |||
if ($delete_illustration) { | |||
$model->illustration = ''; | |||
$model->save(); | |||
} | |||
$delete_photo = $request->post('delete_photo', 0); | |||
if ($delete_photo) { | |||
$model->photo = ''; | |||
$model->save(); | |||
} | |||
return $this->redirect(['index']); | |||
} else { | |||
return $this->render('update', [ | |||
'model' => $model, | |||
]); | |||
} | |||
} | |||
public static function uploadFile($model, $champs, $filename_old = '') { | |||
$file = UploadedFile::getInstance($model, $champs); | |||
if ($file) { | |||
$file_name = $file->baseName . '-' . uniqid() . '.' . $file->extension; | |||
$file->saveAs('../../frontend/web/uploads/' . $file_name); | |||
$model->$champs = $file_name; | |||
} else { | |||
$model->$champs = $filename_old; | |||
} | |||
$model->save(); | |||
} | |||
/** | |||
* Deletes an existing Produit model. | |||
* If deletion is successful, the browser will be redirected to the 'index' page. | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionDelete($id) { | |||
$this->findModel($id)->delete(); | |||
$productions_produits = ProductionProduit::find()->where(['id_produit' => $id])->all(); | |||
foreach ($productions_produits as $pp) { | |||
$pp->delete(); | |||
} | |||
return $this->redirect(['index']); | |||
} | |||
/** | |||
* Finds the Produit model based on its primary key value. | |||
* If the model is not found, a 404 HTTP exception will be thrown. | |||
* @param integer $id | |||
* @return Produit the loaded model | |||
* @throws NotFoundHttpException if the model cannot be found | |||
*/ | |||
protected function findModel($id) { | |||
if (($model = Produit::findOne($id)) !== null) { | |||
return $model; | |||
} else { | |||
throw new NotFoundHttpException('The requested page does not exist.'); | |||
} | |||
} | |||
} |
@@ -80,7 +80,6 @@ class MailForm extends Model | |||
*/ | |||
public function sendEmail($email) | |||
{ | |||
return Yii::$app->mailer->compose() | |||
->setTo($email) | |||
->setFrom(['matthieu@lechatdesnoisettes.com' => 'Le Chat des Noisettes']) |
@@ -1,73 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\widgets\DetailView; | |||
/* @var $this yii\web\View */ | |||
/* @var $model backend\models\PointVente */ | |||
$this->title = $model->id; | |||
$this->params['breadcrumbs'][] = ['label' => 'Point Ventes', 'url' => ['index']]; | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<div class="point-vente-view"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<p> | |||
<?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |||
<?= Html::a('Delete', ['delete', 'id' => $model->id], [ | |||
'class' => 'btn btn-danger', | |||
'data' => [ | |||
'confirm' => 'Are you sure you want to delete this item?', | |||
'method' => 'post', | |||
], | |||
]) ?> | |||
</p> | |||
<?= DetailView::widget([ | |||
'model' => $model, | |||
'attributes' => [ | |||
'id', | |||
'nom', | |||
'adresse:ntext', | |||
], | |||
]) ?> | |||
</div> |
@@ -1,79 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\widgets\DetailView; | |||
/* @var $this yii\web\View */ | |||
/* @var $model app\models\Produit */ | |||
$this->title = $model->id; | |||
$this->params['breadcrumbs'][] = ['label' => 'Produits', 'url' => ['index']]; | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<div class="produit-view"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<p> | |||
<?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |||
<?= Html::a('Delete', ['delete', 'id' => $model->id], [ | |||
'class' => 'btn btn-danger', | |||
'data' => [ | |||
'confirm' => 'Are you sure you want to delete this item?', | |||
'method' => 'post', | |||
], | |||
]) ?> | |||
</p> | |||
<?= DetailView::widget([ | |||
'model' => $model, | |||
'attributes' => [ | |||
'id', | |||
'nom', | |||
'description', | |||
'actif', | |||
'illustration', | |||
'photo', | |||
'saison', | |||
'prix', | |||
'poids', | |||
], | |||
]) ?> | |||
</div> |
@@ -1,72 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\widgets\ActiveForm; | |||
/* @var $this yii\web\View */ | |||
/* @var $model app\models\Produit */ | |||
/* @var $form yii\widgets\ActiveForm */ | |||
?> | |||
<div class="produit-form"> | |||
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> | |||
<?= $form->field($model, 'actif')->radioList([1 => 'Oui',0 => 'Non' ]) ?> | |||
<?= $form->field($model, 'order')->textInput(['maxlength' => 255]) ?> | |||
<?= $form->field($model, 'nom')->textInput(['maxlength' => 255]) ?> | |||
<?= $form->field($model, 'diminutif')->textInput(['maxlength' => 255]) ?> | |||
<?= $form->field($model, 'description')->textInput(['maxlength' => 255]) ?> | |||
<?= $form->field($model, 'prix')->textInput() ?> | |||
<?= $form->field($model, 'epuise')->checkbox() ?> | |||
<?= $form->field($model, 'photo')->fileInput() ?> | |||
<?php | |||
if(strlen($model->photo)) { | |||
echo '<img src="../../frontend/web/uploads/'.$model->photo.'" width="200px" /><br />' ; | |||
echo '<input type="checkbox" name="delete_photo" id="delete_photo" /> <label for="delete_photo">Supprimer la photo</label><br /><br />' ; | |||
} | |||
?> | |||
<div class="form-group"> | |||
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> |
@@ -1,57 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
/* @var $this yii\web\View */ | |||
/* @var $model app\models\Produit */ | |||
$this->title = 'Ajouter vrac'; | |||
$this->params['breadcrumbs'][] = ['label' => 'Produits', 'url' => ['index']]; | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<div class="produit-create"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<?= $this->render('_form', [ | |||
'model' => $model, | |||
]) ?> | |||
</div> |
@@ -1,73 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\grid\GridView; | |||
/* @var $this yii\web\View */ | |||
/* @var $dataProvider yii\data\ActiveDataProvider */ | |||
$this->title = 'Vrac'; | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<div class="produit-index"> | |||
<h1><?= Html::encode($this->title) ?> <?= Html::a('Ajouter', ['create'], ['class' => 'btn btn-success']) ?></h1> | |||
<?= GridView::widget([ | |||
'dataProvider' => $dataProvider, | |||
'columns' => [ | |||
//['class' => 'yii\grid\SerialColumn'], | |||
//'id', | |||
'order', | |||
'diminutif', | |||
'nom', | |||
'epuise', | |||
'actif', | |||
//'illustration', | |||
// 'photo', | |||
// 'saison', | |||
// 'prix', | |||
// 'poids', | |||
['class' => 'yii\grid\ActionColumn'], | |||
], | |||
]); ?> | |||
</div> |
@@ -1,57 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
/* @var $this yii\web\View */ | |||
/* @var $model app\models\Produit */ | |||
$this->title = 'Modifier vrac #'. $model->id; | |||
$this->params['breadcrumbs'][] = ['label' => 'Produits', 'url' => ['index']]; | |||
$this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; | |||
$this->params['breadcrumbs'][] = 'Update'; | |||
?> | |||
<div class="produit-update"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<?= $this->render('_form', [ | |||
'model' => $model, | |||
]) ?> | |||
</div> |
@@ -1,79 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\widgets\DetailView; | |||
/* @var $this yii\web\View */ | |||
/* @var $model app\models\Produit */ | |||
$this->title = $model->id; | |||
$this->params['breadcrumbs'][] = ['label' => 'Produits', 'url' => ['index']]; | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<div class="produit-view"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<p> | |||
<?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?> | |||
<?= Html::a('Delete', ['delete', 'id' => $model->id], [ | |||
'class' => 'btn btn-danger', | |||
'data' => [ | |||
'confirm' => 'Are you sure you want to delete this item?', | |||
'method' => 'post', | |||
], | |||
]) ?> | |||
</p> | |||
<?= DetailView::widget([ | |||
'model' => $model, | |||
'attributes' => [ | |||
'id', | |||
'nom', | |||
'description', | |||
'actif', | |||
'illustration', | |||
'photo', | |||
'saison', | |||
'prix', | |||
'poids', | |||
], | |||
]) ?> | |||
</div> |
@@ -596,16 +596,17 @@ function chat_index_commandes_affiche_commande(id_pv, id_commande) { | |||
function chat_index_commandes_boutons_paiement(id_pv, id_commande) { | |||
// boutons paiement/remboursement | |||
$('#point-vente-'+id_pv+' .payer, #point-vente-'+id_pv+' .rembourser').click(function() { | |||
$.get(UrlManager.getBaseUrl()+'commande/paiement',{ | |||
id_commande: id_commande, | |||
type: $(this).data('type'), | |||
montant: $(this).data('montant') | |||
}, function(data) { | |||
$('#point-vente-'+id_pv+' .bloc-commande .td-paiement').html(data.html_statut_paiement) ; | |||
$('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+']').attr('data-commande',data.json_commande) ; | |||
chat_index_commandes_affiche_commande(id_pv, id_commande) ; | |||
chat_index_commandes_boutons_paiement(id_pv, id_commande) ; | |||
}, 'json') ; | |||
$(this).attr('disabled','disabled') ; | |||
$.get(UrlManager.getBaseUrl()+'commande/paiement',{ | |||
id_commande: id_commande, | |||
type: $(this).data('type'), | |||
montant: $(this).data('montant') | |||
}, function(data) { | |||
$('#point-vente-'+id_pv+' .bloc-commande .td-paiement').html(data.html_statut_paiement) ; | |||
$('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+']').attr('data-commande',data.json_commande) ; | |||
chat_index_commandes_affiche_commande(id_pv, id_commande) ; | |||
chat_index_commandes_boutons_paiement(id_pv, id_commande) ; | |||
}, 'json') ; | |||
}) ; | |||
} | |||
@@ -38,12 +38,14 @@ termes. | |||
namespace common\components ; | |||
class MyView extends \yii\web\View { | |||
class MyView extends \yii\web\View | |||
{ | |||
var $title ; | |||
var $page_title ; | |||
public function setTitle($title, $page_title = '') { | |||
public function setTitle($title, $page_title = '') | |||
{ | |||
$this->title = $title ; | |||
if(strlen($page_title)) | |||
$this->page_title = $page_title ; | |||
@@ -51,19 +53,23 @@ class MyView extends \yii\web\View { | |||
$this->page_title = $title ; | |||
} | |||
public function getTitle() { | |||
public function getTitle() | |||
{ | |||
return $this->title ; | |||
} | |||
public function setPageTitle($page_title) { | |||
public function setPageTitle($page_title) | |||
{ | |||
$this->page_title = $page_title ; | |||
} | |||
public function getPageTitle() { | |||
public function getPageTitle() | |||
{ | |||
return $this->page_title ; | |||
} | |||
public function getControllerAction() { | |||
public function getControllerAction() | |||
{ | |||
return Yii::$app->controller->id.'/'.Yii::$app->controller->action->id ; | |||
} | |||
@@ -40,9 +40,11 @@ namespace common\controllers; | |||
use yii; | |||
class CommonController extends \yii\web\Controller { | |||
class CommonController extends \yii\web\Controller | |||
{ | |||
public function beforeAction($event) { | |||
public function beforeAction($event) | |||
{ | |||
if (!Yii::$app->user->isGuest) { | |||
Yii::$app->user->identity->updateDerniereConnexion(); | |||
} |
@@ -39,45 +39,48 @@ termes. | |||
namespace common\helpers; | |||
class CSV { | |||
class CSV | |||
{ | |||
public static function array2csv(array &$array) { | |||
if (count($array) == 0) { | |||
return null; | |||
} | |||
ob_start(); | |||
$df = fopen("php://output", 'w'); | |||
// clés | |||
//fputcsv($df, array_keys(reset($array))); | |||
foreach ($array as $row) { | |||
fputcsv($df, $row); | |||
} | |||
fclose($df); | |||
return ob_get_clean(); | |||
} | |||
public static function downloadSendHeaders($filename) { | |||
// disable caching | |||
$now = gmdate("D, d M Y H:i:s"); | |||
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); | |||
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); | |||
header("Last-Modified: {$now} GMT"); | |||
// force download | |||
header("Content-Type: application/force-download"); | |||
header("Content-Type: application/octet-stream"); | |||
header("Content-Type: application/download"); | |||
// disposition / encoding on response body | |||
header("Content-Disposition: attachment;filename={$filename}"); | |||
header("Content-Transfer-Encoding: binary"); | |||
} | |||
/* | |||
* usage | |||
* download_send_headers("data_export_" . date("Y-m-d") . ".csv"); | |||
echo array2csv($array); | |||
die(); | |||
*/ | |||
public static function array2csv(array &$array) | |||
{ | |||
if (count($array) == 0) { | |||
return null; | |||
} | |||
ob_start(); | |||
$df = fopen("php://output", 'w'); | |||
// clés | |||
//fputcsv($df, array_keys(reset($array))); | |||
foreach ($array as $row) { | |||
fputcsv($df, $row); | |||
} | |||
fclose($df); | |||
return ob_get_clean(); | |||
} | |||
public static function downloadSendHeaders($filename) | |||
{ | |||
// disable caching | |||
$now = gmdate("D, d M Y H:i:s"); | |||
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); | |||
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); | |||
header("Last-Modified: {$now} GMT"); | |||
// force download | |||
header("Content-Type: application/force-download"); | |||
header("Content-Type: application/octet-stream"); | |||
header("Content-Type: application/download"); | |||
// disposition / encoding on response body | |||
header("Content-Disposition: attachment;filename={$filename}"); | |||
header("Content-Transfer-Encoding: binary"); | |||
} | |||
/* | |||
* usage | |||
* download_send_headers("data_export_" . date("Y-m-d") . ".csv"); | |||
echo array2csv($array); | |||
die(); | |||
*/ | |||
} |
@@ -40,8 +40,10 @@ namespace common\helpers; | |||
use Yii; | |||
class Mail { | |||
public static function send($email, $subject, $view, $data) { | |||
class Mail | |||
{ | |||
public static function send($email, $subject, $view, $data) | |||
{ | |||
$mail = Yii::$app->mailer->compose( | |||
[ 'html' => $view.'-html', | |||
'text' => $view.'-text' |
@@ -40,7 +40,8 @@ namespace common\helpers; | |||
class Price { | |||
public static function format($number) { | |||
public static function format($number) | |||
{ | |||
return number_format($number, 2).' €' ; | |||
} | |||
@@ -41,9 +41,11 @@ namespace common\helpers; | |||
use yii\web\UploadedFile; | |||
use Yii ; | |||
class Upload { | |||
class Upload | |||
{ | |||
public static function uploadFile($model, $champs, $filename_old = '') { | |||
public static function uploadFile($model, $champs, $filename_old = '') | |||
{ | |||
$file = UploadedFile::getInstance($model, $champs); | |||
if ($file) { | |||
$file_name = $file->baseName . '-' . uniqid() ; |
@@ -141,7 +141,8 @@ class Url | |||
} | |||
} | |||
public static function slugify($string) { | |||
public static function slugify($string) | |||
{ | |||
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string))); | |||
} | |||
} |
@@ -41,7 +41,8 @@ namespace frontend\controllers; | |||
use yii; | |||
use common\controllers\CommonController; | |||
class FrontendController extends CommonController { | |||
class FrontendController extends CommonController | |||
{ | |||
} | |||
@@ -63,12 +63,14 @@ use dosamigos\leaflet\widgets\Map; | |||
/** | |||
* Site controller | |||
*/ | |||
class SiteController extends FrontendController { | |||
class SiteController extends FrontendController | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
@@ -98,7 +100,8 @@ class SiteController extends FrontendController { | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function actions() { | |||
public function actions() | |||
{ | |||
return [ | |||
'captcha' => [ | |||
'class' => 'yii\captcha\CaptchaAction', | |||
@@ -107,6 +110,11 @@ class SiteController extends FrontendController { | |||
]; | |||
} | |||
/** | |||
* Affiche la page d'erreur. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionError() | |||
{ | |||
$exception = Yii::$app->errorHandler->exception; | |||
@@ -120,13 +128,23 @@ class SiteController extends FrontendController { | |||
} | |||
} | |||
public function actionIndex() { | |||
/** | |||
* Affiche la page d'accueil. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex() | |||
{ | |||
return $this->render('index'); | |||
} | |||
public function actionProducers() { | |||
/** | |||
* Liste les producteurs utilisant la plateforme. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionProducers() | |||
{ | |||
$data_provider_producers = new ActiveDataProvider([ | |||
'query' => Etablissement::find() | |||
->where([ | |||
@@ -143,11 +161,23 @@ class SiteController extends FrontendController { | |||
]); | |||
} | |||
public function actionMentions() { | |||
/** | |||
* Affiche les mentions légales. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionMentions() | |||
{ | |||
return $this->render('mentions'); | |||
} | |||
public function actionLogin() { | |||
/** | |||
* Affiche la page de connexion et traite le formulaire de connexion. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionLogin() | |||
{ | |||
if (!\Yii::$app->user->isGuest) { | |||
return Yii::$app->getResponse()->redirect(['commande/index']); | |||
} | |||
@@ -168,12 +198,24 @@ class SiteController extends FrontendController { | |||
} | |||
} | |||
public function actionLogout() { | |||
/** | |||
* Déconnecte l'utilisateur. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionLogout() | |||
{ | |||
Yii::$app->user->logout(); | |||
return $this->goHome(); | |||
} | |||
public function actionContact() { | |||
/** | |||
* Affiche la page de contact et traite le formulaire s'il est soumis. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionContact() | |||
{ | |||
$model = new ContactForm(); | |||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | |||
if ($model->sendEmail(Yii::$app->params['adminEmail'])) { | |||
@@ -190,12 +232,17 @@ class SiteController extends FrontendController { | |||
} | |||
} | |||
public function actionSignup() { | |||
/** | |||
* Affiche la page d'inscription et traite son formulaire. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionSignup() | |||
{ | |||
$model = new SignupForm(); | |||
if ($model->load(Yii::$app->request->post())) { | |||
if ($user = $model->signup()) { | |||
if (Yii::$app->getUser()->login($user)) { | |||
$this->redirect(['commande/index']); | |||
} | |||
} | |||
@@ -213,7 +260,14 @@ class SiteController extends FrontendController { | |||
]); | |||
} | |||
public function actionRequestPasswordReset() { | |||
/** | |||
* Affiche la page de demande de nouveau mot de passe. | |||
* Traitement du formulaire. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionRequestPasswordReset() | |||
{ | |||
$model = new PasswordResetRequestForm(); | |||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | |||
if ($model->sendEmail()) { | |||
@@ -226,10 +280,17 @@ class SiteController extends FrontendController { | |||
} | |||
return $this->render('requestPasswordResetToken', [ | |||
'model' => $model, | |||
'model' => $model, | |||
]); | |||
} | |||
/** | |||
* Met à jour le mot de passe de l'utilisateur. | |||
* | |||
* @param string $token | |||
* @return mixed | |||
* @throws BadRequestHttpException | |||
*/ | |||
public function actionResetPassword($token) { | |||
try { | |||
$model = new ResetPasswordForm($token); | |||
@@ -244,19 +305,39 @@ class SiteController extends FrontendController { | |||
} | |||
return $this->render('resetPassword', [ | |||
'model' => $model, | |||
'model' => $model, | |||
]); | |||
} | |||
public function actionCgv() { | |||
/** | |||
* Affiche les conditions générale de service. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionCgv() | |||
{ | |||
return $this->render('cgv'); | |||
} | |||
public function actionCreditpain() { | |||
/** | |||
* Affiche les précisions concernant l'utilisation du crédit pain. | |||
* @return type | |||
*/ | |||
public function actionCreditpain() | |||
{ | |||
return $this->render('creditpain'); | |||
} | |||
public function actionProducerCode($id) { | |||
/** | |||
* Affiche le formulaire de demande de code pour accéder à certains | |||
* producteurs. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
* @throws \yii\web\HttpException | |||
*/ | |||
public function actionProducerCode($id) | |||
{ | |||
$producer = Etablissement::findOne($id); | |||
if(!$producer) | |||
@@ -276,7 +357,15 @@ class SiteController extends FrontendController { | |||
]) ; | |||
} | |||
public function actionProducer($id) { | |||
/** | |||
* Affiche la page de connexion / inscription pour accéder notamment au | |||
* formulaire de commande des producteirs. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionProducer($id) | |||
{ | |||
$model_login = new LoginForm(); | |||
$model_signup = new SignupForm(); | |||
@@ -50,9 +50,11 @@ use frontend\controllers\FrontendController; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class UserController extends FrontendController { | |||
class UserController extends FrontendController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
@@ -80,7 +82,8 @@ class UserController extends FrontendController { | |||
* @param integer $id | |||
* @return mixed | |||
*/ | |||
public function actionUpdate() { | |||
public function actionUpdate() | |||
{ | |||
$model = $this->findModel(Yii::$app->user->identity->id); | |||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | |||
@@ -118,12 +121,6 @@ class UserController extends FrontendController { | |||
} | |||
} | |||
public function actionCredit() { | |||
return $this->render('credit', [ | |||
]); | |||
} | |||
/** | |||
* Finds the User model based on its primary key value. | |||
* If the model is not found, a 404 HTTP exception will be thrown. | |||
@@ -131,7 +128,8 @@ class UserController extends FrontendController { | |||
* @return User the loaded model | |||
* @throws NotFoundHttpException if the model cannot be found | |||
*/ | |||
protected function findModel($id) { | |||
protected function findModel($id) | |||
{ | |||
if (($model = User::findOne($id)) !== null) { | |||
return $model; | |||
} else { |
@@ -1,65 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
$this->title = 'Crédit' ; | |||
?> | |||
<h1>Crédit</h1> | |||
<p>Vous avez plusieurs manières de créditer votre compte.</p> | |||
<h2>À la boutique</h2> | |||
<p>Bla bla bla</p> | |||
<h2>Par carte bancaire via Paypal</h2> | |||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> | |||
<input type="hidden" name="cmd" value="_s-xclick"> | |||
<input type="hidden" name="hosted_button_id" value="KME2NU24R334A"> | |||
<table> | |||
<tr><td><input type="hidden" name="on0" value="Montant du crédit pain">Montant du crédit pain</td></tr><tr><td><select name="os0"> | |||
<option value="10 crédits pains">10 crédits pains €10,00 EUR</option> | |||
<option value="20 crédits pains">20 crédits pains €20,00 EUR</option> | |||
<option value="50 crédits pains">50 crédits pains €50,00 EUR</option> | |||
</select> </td></tr> | |||
</table> | |||
<input type="hidden" name="currency_code" value="EUR"> | |||
<input type="image" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal, le réflexe sécurité pour payer en ligne"> | |||
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1"> | |||
</form> |
@@ -38,9 +38,11 @@ termes. | |||
namespace producer\controllers; | |||
class CommandeController extends ProducerBaseController { | |||
class CommandeController extends ProducerBaseController | |||
{ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
@@ -54,8 +56,15 @@ class CommandeController extends ProducerBaseController { | |||
]; | |||
} | |||
public function actionInfosProduction($id_production) { | |||
/** | |||
* Retourne au format JSON toutes les informations relatives à une | |||
* production donnée. | |||
* | |||
* @param integer $id_production | |||
* @return mixed | |||
*/ | |||
public function actionInfosProduction($id_production) | |||
{ | |||
$production = Production::findOne($id_production); | |||
if ($production) { | |||
@@ -90,6 +99,12 @@ class CommandeController extends ProducerBaseController { | |||
return json_encode([]); | |||
} | |||
/** | |||
* Initialise le formulaire de création/modification de commande. | |||
* | |||
* @param Commande $commande | |||
* @return array | |||
*/ | |||
public function initForm($commande = null) { | |||
// etablissements | |||
@@ -207,8 +222,8 @@ class CommandeController extends ProducerBaseController { | |||
* | |||
* @return ProducerView | |||
*/ | |||
public function actionHistorique() { | |||
public function actionHistorique() | |||
{ | |||
$data_provider_commandes = new ActiveDataProvider([ | |||
'query' => Commande::find() | |||
@@ -232,7 +247,13 @@ class CommandeController extends ProducerBaseController { | |||
]); | |||
} | |||
public function actionRemoveEtablissement($id = 0) { | |||
/** | |||
* Supprime un producteur. | |||
* | |||
* @param integer $id | |||
*/ | |||
public function actionRemoveEtablissement($id = 0) | |||
{ | |||
$user_etablissement = UserEtablissement::find() | |||
->where(['id_etablissement' => $id, 'id_user' => Yii::$app->user->identity->id]) | |||
->one(); | |||
@@ -243,7 +264,13 @@ class CommandeController extends ProducerBaseController { | |||
$this->redirect(['commande/index']); | |||
} | |||
public function actionCreate() { | |||
/** | |||
* Crée une commande. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionCreate() | |||
{ | |||
$id_etablissement = $this->getProducer()->id ; | |||
$commande = new Commande; | |||
@@ -272,7 +299,15 @@ class CommandeController extends ProducerBaseController { | |||
])); | |||
} | |||
public function actionUpdate($id) { | |||
/** | |||
* Modifie une commande. | |||
* | |||
* @param integer $id | |||
* @return mixed | |||
* @throws UserException | |||
*/ | |||
public function actionUpdate($id) | |||
{ | |||
$commande = Commande::find() | |||
->with('production') | |||
@@ -292,19 +327,32 @@ class CommandeController extends ProducerBaseController { | |||
return $this->render('update', array_merge($this->initForm($commande), [ | |||
'model' => $commande, | |||
'commande_introuvable' => !$commande, | |||
'model' => $commande, | |||
'commande_introuvable' => !$commande, | |||
])); | |||
} | |||
public function _verifEtablissementActif($id_etablissement) { | |||
/** | |||
* Vérifie si un producteur est actif. | |||
* | |||
* @param integer $id_etablissement | |||
* @throws NotFoundHttpException | |||
*/ | |||
public function _verifEtablissementActif($id_etablissement) | |||
{ | |||
$etablissement = Etablissement::findOne($id_etablissement); | |||
if ($etablissement && !$etablissement->actif) { | |||
throw new NotFoundHttpException('Cet établissement est actuellement hors ligne.'); | |||
} | |||
} | |||
public function gestionForm($commande) { | |||
/** | |||
* Traite le formulaire de création/modification de commande. | |||
* | |||
* @param Commande $commande | |||
*/ | |||
public function gestionForm($commande) | |||
{ | |||
$posts = Yii::$app->request->post(); | |||
$produits = array(); | |||
@@ -469,8 +517,15 @@ class CommandeController extends ProducerBaseController { | |||
} | |||
} | |||
public function actionAnnuler($id) { | |||
/** | |||
* Annule une commande. | |||
* | |||
* @param integer $id | |||
* @throws \yii\web\NotFoundHttpException | |||
* @throws UserException | |||
*/ | |||
public function actionAnnuler($id) | |||
{ | |||
$commande = Commande::find() | |||
->with('production', 'creditHistorique', 'commandeProduits') | |||
->where(['id' => $id]) | |||
@@ -505,7 +560,15 @@ class CommandeController extends ProducerBaseController { | |||
$this->redirect(Yii::$app->urlManager->createUrl(['commande/historique'])); | |||
} | |||
public function actionVerifCodePointVente($id_point_vente, $code) { | |||
/** | |||
* Vérifie le code saisi pour un point de vente. | |||
* | |||
* @param integer $id_point_vente | |||
* @param string $code | |||
* @return boolean | |||
*/ | |||
public function actionVerifCodePointVente($id_point_vente, $code) | |||
{ | |||
$point_vente = PointVente::findOne($id_point_vente); | |||
if ($point_vente) { | |||
if ($point_vente->verifCode($code)) { |
@@ -38,22 +38,26 @@ termes. | |||
namespace producer\controllers; | |||
class ProducerBaseController extends CommonController { | |||
class ProducerBaseController extends CommonController | |||
{ | |||
var $producer ; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return []; | |||
} | |||
public function actions() { | |||
public function actions() | |||
{ | |||
return []; | |||
} | |||
public function beforeAction($event) { | |||
public function beforeAction($event) | |||
{ | |||
$producer = $this->getProducer() ; | |||
@@ -85,7 +89,14 @@ class ProducerBaseController extends CommonController { | |||
return parent::beforeAction($event); | |||
} | |||
public function getProducer() { | |||
/** | |||
* Retourne le producteur courant. | |||
* | |||
* @return Etablissement | |||
* @throws \yii\web\HttpException | |||
*/ | |||
public function getProducer() | |||
{ | |||
if($this->producer) { | |||
return $this->producer ; | |||
} |
@@ -38,16 +38,19 @@ termes. | |||
namespace producer\controllers; | |||
class SiteController extends ProducerBaseController { | |||
class SiteController extends ProducerBaseController | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function behaviors() { | |||
public function behaviors() | |||
{ | |||
return []; | |||
} | |||
public function actions() { | |||
public function actions() | |||
{ | |||
return [ | |||
'captcha' => [ | |||
'class' => 'yii\captcha\CaptchaAction', | |||
@@ -56,6 +59,11 @@ class SiteController extends ProducerBaseController { | |||
]; | |||
} | |||
/** | |||
* Affiche et gère les erreurs. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionError() | |||
{ | |||
$exception = Yii::$app->errorHandler->exception; | |||
@@ -72,15 +80,13 @@ class SiteController extends ProducerBaseController { | |||
} | |||
/** | |||
* | |||
* Affiche la page d'accueil des producteurs comprenant une image, une | |||
* description, la liste des points de vente et les produits | |||
* | |||
* @return ProducerView | |||
*/ | |||
public function actionIndex() { | |||
public function actionIndex() | |||
{ | |||
// points de vente | |||
$data_provider_points_vente = new ActiveDataProvider([ | |||
'query' => PointVente::find() | |||
@@ -115,13 +121,12 @@ class SiteController extends ProducerBaseController { | |||
} | |||
/** | |||
* | |||
* Affiche et traite le formulaire de contact dédié aux producteurs | |||
* | |||
* @return ProducerView | |||
*/ | |||
public function actionContact() { | |||
public function actionContact() | |||
{ | |||
$model = new ContactForm(); | |||
$producer = $this->getProducer() ; | |||
@@ -148,8 +153,8 @@ class SiteController extends ProducerBaseController { | |||
* | |||
* @param $action 'add' ou 'delete' | |||
*/ | |||
public function actionFavorite($action) { | |||
public function actionFavorite($action) | |||
{ | |||
$producer = $this->getProducer() ; | |||
$user_etablissement = UserEtablissement::find() |