550eac02
Administrator
second
|
1
2
3
4
|
<?php
namespace frontend\controllers;
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
5
6
7
8
|
use common\modules\product\Filter;
use common\modules\product\helpers\ProductHelper;
use common\modules\rubrication\models\TaxOptionSearch;
use frontend\models\ProductFrontendSearch;
|
550eac02
Administrator
second
|
9
|
use Yii;
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use common\modules\product\models\Brand;
use common\modules\product\models\BrandSearch;
use common\modules\product\models\Category;
use common\modules\product\models\CategorySearch;
use common\modules\product\models\Product;
use common\modules\product\models\ProductCategory;
use common\modules\product\models\ProductOption;
use common\modules\product\models\ProductSearch;
use common\modules\product\models\ProductVariant;
use common\modules\rubrication\models\TaxGroup;
use common\modules\rubrication\models\TaxOption;
use common\modules\rubrication\models\TaxValueString;
use yii\data\ActiveDataProvider;
use yii\data\Pagination;
use yii\data\Sort;
use yii\db\ActiveQuery;
|
1b898c16
Administrator
20.07.16
|
26
|
use yii\helpers\ArrayHelper;
|
550eac02
Administrator
second
|
27
28
|
use yii\web\HttpException;
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
29
|
class CatalogController extends \yii\web\Controller
|
550eac02
Administrator
second
|
30
|
{
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
31
32
33
|
public function actionSearch() {
// @todo
}
|
550eac02
Administrator
second
|
34
|
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
35
|
public function actionCategory()
|
550eac02
Administrator
second
|
36
|
{
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
37
38
|
/** @var Category $category */
$category = Yii::$app->request->get('category');
|
1b898c16
Administrator
20.07.16
|
39
|
$filter = Yii::$app->request->get('filters', []);
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
40
41
|
if (empty($category->category_id) && empty($word)) {
|
8724ec1f
Karnovsky A
-
|
42
43
44
|
return $this->render(
'catalog'
);
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
45
46
|
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
47
|
|
0f852b51
Administrator
29.06.16
|
48
|
$params = [];
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
49
|
|
1b898c16
Administrator
20.07.16
|
50
51
|
$optionsList = ArrayHelper::getColumn(TaxGroup::find()->where(['is_filter' => 'TRUE'])->all(),'alias');
|
0f852b51
Administrator
29.06.16
|
52
53
54
55
56
|
if ( !empty($filter['brands']) ) {
$brands = Brand::find()->select('brand_id')->where(['in', 'alias', $filter['brands']])->all();
$params['brands'] = [];
foreach ($brands as $brand) {
$params['brands'][] = $brand->brand_id;
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
57
|
}
|
0f852b51
Administrator
29.06.16
|
58
|
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
59
|
|
0f852b51
Administrator
29.06.16
|
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
if ( !empty($filter['special']) ) {
if (!is_array($filter['special'])) {
$filter['special'] = [$filter['special']];
}
if (in_array('new', $filter['special'])) {
$params['special']['is_new'] = true;
}
if (in_array('top', $filter['special'])) {
$params['special']['is_top'] = true;
}
if (in_array('promo', $filter['special'])) {
$params['special']['akciya'] = true;
}
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
74
|
|
1b898c16
Administrator
20.07.16
|
75
76
77
78
79
80
|
// if ( !empty($filter['options']) ) {
// $params['options'] = $filter['options'];
// }
|
ac8ab861
Administrator
20.07.16
|
81
82
83
84
85
86
|
if ( !empty($filter['prices']) ) {
$params['prices'] = $filter['prices'];
}
|
1b898c16
Administrator
20.07.16
|
87
88
89
90
91
92
|
foreach($optionsList as $optionList){
if(isset($filter[$optionList])){
$params[$optionList] = $filter[$optionList];
}
|
8724ec1f
Karnovsky A
-
|
93
|
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
94
|
|
1b898c16
Administrator
20.07.16
|
95
|
|
0f852b51
Administrator
29.06.16
|
96
|
$productModel = new ProductFrontendSearch();
|
1b898c16
Administrator
20.07.16
|
97
|
//$productQuery = $productModel->getSearchQuery($category, $params);
|
0f852b51
Administrator
29.06.16
|
98
|
$productProvider = $productModel->search($category, $params);
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
99
|
|
0f852b51
Administrator
29.06.16
|
100
101
|
$brandModel = new BrandSearch();
$brands = $brandModel->getBrands($category, $params)->all();
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
102
|
|
0f852b51
Administrator
29.06.16
|
103
104
|
$optionsQuery = $productModel->optionsForCategory($category, $params);
$groups = [];
|
1b898c16
Administrator
20.07.16
|
105
106
|
|
0f852b51
Administrator
29.06.16
|
107
108
109
110
|
foreach ($optionsQuery->all() as $option) {
if (!isset($groups[$option->tax_group_id])) {
$groups[$option->tax_group_id] = $option->taxGroup;
$groups[$option->tax_group_id]->_options = [];
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
111
|
}
|
0f852b51
Administrator
29.06.16
|
112
113
114
115
116
117
|
$groups[$option->tax_group_id]->_options[] = $option;
}
foreach($groups as $i => $group) {
if (empty($group->_options))
unset($groups[$i]);
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
118
|
|
0f852b51
Administrator
29.06.16
|
119
|
$priceLimits = $productModel->priceLimits($category, $params);
|
e608c5f7
Yarik
Comment added
|
120
121
122
123
|
/*
* Greedy search for comments and rating
*/
|
c05bf005
Yarik
Comment added
|
124
125
|
// $query = $productProvider->query;
// $query->with(['comments', 'averageRating']);
|
e608c5f7
Yarik
Comment added
|
126
127
128
|
/*
* End of greedy search for rating and comments
*/
|
0f852b51
Administrator
29.06.16
|
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
return $this->render(
'products',
[
'category' => $category,
'brandModel' => $brandModel,
'brands' => $brands,
'filter' => $filter,
'params' => $params,
'productModel' => $productModel,
'productProvider' => $productProvider,
'groups' => $groups,
'priceLimits' => $priceLimits,
]
);
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
144
|
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
145
146
147
148
|
}
public function actionProduct()
{
|
ccc7a9d3
Karnovsky A
Karnovsky 12052016
|
149
|
/** @var Product $product */
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
150
151
|
$product = Yii::$app->request->get('product');
|
3147aab1
Karnovsky A
Fix search with s...
|
152
153
154
155
|
if(!$product->enabledVariant) {
throw new HttpException(404, 'Товар не найден');
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
156
157
158
159
|
ProductHelper::addLastProsucts($product->product_id);
return $this->render('product', [
'product' => $product,
|
c7852657
Karnovsky A
-
|
160
|
'category' => $product->category,
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
161
|
]);
|
550eac02
Administrator
second
|
162
|
}
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
163
164
|
public function actionBrands()
|
550eac02
Administrator
second
|
165
|
{
|
38828295
Karnovsky A
-
|
166
167
168
169
170
171
172
173
174
175
|
$dataProvider = new ActiveDataProvider([
'query' => Brand::find()->joinWith('brandName')->orderBy('brand_name.value'),
'pagination' => [
'pageSize' => -1,
]
]);
return $this->render('brands', [
'dataProvider' => $dataProvider,
]);
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
176
177
|
}
|
868680ca
Karnovsky A
-
|
178
|
public function actionBrand($brand)
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
179
|
{
|
ac8ab861
Administrator
20.07.16
|
180
|
$brand = BrandSearch::findByAlias($brand);
|
868680ca
Karnovsky A
-
|
181
182
|
$params = [
|
ac8ab861
Administrator
20.07.16
|
183
|
'brands' => $brand->brand_id,
|
868680ca
Karnovsky A
-
|
184
185
|
];
|
868680ca
Karnovsky A
-
|
186
187
188
189
190
191
192
193
194
195
|
$productModel = new ProductFrontendSearch();
$productProvider = $productModel->search(null, $params);
$priceLimits = $productModel->priceLimits(null, $params);
return $this->render('brand', [
'productModel' => $productModel,
'productProvider' => $productProvider,
'brand' => $brand,
'priceLimits' => $priceLimits,
|
868680ca
Karnovsky A
-
|
196
|
]);
|
055ecc3b
Karnovsky A
Karnovsky 11052016
|
197
198
199
|
}
}
|