Ver código fonte

Merge branch 'dev'

prodstable
Guillaume 2 anos atrás
pai
commit
78da53e733
2 arquivos alterados com 235 adições e 212 exclusões
  1. +233
    -210
      producer/controllers/SiteController.php
  2. +2
    -2
      producer/views/layouts/main.php

+ 233
- 210
producer/controllers/SiteController.php Ver arquivo

@@ -45,238 +45,261 @@ use common\models\ProductCategory;
class SiteController extends ProducerBaseController
{

/**
* @inheritdoc
*/
public function behaviors()
{
return [];
/**
* @inheritdoc
*/
public function behaviors()
{
return [];
}

public function actions()
{
return [
'captcha' => [
'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() == 'Producteur introuvable') {
Yii::$app->getResponse()->redirect(
Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/error', 'producer_not_found' => true])
)->send();
return;
} else {
return $this->render('error', ['exception' => $exception]);
}
}

public function actions()
{
return [
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}

/**
* 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
$dataProviderPointsSale = new ActiveDataProvider([
'query' => PointSale::find()
->where([
'id_producer' => $this->getProducer(
)->id,
'restricted_access' => 0
])->orderBy(
'default DESC, is_bread_box ASC, name ASC'
),
'pagination' => [
'pageSize' => 50,
],
'sort' => false,
]);

// produits
$categoriesArray = ProductCategory::searchAll([], ['orderby' => 'product_category.position ASC']);
$dataProviderProductsByCategories = [];
foreach ($categoriesArray as $category) {
$dataProviderProductsByCategories[$category->id] = new ActiveDataProvider([
'query' => Product::find()
->andWhere([
'id_producer' => $this->getProducer(
)->id,
'active' => true,
])
->andWhere(
'product.id_product_category = :id_product_category'
)
->params(
[':id_product_category' => $category->id]
)
->orderBy(
'order ASC'
),
'pagination' => [
'pageSize' => 500,
],
'sort' => false,
]);
}

/**
* Affiche et gère les erreurs.
*
* @return mixed
*/
public function actionError()
{
$exception = Yii::$app->errorHandler->exception;

if ($exception !== null) {
if ($exception->getMessage() == 'Producteur introuvable') {
Yii::$app->getResponse()->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/error', 'producer_not_found' => true]))->send();
return;
} else {
return $this->render('error', ['exception' => $exception]);
}
}
$queryProducts = Product::find()
->andWhere([
'id_producer' => $this->getProducer()->id,
'active' => true,
'id_product_category' => null,
])
->orderBy('order ASC');

$dataProviderProducts = new ActiveDataProvider([
'query' => $queryProducts,
'pagination' => [
'pageSize' => 500,
],
'sort' => false,
]);

$products = $queryProducts->all();
foreach ($dataProviderProductsByCategories as $dataProvider) {
$products = array_merge(
$products,
$dataProvider->query->all()
);
}

/**
* 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
$dataProviderPointsSale = new ActiveDataProvider([
'query' => PointSale::find()
->where([
'id_producer' => $this->getProducer()->id,
'restricted_access' => 0
])->orderBy('default DESC, is_bread_box ASC, name ASC'),
'pagination' => [
'pageSize' => 50,
],
'sort' => false,
]);

// produits
$categoriesArray = ProductCategory::searchAll([], ['orderby' => 'product_category.position ASC']) ;
$dataProviderProductsByCategories = [] ;
foreach($categoriesArray as $category) {
$dataProviderProductsByCategories[$category->id] = new ActiveDataProvider([
'query' => Product::find()
->andWhere([
'id_producer' => $this->getProducer()->id,
'active' => true,
])
->andWhere('product.id_product_category = :id_product_category')
->params([':id_product_category' => $category->id])
->orderBy('order ASC'),
'pagination' => [
'pageSize' => 500,
],
'sort' => false,
]);
}

$queryProducts = Product::find()
->andWhere([
'id_producer' => $this->getProducer()->id,
'active' => true,
'id_product_category' => null,
])
->orderBy('order ASC') ;

$dataProviderProducts = new ActiveDataProvider([
'query' => $queryProducts,
'pagination' => [
'pageSize' => 500,
],
'sort' => false,
]);

$products = $queryProducts->all() ;
foreach($dataProviderProductsByCategories as $dataProvider) {
$products = array_merge(
$products,
$dataProvider->query->all()
) ;
}
$hasProductPhoto = false;
$hasProductWeight = false;

$hasProductPhoto = false ;
$hasProductWeight = false ;
foreach ($products as $product) {
if (strlen($product->photo) > 0) {
$hasProductPhoto = true;
}
if ($product->weight && $product->weight > 0) {
$hasProductWeight = true;
}
}

foreach($products as $product) {
if(strlen($product->photo) > 0) {
$hasProductPhoto = true ;
}
if($product->weight && $product->weight > 0) {
$hasProductWeight = true ;
}
return $this->render('index', [
'dataProviderProductsByCategories' => $dataProviderProductsByCategories,
'dataProviderPointsSale' => $dataProviderPointsSale,
'dataProviderProducts' => $dataProviderProducts,
'hasProductPhoto' => $hasProductPhoto,
'hasProductWeight' => $hasProductWeight,
'categories' => $categoriesArray,
]);
}

/**
* Affiche et traite le formulaire de contact dédié aux producteurs
*
* @return ProducerView
*/
public function actionContact()
{
return $this->redirect(['site/index']);

$model = new ContactForm();
$producer = $this->getProducer();

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$isSent = false;
if (is_array($producer->contact)) {
$email = '';
$contact = $producer->getMainContact();
if ($contact) {
$email = $contact->email;
}

return $this->render('index', [
'dataProviderProductsByCategories' => $dataProviderProductsByCategories,
'dataProviderPointsSale' => $dataProviderPointsSale,
'dataProviderProducts' => $dataProviderProducts,
'hasProductPhoto' => $hasProductPhoto,
'hasProductWeight' => $hasProductWeight,
'categories' => $categoriesArray,
]);
}

/**
* 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()) {
$isSent = false ;
if (is_array($producer->contact)) {
$email = '' ;
$contact = $producer->getMainContact() ;
if($contact) {
$email = $contact->email ;
}

if(strlen($email) && $model->sendEmail($email)) {
$isSent = true ;
}
}

if($isSent) {
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,
]);
if (strlen($email) && $model->sendEmail($email)) {
$isSent = true;
}
}

if ($isSent) {
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 actionBookmarks($action)
{
$producer = $this->getProducer();
$userProducer = UserProducer::find()
->where([
}

/**
* 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 actionBookmarks($action)
{
$producer = $this->getProducer();
$userProducer = UserProducer::find()
->where([
'id_user' => User::getCurrentId(),
'id_producer' => $producer->id
])
->one();
->one();

if (!$userProducer) {
$userProducer = Producer::addUser(User::getCurrentId(), $producer->id);
}

if ($userProducer) {
if ($action == 'add') {
$userProducer->bookmark = 1;
Yii::$app->session->setFlash('success', 'Le producteur <strong>' . Html::encode($producer->name) . '</strong> vient d\'être ajouté à vos favoris.');
} else {
$userProducer->bookmark = 0;
Yii::$app->session->setFlash('success', 'Le producteur <strong>' . Html::encode($producer->name) . '</strong> vient d\'être supprimé de vos favoris.');
}
$userProducer->save();
}
if (!$userProducer) {
$userProducer = Producer::addUser(User::getCurrentId(), $producer->id);
}

$this->redirect(['site/index']);
if ($userProducer) {
if ($action == 'add') {
$userProducer->bookmark = 1;
Yii::$app->session->setFlash(
'success',
'Le producteur <strong>' . Html::encode(
$producer->name
) . '</strong> vient d\'être ajouté à vos favoris.'
);
} else {
$userProducer->bookmark = 0;
Yii::$app->session->setFlash(
'success',
'Le producteur <strong>' . Html::encode(
$producer->name
) . '</strong> vient d\'être supprimé de vos favoris.'
);
}
$userProducer->save();
}

/**
* Affiche les mentions légales du producteur.
*
* @return ProducerView
*/
public function actionMentions()
{
$producer = GlobalParam::getCurrentProducer();

if (!strlen($producer->mentions)) {
throw new \yii\base\UserException('Mentions légales introuvables.');
}
$this->redirect(['site/index']);
}

return $this->render('mentions', [
'producer' => $producer
]);
}
/**
* Affiche les mentions légales du producteur.
*
* @return ProducerView
*/
public function actionMentions()
{
$producer = GlobalParam::getCurrentProducer();

/**
* Affiche les conditions générales de vente du producteur.
*
* @return ProducerView
*/
public function actionGcs()
{
$producer = GlobalParam::getCurrentProducer();

if (!strlen($producer->gcs)) {
throw new \yii\base\UserException('Conditions générales de vente introuvables.');
}
if (!strlen($producer->mentions)) {
throw new \yii\base\UserException('Mentions légales introuvables.');
}

return $this->render('gcs', [
'producer' => $producer
]);
return $this->render('mentions', [
'producer' => $producer
]);
}

/**
* Affiche les conditions générales de vente du producteur.
*
* @return ProducerView
*/
public function actionGcs()
{
$producer = GlobalParam::getCurrentProducer();

if (!strlen($producer->gcs)) {
throw new \yii\base\UserException('Conditions générales de vente introuvables.');
}

return $this->render('gcs', [
'producer' => $producer
]);
}
}

?>

+ 2
- 2
producer/views/layouts/main.php Ver arquivo

@@ -209,11 +209,11 @@ if (!Yii::$app->user->isGuest) {
'visible' => !Yii::$app->user->isGuest && $producer->credit,
'active' => $this->getControllerAction() == 'credit/history',
],
[
/*[
'label' => '<span class="glyphicon glyphicon-envelope"></span> Contact',
'url' => Yii::$app->urlManager->createUrl(['site/contact']),
'active' => $this->getControllerAction() == 'site/contact',
],
],*/
[
'label' => '<span class="glyphicon glyphicon-cog"></span> Administration',
'url' => Yii::$app->urlManagerBackend->createAbsoluteUrl(['site/index']),

Carregando…
Cancelar
Salvar