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