[ 'class' => 'yii\captcha\CaptchaAction', 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, ], ]; } /** * Affiche et gère les erreurs. * * @return mixed */ public function actionError() { $exception = Yii::$app->errorHandler->exception; if ($exception !== null) { if($exception->getMessage() == 'Établissement introuvable') { Yii::$app->getResponse()->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/error', 'producer_not_found' => true]))->send(); return; } else { return $this->render('error', ['exception' => $exception]); } } } /** * Affiche la page d'accueil des producteurs comprenant une image, une * description, la liste des points de vente et les produits * * @return ProducerView */ public function actionIndex() { // points de vente $data_provider_points_vente = new ActiveDataProvider([ 'query' => PointVente::find() ->where([ 'id_etablissement' => $this->getProducer()->id, ]), 'pagination' => [ 'pageSize' => 50, ], 'sort' => false, ]); // produits $data_provider_produits = new ActiveDataProvider([ 'query' => Produit::find() ->where('(vrac IS NULL OR vrac = 0)') ->andWhere([ 'id_etablissement' => $this->getProducer()->id, 'actif' => true ]) ->orderBy('order ASC'), 'pagination' => [ 'pageSize' => 50, ], 'sort' => false, ]); return $this->render('index',[ 'data_provider_points_vente' => $data_provider_points_vente, 'data_provider_produits' => $data_provider_produits ]) ; } /** * Affiche et traite le formulaire de contact dédié aux producteurs * * @return ProducerView */ public function actionContact() { $model = new ContactForm(); $producer = $this->getProducer() ; if ($model->load(Yii::$app->request->post()) && $model->validate()) { if (is_array($producer->contact) && $model->sendEmail($producer->contact[0]->email)) { Yii::$app->session->setFlash('success', 'Votre message a bien été envoyé.'); } else { Yii::$app->session->setFlash('error', 'Il y a eu une erreur lors de l\'envoi de votre message.'); } return $this->refresh(); } else { return $this->render('contact', [ 'model' => $model, ]); } } /** * Ajoute ou supprime un producteur des favoris de l'utilisateur. * Redirige vers la page d'accueil du producteur. * * @param $action 'add' ou 'delete' */ public function actionFavorite($action) { $producer = $this->getProducer() ; $user_etablissement = UserEtablissement::find() ->where([ 'id_user' => Yii::$app->user->id, 'id_etablissement' => $producer->id ]) ->one() ; if(!$user_etablissement) { $user_etablissement = Etablissement::addUser(Yii::$app->user->id, $producer->id) ; } if($user_etablissement) { if($action == 'add') { $user_etablissement->favoris = 1 ; Yii::$app->session->setFlash('success','Le producteur '.Html::encode($producer->nom).' vient d\'être ajouté à vos favoris.') ; } else { $user_etablissement->favoris = 0 ; Yii::$app->session->setFlash('success','Le producteur '.Html::encode($producer->nom).' vient d\'être supprimé de vos favoris.') ; } $user_etablissement->save() ; } $this->redirect(['site/index']) ; } } ?>