[
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
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']) ;
}
}
?>