namespace backend\controllers; | namespace backend\controllers; | ||||
class BackendController extends \common\controllers\CommonController { | |||||
class BackendController extends \common\controllers\CommonController | |||||
{ | |||||
} | } | ||||
namespace backend\controllers; | namespace backend\controllers; | ||||
class CommandeController extends BackendController { | |||||
class CommandeController extends BackendController | |||||
{ | |||||
var $enableCsrfValidation = false; | var $enableCsrfValidation = false; | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'access' => [ | 'access' => [ | ||||
'class' => AccessControl::className(), | 'class' => AccessControl::className(), | ||||
]; | ]; | ||||
} | } | ||||
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) | if (!Yii::$app->user->isGuest) | ||||
$id_etablissement = Yii::$app->user->identity->id_etablissement; | $id_etablissement = Yii::$app->user->identity->id_etablissement; | ||||
// return the pdf output as per the destination setting | // return the pdf output as per the destination setting | ||||
return $pdf->render(); | 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() | $commande = Commande::find() | ||||
->with(['production', 'commandeProduits']) | ->with(['production', 'commandeProduits']) | ||||
$this->redirect(['index', 'date' => $date]); | $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 != '') { | if ($date != '') { | ||||
// commandes | // commandes | ||||
} | } | ||||
} | } | ||||
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()) { | if (!Produit::count() && !PointVente::count()) { | ||||
$this->redirect(['site/index', 'erreur_produits_points_vente' => 1]); | $this->redirect(['site/index', 'erreur_produits_points_vente' => 1]); | ||||
} | } | ||||
} | } | ||||
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 | ||||
$commandes = Commande::find() | $commandes = Commande::find() | ||||
->with('commandeProduits', 'user') | ->with('commandeProduits', 'user') | ||||
} | } | ||||
} | } | ||||
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 = []; | $data = []; | ||||
$filename = 'recapitulatif_' . $date; | $filename = 'recapitulatif_' . $date; | ||||
]; | ]; | ||||
} | } | ||||
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 = []; | $data = []; | ||||
]; | ]; | ||||
} | } | ||||
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); | CommandeAuto::addAll($date, true); | ||||
$this->redirect(['index', 'date' => $date]); | $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 | // changement état | ||||
$production = Production::initProduction($date) ; | $production = Production::initProduction($date) ; | ||||
$production->actif = $actif; | $production->actif = $actif; | ||||
CommandeAuto::addAll($date); | CommandeAuto::addAll($date); | ||||
} | } | ||||
if($redirect) | |||||
if($redirect) { | |||||
$this->redirect(['index', 'date' => $date]); | $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))); | $week = sprintf('%02d',date('W',strtotime($date))); | ||||
$start = strtotime(date('Y',strtotime($date)).'W'.$week); | $start = strtotime(date('Y',strtotime($date)).'W'.$week); | ||||
$date_lundi = date('Y-m-d',strtotime('Monday',$start)) ; | $date_lundi = date('Y-m-d',strtotime('Monday',$start)) ; | ||||
$this->redirect(['index', 'date' => $date]); | $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(); | $commande = Commande::find()->with('production', 'creditHistorique', 'user')->where(['id' => $id_commande])->one(); | ||||
if ($commande && | if ($commande && | ||||
} | } | ||||
} | } | ||||
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() | $commande = Commande::find() | ||||
->with(['production', 'commandeProduits']) | ->with(['production', 'commandeProduits']) | ||||
->where(['id' => $id_commande]) | ->where(['id' => $id_commande]) | ||||
die(); | 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); | $produits = json_decode($produits); | ||||
$point_vente = PointVente::findOne($id_pv); | $point_vente = PointVente::findOne($id_pv); | ||||
$production = Production::findOne([ | $production = Production::findOne([ | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Retourne un récapitulatif du total des commandes (potentiel, commandé et | |||||
* par produits) au format HTML; | |||||
* | |||||
* @param string $date | |||||
*/ | |||||
public function actionAjaxTotalCommandes($date) { | public function actionAjaxTotalCommandes($date) { | ||||
$production = Production::find() | $production = Production::find() | ||||
->andWhere(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ->andWhere(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ||||
->one(); | ->one(); | ||||
if ($production) { | if ($production) { | ||||
// produits | // produits | ||||
$produits = Produit::find() | $produits = Produit::find() | ||||
->orderBy('order ASC') | ->orderBy('order ASC') | ||||
->all(); | ->all(); | ||||
// commandes | // commandes | ||||
$commandes = Commande::find() | $commandes = Commande::find() | ||||
->with('commandeProduits','commandeProduits.produit', 'user') | ->with('commandeProduits','commandeProduits.produit', 'user') | ||||
// produits selec pour production | // produits selec pour production | ||||
$produits_selec = ProductionProduit::findProduits($production->id); | $produits_selec = ProductionProduit::findProduits($production->id); | ||||
$ca_potentiel = 0; | $ca_potentiel = 0; | ||||
$poids_total = 0; | $poids_total = 0; | ||||
foreach ($produits_selec as $id_produit_selec => $produit_selec) { | foreach ($produits_selec as $id_produit_selec => $produit_selec) { | ||||
'poids_pain' => $poids_pain, | 'poids_pain' => $poids_pain, | ||||
]); | ]); | ||||
echo json_encode([ | echo json_encode([ | ||||
'html_totaux' => $html_totaux, | 'html_totaux' => $html_totaux, | ||||
]); | ]); | ||||
die(); | 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() | $production_point_vente = ProductionPointVente::find() | ||||
->where([ | ->where([ | ||||
die(); | 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() | $commande = Commande::find() | ||||
->with('commandeProduits', 'production') | ->with('commandeProduits', 'production') | ||||
->where(['id' => $id_commande]) | ->where(['id' => $id_commande]) | ||||
die(); | 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() | $commande = Commande::find() | ||||
->with('commandeProduits', 'production') | ->with('commandeProduits', 'production') | ||||
->where(['id' => $id_commande]) | ->where(['id' => $id_commande]) |
namespace backend\controllers; | namespace backend\controllers; | ||||
class CommandeautoController extends BackendController { | |||||
class CommandeautoController extends BackendController | |||||
{ | |||||
var $enableCsrfValidation = false; | var $enableCsrfValidation = false; | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'access' => [ | 'access' => [ | ||||
'class' => AccessControl::className(), | 'class' => AccessControl::className(), | ||||
]; | ]; | ||||
} | } | ||||
public function actionIndex() { | |||||
/** | |||||
* Liste les commandes récurrente du producteur. | |||||
* | |||||
* @return string | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
$dataProvider = new ActiveDataProvider([ | $dataProvider = new ActiveDataProvider([ | ||||
'query' => CommandeAuto::find() | 'query' => CommandeAuto::find() | ||||
->with(['user', 'etablissement', 'pointVente', 'commandeAutoProduit']) | ->with(['user', 'etablissement', 'pointVente', 'commandeAutoProduit']) | ||||
]); | ]); | ||||
return $this->render('index', [ | return $this->render('index', [ | ||||
'dataProvider' => $dataProvider | |||||
]); | |||||
'dataProvider' => $dataProvider | |||||
]); | |||||
} | } | ||||
public function actionCreate() { | |||||
/** | |||||
* Crée une commande récurrente. | |||||
* | |||||
* @return string | |||||
*/ | |||||
public function actionCreate() | |||||
{ | |||||
// form | // form | ||||
$model = new CommandeAutoForm; | $model = new CommandeAutoForm; | ||||
$model->id_etablissement = Yii::$app->user->identity->id_etablissement; | $model->id_etablissement = Yii::$app->user->identity->id_etablissement; | ||||
->orderBy('order ASC') | ->orderBy('order ASC') | ||||
->all(); | ->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']); | $this->redirect(['commandeauto/index']); | ||||
} | } | ||||
]); | ]); | ||||
} | } | ||||
public function actionUpdate($id) { | |||||
/** | |||||
* Modifie une commande récurrente. | |||||
* | |||||
* @param integer $id | |||||
* @return string | |||||
* @throws NotFoundHttpException | |||||
*/ | |||||
public function actionUpdate($id) | |||||
{ | |||||
// form | // form | ||||
$model = new CommandeAutoForm; | $model = new CommandeAutoForm; | ||||
$commandeauto = CommandeAuto::findOne($id); | $commandeauto = CommandeAuto::findOne($id); | ||||
// produits | // produits | ||||
$produits = Produit::find() | $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 ($model->load(Yii::$app->request->post()) && $model->validate()) { | ||||
if (!strlen($model->date_fin)) { | if (!strlen($model->date_fin)) { | ||||
$model->date_fin = null; | $model->date_fin = null; | ||||
} | } | ||||
if ($model->save()) { | if ($model->save()) { | ||||
$this->redirect(['commandeauto/index']); | $this->redirect(['commandeauto/index']); | ||||
} | } | ||||
} | } | ||||
return $this->render('update', [ | 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]); | CommandeAutoProduit::deleteAll(['id_commande_auto' => $id]); | ||||
CommandeAuto::findOne($id)->delete(); | CommandeAuto::findOne($id)->delete(); | ||||
$this->redirect(['commandeauto/index']); | $this->redirect(['commandeauto/index']); |
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class CommuniquerController extends BackendController { | |||||
class CommuniquerController extends BackendController | |||||
{ | |||||
public function behaviors() { | public function behaviors() { | ||||
return [ | return [ | ||||
]; | ]; | ||||
} | } | ||||
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]); | $etablissement = Etablissement::findOne(['id' => Yii::$app->user->identity->id_etablissement]); | ||||
return $this->render('index', [ | 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]); | $etablissement = Etablissement::findOne(['id' => Yii::$app->user->identity->id_etablissement]); | ||||
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class CronController extends BackendController { | |||||
class CronController extends BackendController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
]; | ]; | ||||
} | } | ||||
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') { | if ($key == '45432df6e842ac71aa0b5bb6b9f25d44' && YII_ENV == 'demo') { | ||||
$arr_noms = [ | $arr_noms = [ | ||||
} | } | ||||
} | } | ||||
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 ($key == '64ac0bdab7e9f5e48c4d991ec5201d57') { | ||||
if(strlen($force_date)) { | if(strlen($force_date)) { |
/** | /** | ||||
* DeveloppementController implements the CRUD actions for Developpement model. | * DeveloppementController implements the CRUD actions for Developpement model. | ||||
*/ | */ | ||||
class DeveloppementController extends Controller { | |||||
class DeveloppementController extends Controller | |||||
{ | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
} | } | ||||
/** | /** | ||||
* Lists all Developpement models. | |||||
* Liste les développements. | |||||
* | |||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionIndex($statut = Developpement::STATUT_OPEN) { | |||||
public function actionIndex($statut = Developpement::STATUT_OPEN) | |||||
{ | |||||
$dataProvider = new ActiveDataProvider([ | $dataProvider = new ActiveDataProvider([ | ||||
'query' => Developpement::find()->with(['developpementPriorite', 'developpementPrioriteCurrentEtablissement'])->where(['statut' => $statut])->orderBy('date DESC'), | 'query' => Developpement::find()->with(['developpementPriorite', 'developpementPrioriteCurrentEtablissement'])->where(['statut' => $statut])->orderBy('date DESC'), | ||||
]); | ]); | ||||
* If creation is successful, the browser will be redirected to the 'view' page. | * If creation is successful, the browser will be redirected to the 'view' page. | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionCreate() { | |||||
public function actionCreate() | |||||
{ | |||||
$model = new Developpement(); | $model = new Developpement(); | ||||
if ($model->load(Yii::$app->request->post())) { | if ($model->load(Yii::$app->request->post())) { | ||||
* @param integer $id | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionUpdate($id) { | |||||
public function actionUpdate($id) | |||||
{ | |||||
$model = $this->findModel($id); | $model = $this->findModel($id); | ||||
if ($model->load(Yii::$app->request->post())) { | if ($model->load(Yii::$app->request->post())) { | ||||
* @param integer $id | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionDelete($id) { | |||||
public function actionDelete($id) | |||||
{ | |||||
$this->findModel($id)->delete(); | $this->findModel($id)->delete(); | ||||
Yii::$app->getSession()->setFlash('success', 'Développement supprimé'); | Yii::$app->getSession()->setFlash('success', 'Développement supprimé'); | ||||
return $this->redirect(['index']); | 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() | $developpement_priorite = DeveloppementPriorite::find() | ||||
->where(['id_developpement' => $id_developpement, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ->where(['id_developpement' => $id_developpement, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ||||
* @return Developpement the loaded model | * @return Developpement the loaded model | ||||
* @throws NotFoundHttpException if the model cannot be found | * @throws NotFoundHttpException if the model cannot be found | ||||
*/ | */ | ||||
protected function findModel($id) { | |||||
protected function findModel($id) | |||||
{ | |||||
if (($model = Developpement::findOne($id)) !== null) { | if (($model = Developpement::findOne($id)) !== null) { | ||||
return $model; | return $model; | ||||
} else { | } else { |
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class EtablissementAdminController extends BackendController { | |||||
class EtablissementAdminController extends BackendController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
]; | ]; | ||||
} | } | ||||
public function actionIndex() { | |||||
/** | |||||
* Liste les producteurs. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
$datas_etablissements = new ActiveDataProvider([ | $datas_etablissements = new ActiveDataProvider([ | ||||
'query' => Etablissement::find() | 'query' => Etablissement::find() | ||||
->with('userEtablissement', 'user') | ->with('userEtablissement', 'user') | ||||
]); | ]); | ||||
return $this->render('index', [ | 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); | $etablissement = Etablissement::findOne($id_etablissement); | ||||
if ($etablissement) { | if ($etablissement) { | ||||
$this->redirect(['etablissement-admin/index']); | $this->redirect(['etablissement-admin/index']); | ||||
} | } | ||||
public function actionFacturation() { | |||||
/** | |||||
* Liste les factures des producteurs. | |||||
* | |||||
* @return mxied | |||||
*/ | |||||
public function actionFacturation() | |||||
{ | |||||
$datas_factures = new ActiveDataProvider([ | $datas_factures = new ActiveDataProvider([ | ||||
'query' => Facture::find() | 'query' => Facture::find() | ||||
->with('etablissement') | ->with('etablissement') | ||||
]); | ]); | ||||
} | } | ||||
/** | |||||
* Recherche un établissement. | |||||
* | |||||
* @param integer $id | |||||
* @return Etablissement | |||||
* @throws NotFoundHttpException | |||||
*/ | |||||
protected function findModel($id) { | protected function findModel($id) { | ||||
if (($model = Etablissement::findOne($id)) !== null) { | if (($model = Etablissement::findOne($id)) !== null) { | ||||
return $model; | return $model; |
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class EtablissementController extends BackendController { | |||||
class EtablissementController extends BackendController | |||||
{ | |||||
public $enableCsrfValidation = false; | public $enableCsrfValidation = false; | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
]; | ]; | ||||
} | } | ||||
public function actionUpdate() { | |||||
/** | |||||
* Modifie un établissement. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionUpdate() | |||||
{ | |||||
$request = Yii::$app->request; | $request = Yii::$app->request; | ||||
$model = $this->findModel(Yii::$app->user->identity->id_etablissement); | $model = $this->findModel(Yii::$app->user->identity->id_etablissement); | ||||
$logo_filename_old = $model->logo; | $logo_filename_old = $model->logo; | ||||
} | } | ||||
} | } | ||||
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([ | $datas_factures = new ActiveDataProvider([ | ||||
'query' => Facture::find() | 'query' => Facture::find() | ||||
->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ||||
]); | ]); | ||||
} | } | ||||
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) { | if (($model = Etablissement::findOne($id)) !== null) { | ||||
return $model; | return $model; | ||||
} else { | } else { |
<?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; | |||||
} | |||||
} |
/** | /** | ||||
* PointVenteController implements the CRUD actions for PointVente model. | * PointVenteController implements the CRUD actions for PointVente model. | ||||
*/ | */ | ||||
class PointVenteController extends BackendController { | |||||
class PointVenteController extends BackendController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
} | } | ||||
/** | /** | ||||
* Lists all PointVente models. | |||||
* Liste les points de vente. | |||||
* | |||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionIndex() { | |||||
public function actionIndex() | |||||
{ | |||||
$dataProvider = new ActiveDataProvider([ | $dataProvider = new ActiveDataProvider([ | ||||
'query' => PointVente::find()->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | 'query' => PointVente::find()->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | ||||
]); | ]); | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @return mixed | ||||
*/ | */ | ||||
public function actionCreate() { | |||||
public function actionCreate() | |||||
{ | |||||
$model = new PointVente(); | $model = new PointVente(); | ||||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionUpdate($id) { | |||||
public function actionUpdate($id) | |||||
{ | |||||
$model = PointVente::find() | $model = PointVente::find() | ||||
->with('pointVenteUser') | ->with('pointVenteUser') | ||||
->where(['id' => $id]) | ->where(['id' => $id]) | ||||
} | } | ||||
} | } | ||||
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() | $users = User::findBy() | ||||
->orderBy('nom ASC') | ->orderBy('nom ASC') | ||||
->all(); | ->all(); | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionDelete($id) { | |||||
public function actionDelete($id) | |||||
{ | |||||
$this->findModel($id)->delete(); | $this->findModel($id)->delete(); | ||||
PointVenteUser::deleteAll(['id_point_vente' => $id]); | PointVenteUser::deleteAll(['id_point_vente' => $id]); | ||||
ProductionPointVente::deleteAll(['id_point_vente' => $id]) ; | ProductionPointVente::deleteAll(['id_point_vente' => $id]) ; | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @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) { | if (($model = PointVente::findOne($id)) !== null) { | ||||
return $model; | return $model; | ||||
} else { | } else { |
/** | /** | ||||
* ProduitController implements the CRUD actions for Produit model. | * ProduitController implements the CRUD actions for Produit model. | ||||
*/ | */ | ||||
class ProduitController extends BackendController { | |||||
class ProduitController extends BackendController | |||||
{ | |||||
var $enableCsrfValidation = false; | var $enableCsrfValidation = false; | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
} | } | ||||
/** | /** | ||||
* Lists all Produit models. | |||||
* Liste les modèles Produit. | |||||
* | |||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionIndex() { | |||||
public function actionIndex() | |||||
{ | |||||
$dataProvider = new ActiveDataProvider([ | $dataProvider = new ActiveDataProvider([ | ||||
'query' => Produit::find() | 'query' => Produit::find() | ||||
->where('(vrac IS NULL OR vrac = 0)') | ->where('(vrac IS NULL OR vrac = 0)') | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @return mixed | ||||
*/ | */ | ||||
public function actionCreate() { | |||||
public function actionCreate() | |||||
{ | |||||
$model = new Produit(); | $model = new Produit(); | ||||
$model->actif = 1; | $model->actif = 1; | ||||
$model->id_etablissement = Yii::$app->user->identity->id_etablissement; | $model->id_etablissement = Yii::$app->user->identity->id_etablissement; | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionUpdate($id) { | |||||
public function actionUpdate($id) | |||||
{ | |||||
$request = Yii::$app->request; | $request = Yii::$app->request; | ||||
$model = $this->findModel($id); | $model = $this->findModel($id); | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionDelete($id) { | |||||
public function actionDelete($id) | |||||
{ | |||||
$this->findModel($id)->delete(); | $this->findModel($id)->delete(); | ||||
$productions_produits = ProductionProduit::find()->where(['id_produit' => $id])->all(); | $productions_produits = ProductionProduit::find()->where(['id_produit' => $id])->all(); | ||||
return $this->redirect(['index']); | 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)); | $tab_ordre = json_decode(stripslashes($tab)); | ||||
foreach ($tab_ordre as $id => $o) { | foreach ($tab_ordre as $id => $o) { | ||||
} | } | ||||
/** | /** | ||||
* 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 | * @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) { | if (($model = Produit::findOne($id)) !== null) { | ||||
return $model; | return $model; | ||||
} else { | } else { |
/** | /** | ||||
* Site controller | * Site controller | ||||
*/ | */ | ||||
class SiteController extends BackendController { | |||||
class SiteController extends BackendController | |||||
{ | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'access' => [ | 'access' => [ | ||||
'class' => AccessControl::className(), | 'class' => AccessControl::className(), | ||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function actions() { | |||||
public function actions() | |||||
{ | |||||
return [ | return [ | ||||
'error' => [ | 'error' => [ | ||||
'class' => 'yii\web\ErrorAction', | 'class' => 'yii\web\ErrorAction', | ||||
]; | ]; | ||||
} | } | ||||
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 | // commandes | ||||
$productions = Production::find() | $productions = Production::find() | ||||
->with('commande') | ->with('commande') | ||||
]); | ]); | ||||
} | } | ||||
public function actionLogin() { | |||||
/** | |||||
* Affiche la page de connexion. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionLogin() | |||||
{ | |||||
if (!\Yii::$app->user->isGuest) { | if (!\Yii::$app->user->isGuest) { | ||||
return $this->goHome(); | return $this->goHome(); | ||||
} | } | ||||
return $this->goBack(); | return $this->goBack(); | ||||
} else { | } else { | ||||
return $this->render('login', [ | 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(); | Yii::$app->user->logout(); | ||||
return $this->goHome(); | 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->id_etablissement = $id; | ||||
Yii::$app->user->identity->save(); | Yii::$app->user->identity->save(); | ||||
$this->redirect(['site/index']); | $this->redirect(['site/index']); |
use DateInterval; | use DateInterval; | ||||
use DatePeriod; | use DatePeriod; | ||||
class StatsController extends BackendController { | |||||
class StatsController extends BackendController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'access' => [ | 'access' => [ | ||||
'class' => AccessControl::className(), | 'class' => AccessControl::className(), | ||||
]; | ]; | ||||
} | } | ||||
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) | * Volume de commande de l'année passée (par mois) | ||||
*/ | */ | ||||
const TOTAUX = 13 ; | 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') ; | if(!$year) $year = date('Y') ; | ||||
$produits = Produit::find() | $produits = Produit::find() |
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class UserController extends BackendController { | |||||
class UserController extends BackendController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
} | } | ||||
/** | /** | ||||
* Lists all User models. | |||||
* Liste les utilisateurs. | |||||
* | |||||
* @return mixed | * @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; | $params = Yii::$app->request->queryParams; | ||||
if($id_point_vente) | if($id_point_vente) | ||||
$params['id_point_vente'] = $id_point_vente ; | $params['id_point_vente'] = $id_point_vente ; | ||||
* If creation is successful, the browser will be redirected to the 'view' page. | * If creation is successful, the browser will be redirected to the 'view' page. | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionCreate() { | |||||
public function actionCreate() | |||||
{ | |||||
$model = new User(); | $model = new User(); | ||||
if ($model->load(Yii::$app->request->post()) && $model->validate() && YII_ENV != 'demo') { | if ($model->load(Yii::$app->request->post()) && $model->validate() && YII_ENV != 'demo') { | ||||
* @param integer $id | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionUpdate($id) { | |||||
public function actionUpdate($id) | |||||
{ | |||||
$model = $this->findModel($id); | $model = $this->findModel($id); | ||||
$previous_mail = $model->email ; | $previous_mail = $model->email ; | ||||
* | * | ||||
* @param integer $id ID de l'utilisateur | * @param integer $id ID de l'utilisateur | ||||
*/ | */ | ||||
public function actionDelete($id) { | |||||
public function actionDelete($id) | |||||
{ | |||||
$user_etablissement = UserEtablissement::findOne([ | $user_etablissement = UserEtablissement::findOne([ | ||||
'id_user' => $id, | 'id_user' => $id, | ||||
'id_etablissement' => Yii::$app->user->identity->id_etablissement | 'id_etablissement' => Yii::$app->user->identity->id_etablissement | ||||
$this->redirect(array_merge(['index'],$params)); | $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([ | $users = User::findBy([ | ||||
'id_etablissement' => Yii::$app->user->identity->id_etablissement, | 'id_etablissement' => Yii::$app->user->identity->id_etablissement, | ||||
'id_point_vente' => $id_point_vente | 'id_point_vente' => $id_point_vente | ||||
if($id_point_vente) { | if($id_point_vente) { | ||||
$point_vente = PointVente::findOne(['id' => $id_point_vente, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) ; | $point_vente = PointVente::findOne(['id' => $id_point_vente, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) ; | ||||
} | } | ||||
return $this->render('liste_mails', [ | return $this->render('liste_mails', [ | ||||
'users' => $arr_users, | 'users' => $arr_users, | ||||
]); | ]); | ||||
} | } | ||||
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 = User::find()->with('userEtablissement')->where(['id' => $id])->one(); | ||||
$user_etablissement = UserEtablissement::findOne(['id_user' => $id, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]); | $user_etablissement = UserEtablissement::findOne(['id_user' => $id, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]); | ||||
} | } | ||||
} | } | ||||
public function actionCommandes($id) { | |||||
/** | |||||
* Affiche les commandes d'un utilisateur. | |||||
* | |||||
* @param integer $id | |||||
* @return mixed | |||||
*/ | |||||
public function actionCommandes($id) | |||||
{ | |||||
$user = User::findOne($id); | $user = User::findOne($id); | ||||
* @return User the loaded model | * @return User the loaded model | ||||
* @throws NotFoundHttpException if the model cannot be found | * @throws NotFoundHttpException if the model cannot be found | ||||
*/ | */ | ||||
protected function findModel($id) { | |||||
protected function findModel($id) | |||||
{ | |||||
if (($model = User::findOne($id)) !== null) { | if (($model = User::findOne($id)) !== null) { | ||||
return $model; | return $model; | ||||
} else { | } else { |
<?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.'); | |||||
} | |||||
} | |||||
} |
*/ | */ | ||||
public function sendEmail($email) | public function sendEmail($email) | ||||
{ | { | ||||
return Yii::$app->mailer->compose() | return Yii::$app->mailer->compose() | ||||
->setTo($email) | ->setTo($email) | ||||
->setFrom(['matthieu@lechatdesnoisettes.com' => 'Le Chat des Noisettes']) | ->setFrom(['matthieu@lechatdesnoisettes.com' => 'Le Chat des Noisettes']) |
<?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> |
<?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> |
<?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> |
<?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> |
<?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> |
<?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> |
<?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> |
function chat_index_commandes_boutons_paiement(id_pv, id_commande) { | function chat_index_commandes_boutons_paiement(id_pv, id_commande) { | ||||
// boutons paiement/remboursement | // boutons paiement/remboursement | ||||
$('#point-vente-'+id_pv+' .payer, #point-vente-'+id_pv+' .rembourser').click(function() { | $('#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') ; | |||||
}) ; | }) ; | ||||
} | } | ||||
namespace common\components ; | namespace common\components ; | ||||
class MyView extends \yii\web\View { | |||||
class MyView extends \yii\web\View | |||||
{ | |||||
var $title ; | var $title ; | ||||
var $page_title ; | var $page_title ; | ||||
public function setTitle($title, $page_title = '') { | |||||
public function setTitle($title, $page_title = '') | |||||
{ | |||||
$this->title = $title ; | $this->title = $title ; | ||||
if(strlen($page_title)) | if(strlen($page_title)) | ||||
$this->page_title = $page_title ; | $this->page_title = $page_title ; | ||||
$this->page_title = $title ; | $this->page_title = $title ; | ||||
} | } | ||||
public function getTitle() { | |||||
public function getTitle() | |||||
{ | |||||
return $this->title ; | return $this->title ; | ||||
} | } | ||||
public function setPageTitle($page_title) { | |||||
public function setPageTitle($page_title) | |||||
{ | |||||
$this->page_title = $page_title ; | $this->page_title = $page_title ; | ||||
} | } | ||||
public function getPageTitle() { | |||||
public function getPageTitle() | |||||
{ | |||||
return $this->page_title ; | return $this->page_title ; | ||||
} | } | ||||
public function getControllerAction() { | |||||
public function getControllerAction() | |||||
{ | |||||
return Yii::$app->controller->id.'/'.Yii::$app->controller->action->id ; | return Yii::$app->controller->id.'/'.Yii::$app->controller->action->id ; | ||||
} | } | ||||
use yii; | 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) { | if (!Yii::$app->user->isGuest) { | ||||
Yii::$app->user->identity->updateDerniereConnexion(); | Yii::$app->user->identity->updateDerniereConnexion(); | ||||
} | } |
namespace common\helpers; | 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(); | |||||
*/ | |||||
} | } |
use Yii; | 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( | $mail = Yii::$app->mailer->compose( | ||||
[ 'html' => $view.'-html', | [ 'html' => $view.'-html', | ||||
'text' => $view.'-text' | 'text' => $view.'-text' |
class Price { | class Price { | ||||
public static function format($number) { | |||||
public static function format($number) | |||||
{ | |||||
return number_format($number, 2).' €' ; | return number_format($number, 2).' €' ; | ||||
} | } | ||||
use yii\web\UploadedFile; | use yii\web\UploadedFile; | ||||
use Yii ; | 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); | $file = UploadedFile::getInstance($model, $champs); | ||||
if ($file) { | if ($file) { | ||||
$file_name = $file->baseName . '-' . uniqid() ; | $file_name = $file->baseName . '-' . uniqid() ; |
} | } | ||||
} | } | ||||
public static function slugify($string) { | |||||
public static function slugify($string) | |||||
{ | |||||
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string))); | return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string))); | ||||
} | } | ||||
} | } |
use yii; | use yii; | ||||
use common\controllers\CommonController; | use common\controllers\CommonController; | ||||
class FrontendController extends CommonController { | |||||
class FrontendController extends CommonController | |||||
{ | |||||
} | } | ||||
/** | /** | ||||
* Site controller | * Site controller | ||||
*/ | */ | ||||
class SiteController extends FrontendController { | |||||
class SiteController extends FrontendController | |||||
{ | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'access' => [ | 'access' => [ | ||||
'class' => AccessControl::className(), | 'class' => AccessControl::className(), | ||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function actions() { | |||||
public function actions() | |||||
{ | |||||
return [ | return [ | ||||
'captcha' => [ | 'captcha' => [ | ||||
'class' => 'yii\captcha\CaptchaAction', | 'class' => 'yii\captcha\CaptchaAction', | ||||
]; | ]; | ||||
} | } | ||||
/** | |||||
* Affiche la page d'erreur. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionError() | public function actionError() | ||||
{ | { | ||||
$exception = Yii::$app->errorHandler->exception; | $exception = Yii::$app->errorHandler->exception; | ||||
} | } | ||||
} | } | ||||
public function actionIndex() { | |||||
/** | |||||
* Affiche la page d'accueil. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
return $this->render('index'); | return $this->render('index'); | ||||
} | } | ||||
public function actionProducers() { | |||||
/** | |||||
* Liste les producteurs utilisant la plateforme. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionProducers() | |||||
{ | |||||
$data_provider_producers = new ActiveDataProvider([ | $data_provider_producers = new ActiveDataProvider([ | ||||
'query' => Etablissement::find() | 'query' => Etablissement::find() | ||||
->where([ | ->where([ | ||||
]); | ]); | ||||
} | } | ||||
public function actionMentions() { | |||||
/** | |||||
* Affiche les mentions légales. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionMentions() | |||||
{ | |||||
return $this->render('mentions'); | 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) { | if (!\Yii::$app->user->isGuest) { | ||||
return Yii::$app->getResponse()->redirect(['commande/index']); | return Yii::$app->getResponse()->redirect(['commande/index']); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
public function actionLogout() { | |||||
/** | |||||
* Déconnecte l'utilisateur. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionLogout() | |||||
{ | |||||
Yii::$app->user->logout(); | Yii::$app->user->logout(); | ||||
return $this->goHome(); | 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(); | $model = new ContactForm(); | ||||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | if ($model->load(Yii::$app->request->post()) && $model->validate()) { | ||||
if ($model->sendEmail(Yii::$app->params['adminEmail'])) { | if ($model->sendEmail(Yii::$app->params['adminEmail'])) { | ||||
} | } | ||||
} | } | ||||
public function actionSignup() { | |||||
/** | |||||
* Affiche la page d'inscription et traite son formulaire. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionSignup() | |||||
{ | |||||
$model = new SignupForm(); | $model = new SignupForm(); | ||||
if ($model->load(Yii::$app->request->post())) { | if ($model->load(Yii::$app->request->post())) { | ||||
if ($user = $model->signup()) { | if ($user = $model->signup()) { | ||||
if (Yii::$app->getUser()->login($user)) { | if (Yii::$app->getUser()->login($user)) { | ||||
$this->redirect(['commande/index']); | $this->redirect(['commande/index']); | ||||
} | } | ||||
} | } | ||||
]); | ]); | ||||
} | } | ||||
public function actionRequestPasswordReset() { | |||||
/** | |||||
* Affiche la page de demande de nouveau mot de passe. | |||||
* Traitement du formulaire. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionRequestPasswordReset() | |||||
{ | |||||
$model = new PasswordResetRequestForm(); | $model = new PasswordResetRequestForm(); | ||||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | if ($model->load(Yii::$app->request->post()) && $model->validate()) { | ||||
if ($model->sendEmail()) { | if ($model->sendEmail()) { | ||||
} | } | ||||
return $this->render('requestPasswordResetToken', [ | 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) { | public function actionResetPassword($token) { | ||||
try { | try { | ||||
$model = new ResetPasswordForm($token); | $model = new ResetPasswordForm($token); | ||||
} | } | ||||
return $this->render('resetPassword', [ | 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'); | 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'); | 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); | $producer = Etablissement::findOne($id); | ||||
if(!$producer) | if(!$producer) | ||||
]) ; | ]) ; | ||||
} | } | ||||
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_login = new LoginForm(); | ||||
$model_signup = new SignupForm(); | $model_signup = new SignupForm(); | ||||
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class UserController extends FrontendController { | |||||
class UserController extends FrontendController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'verbs' => [ | 'verbs' => [ | ||||
'class' => VerbFilter::className(), | 'class' => VerbFilter::className(), | ||||
* @param integer $id | * @param integer $id | ||||
* @return mixed | * @return mixed | ||||
*/ | */ | ||||
public function actionUpdate() { | |||||
public function actionUpdate() | |||||
{ | |||||
$model = $this->findModel(Yii::$app->user->identity->id); | $model = $this->findModel(Yii::$app->user->identity->id); | ||||
if ($model->load(Yii::$app->request->post()) && $model->validate()) { | if ($model->load(Yii::$app->request->post()) && $model->validate()) { | ||||
} | } | ||||
} | } | ||||
public function actionCredit() { | |||||
return $this->render('credit', [ | |||||
]); | |||||
} | |||||
/** | /** | ||||
* Finds the User model based on its primary key value. | * Finds the User model based on its primary key value. | ||||
* If the model is not found, a 404 HTTP exception will be thrown. | * If the model is not found, a 404 HTTP exception will be thrown. | ||||
* @return User the loaded model | * @return User the loaded model | ||||
* @throws NotFoundHttpException if the model cannot be found | * @throws NotFoundHttpException if the model cannot be found | ||||
*/ | */ | ||||
protected function findModel($id) { | |||||
protected function findModel($id) | |||||
{ | |||||
if (($model = User::findOne($id)) !== null) { | if (($model = User::findOne($id)) !== null) { | ||||
return $model; | return $model; | ||||
} else { | } else { |
<?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> |
namespace producer\controllers; | namespace producer\controllers; | ||||
class CommandeController extends ProducerBaseController { | |||||
class CommandeController extends ProducerBaseController | |||||
{ | |||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return [ | return [ | ||||
'access' => [ | 'access' => [ | ||||
'class' => AccessControl::className(), | 'class' => AccessControl::className(), | ||||
]; | ]; | ||||
} | } | ||||
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); | $production = Production::findOne($id_production); | ||||
if ($production) { | if ($production) { | ||||
return json_encode([]); | return json_encode([]); | ||||
} | } | ||||
/** | |||||
* Initialise le formulaire de création/modification de commande. | |||||
* | |||||
* @param Commande $commande | |||||
* @return array | |||||
*/ | |||||
public function initForm($commande = null) { | public function initForm($commande = null) { | ||||
// etablissements | // etablissements | ||||
* | * | ||||
* @return ProducerView | * @return ProducerView | ||||
*/ | */ | ||||
public function actionHistorique() { | |||||
public function actionHistorique() | |||||
{ | |||||
$data_provider_commandes = new ActiveDataProvider([ | $data_provider_commandes = new ActiveDataProvider([ | ||||
'query' => Commande::find() | 'query' => Commande::find() | ||||
]); | ]); | ||||
} | } | ||||
public function actionRemoveEtablissement($id = 0) { | |||||
/** | |||||
* Supprime un producteur. | |||||
* | |||||
* @param integer $id | |||||
*/ | |||||
public function actionRemoveEtablissement($id = 0) | |||||
{ | |||||
$user_etablissement = UserEtablissement::find() | $user_etablissement = UserEtablissement::find() | ||||
->where(['id_etablissement' => $id, 'id_user' => Yii::$app->user->identity->id]) | ->where(['id_etablissement' => $id, 'id_user' => Yii::$app->user->identity->id]) | ||||
->one(); | ->one(); | ||||
$this->redirect(['commande/index']); | $this->redirect(['commande/index']); | ||||
} | } | ||||
public function actionCreate() { | |||||
/** | |||||
* Crée une commande. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionCreate() | |||||
{ | |||||
$id_etablissement = $this->getProducer()->id ; | $id_etablissement = $this->getProducer()->id ; | ||||
$commande = new Commande; | $commande = new Commande; | ||||
])); | ])); | ||||
} | } | ||||
public function actionUpdate($id) { | |||||
/** | |||||
* Modifie une commande. | |||||
* | |||||
* @param integer $id | |||||
* @return mixed | |||||
* @throws UserException | |||||
*/ | |||||
public function actionUpdate($id) | |||||
{ | |||||
$commande = Commande::find() | $commande = Commande::find() | ||||
->with('production') | ->with('production') | ||||
return $this->render('update', array_merge($this->initForm($commande), [ | 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); | $etablissement = Etablissement::findOne($id_etablissement); | ||||
if ($etablissement && !$etablissement->actif) { | if ($etablissement && !$etablissement->actif) { | ||||
throw new NotFoundHttpException('Cet établissement est actuellement hors ligne.'); | 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(); | $posts = Yii::$app->request->post(); | ||||
$produits = array(); | $produits = array(); | ||||
} | } | ||||
} | } | ||||
public function actionAnnuler($id) { | |||||
/** | |||||
* Annule une commande. | |||||
* | |||||
* @param integer $id | |||||
* @throws \yii\web\NotFoundHttpException | |||||
* @throws UserException | |||||
*/ | |||||
public function actionAnnuler($id) | |||||
{ | |||||
$commande = Commande::find() | $commande = Commande::find() | ||||
->with('production', 'creditHistorique', 'commandeProduits') | ->with('production', 'creditHistorique', 'commandeProduits') | ||||
->where(['id' => $id]) | ->where(['id' => $id]) | ||||
$this->redirect(Yii::$app->urlManager->createUrl(['commande/historique'])); | $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); | $point_vente = PointVente::findOne($id_point_vente); | ||||
if ($point_vente) { | if ($point_vente) { | ||||
if ($point_vente->verifCode($code)) { | if ($point_vente->verifCode($code)) { |
namespace producer\controllers; | namespace producer\controllers; | ||||
class ProducerBaseController extends CommonController { | |||||
class ProducerBaseController extends CommonController | |||||
{ | |||||
var $producer ; | var $producer ; | ||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return []; | return []; | ||||
} | } | ||||
public function actions() { | |||||
public function actions() | |||||
{ | |||||
return []; | return []; | ||||
} | } | ||||
public function beforeAction($event) { | |||||
public function beforeAction($event) | |||||
{ | |||||
$producer = $this->getProducer() ; | $producer = $this->getProducer() ; | ||||
return parent::beforeAction($event); | return parent::beforeAction($event); | ||||
} | } | ||||
public function getProducer() { | |||||
/** | |||||
* Retourne le producteur courant. | |||||
* | |||||
* @return Etablissement | |||||
* @throws \yii\web\HttpException | |||||
*/ | |||||
public function getProducer() | |||||
{ | |||||
if($this->producer) { | if($this->producer) { | ||||
return $this->producer ; | return $this->producer ; | ||||
} | } |
namespace producer\controllers; | namespace producer\controllers; | ||||
class SiteController extends ProducerBaseController { | |||||
class SiteController extends ProducerBaseController | |||||
{ | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function behaviors() { | |||||
public function behaviors() | |||||
{ | |||||
return []; | return []; | ||||
} | } | ||||
public function actions() { | |||||
public function actions() | |||||
{ | |||||
return [ | return [ | ||||
'captcha' => [ | 'captcha' => [ | ||||
'class' => 'yii\captcha\CaptchaAction', | 'class' => 'yii\captcha\CaptchaAction', | ||||
]; | ]; | ||||
} | } | ||||
/** | |||||
* Affiche et gère les erreurs. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionError() | public function actionError() | ||||
{ | { | ||||
$exception = Yii::$app->errorHandler->exception; | $exception = Yii::$app->errorHandler->exception; | ||||
} | } | ||||
/** | /** | ||||
* | |||||
* Affiche la page d'accueil des producteurs comprenant une image, une | * Affiche la page d'accueil des producteurs comprenant une image, une | ||||
* description, la liste des points de vente et les produits | * description, la liste des points de vente et les produits | ||||
* | * | ||||
* @return ProducerView | * @return ProducerView | ||||
*/ | */ | ||||
public function actionIndex() { | |||||
public function actionIndex() | |||||
{ | |||||
// points de vente | // points de vente | ||||
$data_provider_points_vente = new ActiveDataProvider([ | $data_provider_points_vente = new ActiveDataProvider([ | ||||
'query' => PointVente::find() | 'query' => PointVente::find() | ||||
} | } | ||||
/** | /** | ||||
* | |||||
* Affiche et traite le formulaire de contact dédié aux producteurs | * Affiche et traite le formulaire de contact dédié aux producteurs | ||||
* | * | ||||
* @return ProducerView | * @return ProducerView | ||||
*/ | */ | ||||
public function actionContact() { | |||||
public function actionContact() | |||||
{ | |||||
$model = new ContactForm(); | $model = new ContactForm(); | ||||
$producer = $this->getProducer() ; | $producer = $this->getProducer() ; | ||||
* | * | ||||
* @param $action 'add' ou 'delete' | * @param $action 'add' ou 'delete' | ||||
*/ | */ | ||||
public function actionFavorite($action) { | |||||
public function actionFavorite($action) | |||||
{ | |||||
$producer = $this->getProducer() ; | $producer = $this->getProducer() ; | ||||
$user_etablissement = UserEtablissement::find() | $user_etablissement = UserEtablissement::find() |