a0be9a4d
Karnovsky A
30062016
|
1
2
3
4
5
|
<?php
namespace common\modules\product\controllers;
use common\modules\product\models\Product;
|
30ea8a35
Administrator
29.06.16
|
6
|
use common\modules\product\models\ProductImage;
|
41068668
Administrator
29.06.16
|
7
|
use common\modules\product\models\ProductStock;
|
a0be9a4d
Karnovsky A
30062016
|
8
|
use common\modules\product\models\ProductVariant;
|
30ea8a35
Administrator
29.06.16
|
9
|
use common\modules\product\models\ProductVariantListSearch;
|
41068668
Administrator
29.06.16
|
10
|
use common\modules\product\models\Stock;
|
a0be9a4d
Karnovsky A
30062016
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
use Yii;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\web\UploadedFile;
/**
* ManageController implements the CRUD actions for ProductVariant model.
*/
class VariantController extends Controller
{
/**
* @inheritdoc
*/
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
];
}
/**
* Lists all ProductVariant models.
* @return mixed
*/
|
30ea8a35
Administrator
29.06.16
|
41
|
public function actionIndex($product_id)
|
a0be9a4d
Karnovsky A
30062016
|
42
|
{
|
30ea8a35
Administrator
29.06.16
|
43
44
|
$searchModel = new ProductVariantListSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams,$product_id);
|
a0be9a4d
Karnovsky A
30062016
|
45
46
47
48
49
50
51
52
53
|
if ( ($product = Yii::$app->request->get('product_id')) !== null) {
$product = Product::findOne($product);
}
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'product' => $product,
|
30ea8a35
Administrator
29.06.16
|
54
|
'product_id' => $product_id,
|
a0be9a4d
Karnovsky A
30062016
|
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
]);
}
/**
* Displays a single ProductVariant model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new ProductVariant model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
|
30ea8a35
Administrator
29.06.16
|
75
|
public function actionCreate($product_id)
|
a0be9a4d
Karnovsky A
30062016
|
76
77
|
{
$model = new ProductVariant();
|
30ea8a35
Administrator
29.06.16
|
78
|
$model->product_id = $product_id;
|
a0be9a4d
Karnovsky A
30062016
|
79
|
if ($model->load(Yii::$app->request->post())) {
|
30ea8a35
Administrator
29.06.16
|
80
|
|
a0be9a4d
Karnovsky A
30062016
|
81
|
$model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
|
30ea8a35
Administrator
29.06.16
|
82
83
84
|
$model->validate();
if ($model->save()) {
|
a0be9a4d
Karnovsky A
30062016
|
85
|
|
a0be9a4d
Karnovsky A
30062016
|
86
87
88
89
90
91
92
93
94
95
|
if ( ($images = $model->imagesUpload()) !== FALSE) {
foreach ($images as $image) {
$imageModel = new ProductImage();
$imageModel->product_id = $model->product_id;
$imageModel->product_variant_id = $model->product_variant_id;
$imageModel->image = $image;
$imageModel->save();
}
}
|
30ea8a35
Administrator
29.06.16
|
96
|
return $this->redirect(['index', 'product_id' => $product_id]);
|
a0be9a4d
Karnovsky A
30062016
|
97
98
|
}
} else {
|
41068668
Administrator
29.06.16
|
99
100
|
$groups = $model->category->getTaxGroupsByLevel(1);
|
a0be9a4d
Karnovsky A
30062016
|
101
102
|
return $this->render('create', [
'model' => $model,
|
41068668
Administrator
29.06.16
|
103
104
|
'groups' => $groups,
'stocks' => [new ProductStock()],
|
a0be9a4d
Karnovsky A
30062016
|
105
106
107
108
109
110
111
|
]);
}
}
/**
* Updates an existing ProductVariant model.
* If update is successful, the browser will be redirected to the 'view' page.
|
30ea8a35
Administrator
29.06.16
|
112
|
* @param integer $product_id
|
a0be9a4d
Karnovsky A
30062016
|
113
114
115
|
* @param integer $id
* @return mixed
*/
|
30ea8a35
Administrator
29.06.16
|
116
|
public function actionUpdate($product_id, $id)
|
a0be9a4d
Karnovsky A
30062016
|
117
118
119
|
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post())) {
|
30ea8a35
Administrator
29.06.16
|
120
|
|
a0be9a4d
Karnovsky A
30062016
|
121
|
if ($model->save()) {
|
30ea8a35
Administrator
29.06.16
|
122
|
|
41068668
Administrator
29.06.16
|
123
|
|
30ea8a35
Administrator
29.06.16
|
124
125
126
127
128
129
130
131
132
|
if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
$imageModel = ProductImage::find()->where(['product_variant_id' => $model->product_variant_id])->one();
if($imageModel instanceof ProductImage) {
$imageModel->product_id = $model->product_id;
$imageModel->product_variant_id = $model->product_variant_id;
$imageModel->image = $image->name;
$imageModel->save();
} else {
|
a0be9a4d
Karnovsky A
30062016
|
133
134
135
|
$imageModel = new ProductImage();
$imageModel->product_id = $model->product_id;
$imageModel->product_variant_id = $model->product_variant_id;
|
30ea8a35
Administrator
29.06.16
|
136
|
$imageModel->image = $image->name;
|
a0be9a4d
Karnovsky A
30062016
|
137
138
|
$imageModel->save();
}
|
30ea8a35
Administrator
29.06.16
|
139
140
141
142
143
144
145
146
147
|
$imgDir = Yii::getAlias('@storage/products/');
if(!is_dir($imgDir)) {
mkdir($imgDir, 0755, true);
}
$image->saveAs(Yii::getAlias('@storage/products/' . $image->name));
|
a0be9a4d
Karnovsky A
30062016
|
148
149
|
}
|
41068668
Administrator
29.06.16
|
150
151
|
$ProductStocks = Yii::$app->request->post('ProductStock');
|
41068668
Administrator
29.06.16
|
152
153
|
foreach($ProductStocks as $index => $ProductStock){
|
65eb3e51
Administrator
29.06.16
|
154
|
$stock = Stock::find()->where(['name'=>$ProductStock['name']])->one();
|
41068668
Administrator
29.06.16
|
155
156
|
if(!$stock instanceof Stock){
$stock = new Stock();
|
65eb3e51
Administrator
29.06.16
|
157
|
$stock->name = $ProductStock['name'];
|
41068668
Administrator
29.06.16
|
158
159
|
$stock->save();
}
|
0f852b51
Administrator
29.06.16
|
160
|
|
41068668
Administrator
29.06.16
|
161
162
163
164
165
|
$psModel = ProductStock::find()->where(['product_variant_id'=>$model->product_variant_id, 'stock_id' =>$stock->stock_id ]);
if(!$psModel instanceof ProductStock){
$psModel = new ProductStock;
$psModel->load(['ProductStock'=>$ProductStock]);
$psModel->stock_id = $stock->stock_id;
|
0f852b51
Administrator
29.06.16
|
166
167
|
$psModel->product_variant_id = $model->product_variant_id;
$psModel->product_id = $model->product->product_id;
|
41068668
Administrator
29.06.16
|
168
169
170
171
172
173
174
175
176
|
$psModel->save();
} else {
$psModel->load(['ProductStock'=>$ProductStock]);
$psModel->save();
}
}
|
0f852b51
Administrator
29.06.16
|
177
|
|
a0be9a4d
Karnovsky A
30062016
|
178
|
}
|
30ea8a35
Administrator
29.06.16
|
179
180
181
182
183
|
return $this->redirect(['index', 'product_id'=>$product_id]);
|
a0be9a4d
Karnovsky A
30062016
|
184
|
} else {
|
30ea8a35
Administrator
29.06.16
|
185
|
$groups = $model->category-> getTaxGroupsByLevel(1);
|
a0be9a4d
Karnovsky A
30062016
|
186
187
188
189
|
return $this->render('update', [
'model' => $model,
'groups' => $groups,
|
41068668
Administrator
29.06.16
|
190
|
'stocks' => (!empty($model->variantStocks)) ? $model->variantStocks : [new ProductStock],
|
a0be9a4d
Karnovsky A
30062016
|
191
192
193
194
195
196
197
198
199
200
|
]);
}
}
/**
* Deletes an existing ProductVariant model.
* If deletion is successful, the browser will be redirected to the 'index' page.
* @param integer $id
* @return mixed
*/
|
d5d1cb7a
Eugeny Galkovskiy
123
|
201
|
public function actionDelete($product_id, $id)
|
a0be9a4d
Karnovsky A
30062016
|
202
|
{
|
d5d1cb7a
Eugeny Galkovskiy
123
|
203
|
|
a0be9a4d
Karnovsky A
30062016
|
204
205
|
$this->findModel($id)->delete();
|
d5d1cb7a
Eugeny Galkovskiy
123
|
206
|
return $this->redirect(['index', 'product_id'=>$product_id]);
|
a0be9a4d
Karnovsky A
30062016
|
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
}
public function actionDelimg($id)
{
$image = ProductImage::findOne($id);
if ($image) {
$image->delete();
}
print '1';
exit;
}
/**
* Finds the ProductVariant model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return ProductVariant the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = ProductVariant::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
}
|