ecf49b1b
Administrator
second
|
1
2
|
<?php
|
90a6ed1a
Administrator
basket
|
3
|
namespace frontend\controllers;
|
ecf49b1b
Administrator
second
|
4
|
|
90a6ed1a
Administrator
basket
|
5
6
7
|
use common\models\Customer;
use common\models\OrdersProducts;
|
ecf49b1b
Administrator
second
|
8
9
|
use Yii;
use yii\web\Controller;
|
90a6ed1a
Administrator
basket
|
10
11
|
use common\modules\product\models\ProductVariant;
use common\models\Orders;
|
d9a2909b
Dmytry Fedorchuk
Mail Order save ...
|
12
|
use common\widgets\Mailer;
|
90a6ed1a
Administrator
basket
|
13
14
|
//use app\models\User;
//use app\models\OrdersProducts;
|
ecf49b1b
Administrator
second
|
15
16
17
18
19
20
|
use yii\web\HttpException;
class BasketController extends Controller
{
public function actionIndex(){
|
90a6ed1a
Administrator
basket
|
21
22
|
$modelMod = new ProductVariant;
$modelOrder = new Orders;
|
ecf49b1b
Administrator
second
|
23
24
|
if(!empty($_GET['deleteID'])){
|
90a6ed1a
Administrator
basket
|
25
|
$modelOrder->deleteBasketMod($_GET['deleteID']);
|
ecf49b1b
Administrator
second
|
26
27
28
|
return Yii::$app->response->redirect(['basket/index']);
}
|
5b353122
Administrator
image size
|
29
30
|
if(isset($_POST['update']) && isset($_POST['ProductVariant'])){
|
8df8067a
Administrator
basket
|
31
|
foreach ($_POST['ProductVariant'] as $index=>$row) {
|
90a6ed1a
Administrator
basket
|
32
|
$modelOrder->updateBasket($row);
|
ecf49b1b
Administrator
second
|
33
|
}
|
8df8067a
Administrator
basket
|
34
35
|
}elseif(isset($_POST['ProductVariant'])){
// die(print_r($_POST));
|
ecf49b1b
Administrator
second
|
36
|
$body = '';
|
8df8067a
Administrator
basket
|
37
|
foreach ($_POST['ProductVariant'] as $index=>$row) {
|
ecf49b1b
Administrator
second
|
38
39
40
41
42
|
$body .= $row['product_name'].' '.$row['name'].' Кол:'.$row['count'].' Цена:'.$row['sum_cost'];
$body .= "\n\r";
}
$body .= "\n\r";
|
71ef7261
Administrator
14.06.16
|
43
|
if ($modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) {
|
fed9ec18
Administrator
image size
|
44
45
|
$productV = $_POST['ProductVariant'];
|
5b78178b
Dmytry Fedorchuk
product
|
46
|
foreach ($productV as $index=>$row) {
|
fed9ec18
Administrator
image size
|
47
|
$modelOrdersProducts = new OrdersProducts();
|
ecf49b1b
Administrator
second
|
48
|
$mod_id = $row['id'];
|
eb74a2bf
Administrator
14.06.16
|
49
|
|
fed9ec18
Administrator
image size
|
50
|
$data['OrdersProducts'] = $row;
|
ecf49b1b
Administrator
second
|
51
|
$data['OrdersProducts']['mod_id'] = $mod_id;
|
fed9ec18
Administrator
image size
|
52
|
$data['OrdersProducts']['order_id'] = $modelOrder->id;
|
eb74a2bf
Administrator
14.06.16
|
53
54
55
56
|
$product = ProductVariant::findOne($mod_id);
/**
* Проверяем товар на наличие
*/
|
71ef7261
Administrator
14.06.16
|
57
58
59
60
61
62
|
if(!$product->stock > 0 || !$product->price > 0 ){
/**
* Добавляем сообщение об ошибке
*/
|
eb74a2bf
Administrator
14.06.16
|
63
|
\Yii::$app->getSession()->setFlash('error', 'К сожалению товара '.$product->name . ' нет в наличии');
|
71ef7261
Administrator
14.06.16
|
64
65
66
67
|
/**
* Удаляем заказ
*/
$modelOrder->delete();
|
eb74a2bf
Administrator
14.06.16
|
68
69
|
$basket_mods = $modelOrder->getBasketMods();
|
71ef7261
Administrator
14.06.16
|
70
|
|
eb74a2bf
Administrator
14.06.16
|
71
72
73
74
75
76
77
78
79
80
81
82
83
|
return $this->render('index',[
'modelMod'=>$modelMod,
'basket_mods'=>$basket_mods,
'modelOrder'=>$modelOrder,
]);
}else {
/**
* Удаляем товар с массива и сохраняем в заказ
*/
unset($row['id']);
$productV[$index]['img'] = \common\components\artboximage\ArtboxImageHelper::getImageSrc($product->image->imageUrl, 'list');
$modelOrdersProducts->load($data);
|
71ef7261
Administrator
14.06.16
|
84
|
$modelOrdersProducts->validate();
|
eb74a2bf
Administrator
14.06.16
|
85
86
87
|
$modelOrdersProducts->save();
}
|
ecf49b1b
Administrator
second
|
88
|
}
|
eb74a2bf
Administrator
14.06.16
|
89
90
91
92
93
|
/**
* Сохраняем заказ
*/
|
71ef7261
Administrator
14.06.16
|
94
|
|
eb74a2bf
Administrator
14.06.16
|
95
|
|
84b2aead
Administrator
add active menu
|
96
|
if(!Yii::$app->user->id && !empty($modelOrder->email)){
|
fed9ec18
Administrator
image size
|
97
98
99
100
101
102
103
104
|
$modelUser = new Customer();
$modelUser->role = 'person';
$modelUser->username = $modelOrder->email;
$modelUser->name = $modelOrder->name;
$modelUser->phone = $modelOrder->phone;
$modelUser->password = Yii::$app->getSecurity()->generateRandomString(10);
$modelUser->group_id = 2;
$modelUser->save();
|
ecf49b1b
Administrator
second
|
105
|
}
|
fed9ec18
Administrator
image size
|
106
|
$order = clone $modelOrder;
|
eb74a2bf
Administrator
14.06.16
|
107
108
109
110
|
/**
* Чистим сессию корзины
*/
|
8df8067a
Administrator
basket
|
111
|
$modelOrder->clearBasket();
|
fed9ec18
Administrator
image size
|
112
|
|
d9a2909b
Dmytry Fedorchuk
Mail Order save ...
|
113
114
|
Mailer::widget(
['type' => 'order',
|
b044ffe3
Dmytry Fedorchuk
Mail Order save ...
|
115
116
|
'subject'=> 'Спасибо за покупку',
'email' => $modelOrder->email,
|
d9a2909b
Dmytry Fedorchuk
Mail Order save ...
|
117
|
'params' => [
|
d9a2909b
Dmytry Fedorchuk
Mail Order save ...
|
118
|
'order' => $order,
|
72909570
Dmytry Fedorchuk
images
|
119
|
'variants' => $productV,
|
d9a2909b
Dmytry Fedorchuk
Mail Order save ...
|
120
121
122
|
]
]);
|
40366ecb
Dmytry Fedorchuk
All seo
|
123
124
125
|
$text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami. (044) 303 90 15";
Yii::$app->sms->send($order->phone, $text);
|
fed9ec18
Administrator
image size
|
126
127
128
129
|
return $this->render('success',[
'order' => $order,
'variants' => $productV,
]);
|
ecf49b1b
Administrator
second
|
130
131
132
|
}
}
|
90a6ed1a
Administrator
basket
|
133
|
$basket_mods = $modelOrder->getBasketMods();
|
ecf49b1b
Administrator
second
|
134
135
|
if(!empty(Yii::$app->user->id)){
|
90a6ed1a
Administrator
basket
|
136
|
$user = Customer::findOne(Yii::$app->user->id);
|
ecf49b1b
Administrator
second
|
137
138
139
|
$modelOrder->email = $user->username;
$modelOrder->phone = $user->phone;
$modelOrder->name = $user->name;
|
ecf49b1b
Administrator
second
|
140
|
}
|
d9a2909b
Dmytry Fedorchuk
Mail Order save ...
|
141
142
|
|
ecf49b1b
Administrator
second
|
143
144
145
146
147
148
149
150
151
|
return $this->render('index', [
'modelMod'=>$modelMod,
'basket_mods'=>$basket_mods,
'modelOrder'=>$modelOrder,
]);
}
public function actionItems(){
|
90a6ed1a
Administrator
basket
|
152
|
$modelMod = new Orders;
|
030aa37f
Administrator
image size
|
153
154
|
|
ecf49b1b
Administrator
second
|
155
156
157
158
|
if(!empty($_GET['deleteID'])){
$modelMod->deleteBasketMod($_GET['deleteID']);
}
|
5f509693
Administrator
image size
|
159
160
|
if(isset($_POST['ProductVariant'])){
foreach ($_POST['ProductVariant'] as $index=>$row) {
|
ecf49b1b
Administrator
second
|
161
162
163
164
165
166
167
168
169
170
171
172
|
$modelMod->updateBasket($row);
}
}
$basket_mods = $modelMod->getBasketMods();
return $this->renderAjax('ajax_items', [
'modelMod'=>$modelMod,
'basket_mods'=>$basket_mods,
]);
}
public function actionInfo()
{
|
90a6ed1a
Administrator
basket
|
173
|
$modelMod = new Orders();
|
ecf49b1b
Administrator
second
|
174
175
176
177
178
179
180
|
$info = $modelMod->rowBasket();
return $this->renderAjax('ajax_info', [
'info'=>$info,
]);
}
public function actionAdd(){
|
90a6ed1a
Administrator
basket
|
181
|
$modelOrders = new Orders();
|
ecf49b1b
Administrator
second
|
182
|
if(isset($_GET['mod_id'],$_GET['count']) && $_GET['mod_id']>0 && $_GET['count']>0){
|
90a6ed1a
Administrator
basket
|
183
|
$modelOrders->addBasket($_GET['mod_id'],$_GET['count']);
|
ecf49b1b
Administrator
second
|
184
185
186
187
188
189
190
191
192
193
194
195
196
|
}
Yii::$app->end();
}
public function actionSuccess(){
return $this->render('success');
}
}
|