Commit 74c5014fd298ff6d4aec07107f08d9725c872298
Merge remote-tracking branch 'origin/master'
Showing
7 changed files
with
225 additions
and
63 deletions
Show diff stats
controllers/OrderController.php
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | |
3 | 3 | namespace artweb\artbox\ecommerce\controllers; |
4 | 4 | |
5 | + use artweb\artbox\components\SmsSender; | |
5 | 6 | use artweb\artbox\ecommerce\models\OrderSearch; |
6 | 7 | use phpDocumentor\Reflection\Types\Null_; |
7 | 8 | use Yii; |
... | ... | @@ -98,6 +99,21 @@ |
98 | 99 | $model->save(); |
99 | 100 | } |
100 | 101 | |
102 | + public function actionView($id) | |
103 | + { | |
104 | + $model = $this->findModel($id); | |
105 | + $dataProvider = new ActiveDataProvider([ | |
106 | + 'query' => $model->getProducts(), | |
107 | + ]); | |
108 | + return $this->render( | |
109 | + 'view', | |
110 | + [ | |
111 | + 'model' => $model, | |
112 | + 'products' => $dataProvider, | |
113 | + ] | |
114 | + ); | |
115 | + } | |
116 | + | |
101 | 117 | public function actionPayUpdate() |
102 | 118 | { |
103 | 119 | $model = Order::findOne($_POST[ 'order_id' ]); |
... | ... | @@ -300,14 +316,13 @@ |
300 | 316 | ], |
301 | 317 | ]; |
302 | 318 | if (!is_null($q)) { |
303 | - $result = ProductVariant::find() | |
304 | -// ->select( | |
305 | -// [ | |
306 | -// 'id', | |
307 | -// 'sku', | |
308 | -// 'product_lang.title AS name' | |
309 | -// ] | |
310 | -// ) | |
319 | + $result = ProductVariant::find()// ->select( | |
320 | + // [ | |
321 | + // 'id', | |
322 | + // 'sku', | |
323 | + // 'product_lang.title AS name' | |
324 | + // ] | |
325 | + // ) | |
311 | 326 | ->joinWith('product.lang') |
312 | 327 | ->where( |
313 | 328 | [ |
... | ... | @@ -325,6 +340,15 @@ |
325 | 340 | return $out; |
326 | 341 | } |
327 | 342 | |
343 | + public function actionSendSms() | |
344 | + { | |
345 | + $phone = \Yii::$app->request->post('phone'); | |
346 | + $content = \Yii::$app->request->post('content'); | |
347 | + $sender = \Yii::$app->sender; | |
348 | + $result = $sender->send($phone, $content); | |
349 | + return $phone . $content . $result; | |
350 | + } | |
351 | + | |
328 | 352 | // public function actionDeleteProduct($id, $order_id) |
329 | 353 | // { |
330 | 354 | // $model = OrderProduct::findOne($id); | ... | ... |
models/Order.php
... | ... | @@ -61,6 +61,26 @@ |
61 | 61 | ], |
62 | 62 | ]; |
63 | 63 | |
64 | + const REASONS = [ | |
65 | + 1 => 'ะะตั ัะพะฒะฐัะฐ', | |
66 | + 2 => 'ะะตั ะพะฟะปะฐัั', | |
67 | + 3 => 'ะะตัะตะดัะผะฐะป', | |
68 | + 4 => ' - ะัะฟะธะป ะฒ ะดััะณะพะผ ะผะตััะต', | |
69 | + 5 => ' - ะะต ะฟะพะดะพัะปะธ ััะปะพะฒะธั ะดะพััะฐะฒะบะธ', | |
70 | + 6 => ' - ะะต ะฟะพะดะพัะตะป ััะพะบ ะดะพััะฐะฒะบะธ', | |
71 | + 7 => ' - ะะตั ะดะตะฝะตะณ', | |
72 | + 8 => ' - ะัะฟะธั ะฟะพะทะถะต', | |
73 | + 9 => 'ะัะฟะธะป ะฒ ะดััะณะพะผ ะผะตััะต', | |
74 | + 10 => 'ะะพะดัะตะดะตั ะฒ ะผะฐะณ.', | |
75 | + 11 => 'ะัะฑะปั ะทะฐะบะฐะทะฐ.', | |
76 | + 12 => 'ะััะณะพะต', | |
77 | + 13 => 'ะัะฐะบ', | |
78 | + 14 => 'ะัะบะฐะทะฐะปัั ะพั ะกะฐะผะพะฒัะฒะพะทะฐ', | |
79 | + 15 => 'ะะต ะฟัะธะตั ะฐะป ะทะฐ ะกะฐะผะพะฒัะฒะพะทะพะผ', | |
80 | + 16 => 'ะัะผะตะฝะธะป ะทะฐะบะฐะท', | |
81 | + 17 => 'ะะต ะฑะตัะตั ัััะฑะบั', | |
82 | + ]; | |
83 | + | |
64 | 84 | public static function tableName() |
65 | 85 | { |
66 | 86 | return 'order'; | ... | ... |
views/order/_form.php
... | ... | @@ -9,7 +9,6 @@ |
9 | 9 | use kartik\widgets\DatePicker; |
10 | 10 | use kartik\widgets\Select2; |
11 | 11 | use kartik\widgets\SwitchInput; |
12 | - use yii\bootstrap\Dropdown; | |
13 | 12 | use yii\data\ActiveDataProvider; |
14 | 13 | use yii\helpers\Html; |
15 | 14 | use yii\bootstrap\ActiveForm; |
... | ... | @@ -58,9 +57,31 @@ JS; |
58 | 57 | $js = <<< JS |
59 | 58 | $(document).on('change', '#sms-template-selector', function(event) { |
60 | 59 | var text = $('#select2-sms-template-selector-container').attr('title'); |
61 | - var val = $('option:contains(' + text + ')') | |
62 | - console.log(text); | |
63 | - console.log(val); | |
60 | + var val = $('option:contains(' + text + ')').attr('value'); | |
61 | + $('#sms-text-area').val(val); | |
62 | +}); | |
63 | + | |
64 | +$(document).on('click', '#send-sms-action', function(event) { | |
65 | + console.log('click'); | |
66 | + var content = $('#sms-text-area').val() | |
67 | + var phone = $('input#order-phone').val(); | |
68 | + $.ajax({ | |
69 | + url: "/admin/ecommerce/order/send-sms", | |
70 | + method: "POST", | |
71 | + data: { | |
72 | + phone: phone, | |
73 | + content: content | |
74 | + }, | |
75 | + success: function(data) { | |
76 | + console.log(data); | |
77 | + var newButton = document.createElement('button'); | |
78 | + newButton.classList.add('btn', 'btn-default'); | |
79 | + newButton.innerText = 'ะัะฟัะฐะฒะปะตะฝะพ'; | |
80 | + var current = document.getElementById("send-sms-action"); | |
81 | + var parentDiv = current.parentNode; | |
82 | + parentDiv.replaceChild(newButton, current); | |
83 | + } | |
84 | + }); | |
64 | 85 | }); |
65 | 86 | JS; |
66 | 87 | |
... | ... | @@ -72,8 +93,8 @@ JS; |
72 | 93 | <div class="form-group"> |
73 | 94 | <div class="row"> |
74 | 95 | <?= Html::submitButton( |
75 | - $model->isNewRecord ? \Yii::t('app', 'Create') : \Yii::t('app', 'Update'), | |
76 | - [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ] | |
96 | + $model->isNewRecord ? \Yii::t('app', 'ะกะพะทะดะฐัั') : \Yii::t('app', 'ะะฑะฝะพะฒะธัั'), | |
97 | + [ 'class' => $model->isNewRecord ? 'btn btn-success btn-lg' : 'btn btn-primary btn-lg' ] | |
77 | 98 | ) ?> |
78 | 99 | <?= Html::a( |
79 | 100 | \Yii::t('app', 'ะะตัะฐัั'), |
... | ... | @@ -84,11 +105,12 @@ JS; |
84 | 105 | ] |
85 | 106 | ), |
86 | 107 | [ |
87 | - 'class' => $model->isNewRecord ? 'btn btn-info disabled' : 'btn btn-info', | |
108 | + 'class' => $model->isNewRecord ? 'btn btn-info disabled btn-lg' : 'btn btn-info btn-lg', | |
88 | 109 | 'target' => '_blank', |
89 | 110 | ] |
90 | 111 | ) ?> |
91 | 112 | </div> |
113 | + <br> | |
92 | 114 | <div class="row"> |
93 | 115 | <div class="col-sm-6"> |
94 | 116 | |
... | ... | @@ -115,10 +137,7 @@ JS; |
115 | 137 | |
116 | 138 | <?= $form->field($model, 'reason') |
117 | 139 | ->dropDownList( |
118 | - [ | |
119 | - 1 => 'ะขะพ', | |
120 | - 2 => 'ะกั', | |
121 | - ], | |
140 | + Order::REASONS, | |
122 | 141 | [ 'prompt' => 'ะัะฑะตัะธัะต ะฟัะธัะธะฝั' ] |
123 | 142 | ) ?> |
124 | 143 | |
... | ... | @@ -263,9 +282,6 @@ JS; |
263 | 282 | 'max' => 20, |
264 | 283 | ], |
265 | 284 | ], |
266 | - 'pluginEvents' => [ | |
267 | - 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
268 | - ], | |
269 | 285 | ], |
270 | 286 | 'format' => [ |
271 | 287 | 'text', |
... | ... | @@ -284,37 +300,25 @@ JS; |
284 | 300 | 'max' => 20, |
285 | 301 | ], |
286 | 302 | ], |
287 | - 'pluginEvents' => [ | |
288 | - 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
289 | - ], | |
290 | 303 | ], |
291 | 304 | 'format' => [ |
292 | 305 | 'text', |
293 | 306 | ], |
294 | 307 | 'pageSummary' => false, |
295 | 308 | ], |
296 | -// [ | |
297 | -// 'class' => 'kartik\grid\EditableColumn', | |
298 | -// 'attribute' => 'count', | |
299 | -// 'editableOptions' => [ | |
300 | -// 'header' => \Yii::t('app', 'ะะพะปะธัะตััะฒะพ'), | |
301 | -// 'inputType' => kartik\editable\Editable::INPUT_SPIN, | |
302 | -// 'options' => [ | |
303 | -// 'pluginOptions' => [ | |
304 | -// 'min' => 0, | |
305 | -// 'max' => 5000, | |
306 | -// ], | |
307 | -// ], | |
308 | -// 'pluginEvents' => [ | |
309 | -// 'editableSuccess' => 'function(event) { $.pjax.reload({container:"#order-products-grid"}); }', | |
310 | -// ], | |
311 | -// ], | |
312 | -// 'format' => [ | |
313 | -// 'decimal', | |
314 | -// 0, | |
315 | -// ], | |
316 | -// 'pageSummary' => false, | |
317 | -// ], | |
309 | + [ | |
310 | + 'class' => 'kartik\grid\EditableColumn', | |
311 | + 'attribute' => 'return', | |
312 | + 'editableOptions' => [ | |
313 | + 'header' => \Yii::t('app', 'ะะพะทะฒัะฐั'), | |
314 | + 'inputType' => kartik\editable\Editable::INPUT_CHECKBOX, | |
315 | + 'options' => [], | |
316 | + ], | |
317 | + 'format' => [ | |
318 | + 'boolean', | |
319 | + ], | |
320 | + 'pageSummary' => false, | |
321 | + ], | |
318 | 322 | [ |
319 | 323 | 'class' => 'yii\grid\ActionColumn', |
320 | 324 | 'template' => '{delete}', |
... | ... | @@ -383,10 +387,18 @@ JS; |
383 | 387 | ?> |
384 | 388 | </div> |
385 | 389 | <div class="col-md-2"> |
386 | - <?php echo $newProductForm->field($newOrderProduct, 'count') | |
387 | - ->input('number'); ?> | |
390 | + <?php echo $newProductForm->field( | |
391 | + $newOrderProduct, | |
392 | + 'count' | |
393 | + ) | |
394 | + ->input( | |
395 | + 'number', | |
396 | + [ | |
397 | + 'disabled' => $model->isNewRecord ? true : false, | |
398 | + ] | |
399 | + ); ?> | |
388 | 400 | </div> |
389 | - <div class="col-md-2"> | |
401 | + <div class="col-md-2" style="margin-top: 23px"> | |
390 | 402 | <?php echo Html::submitButton( |
391 | 403 | 'Add', |
392 | 404 | [ |
... | ... | @@ -406,15 +418,13 @@ JS; |
406 | 418 | </div> |
407 | 419 | <br> |
408 | 420 | <br> |
409 | -<br> | |
410 | -<br> | |
411 | -<br> | |
412 | 421 | <div class="container"> |
422 | + <h2><?php echo \Yii::t('app', 'ะัะฟัะฐะฒะธัั ัะผั'); ?></h2> | |
413 | 423 | <div class="row"> |
414 | 424 | <?php |
415 | 425 | echo Select2::widget( |
416 | 426 | [ |
417 | - 'id' => 'sms-template-selector', | |
427 | + 'id' => 'sms-template-selector', | |
418 | 428 | 'name' => 'select-sms-template', |
419 | 429 | 'data' => ArrayHelper::map( |
420 | 430 | SmsTemplate::find() |
... | ... | @@ -431,15 +441,36 @@ JS; |
431 | 441 | ); |
432 | 442 | |
433 | 443 | ?> |
434 | - | |
444 | + <br> | |
435 | 445 | <?php |
436 | 446 | echo Html::textarea( |
437 | 447 | 'sms-text', |
438 | 448 | '', |
439 | 449 | [ |
440 | - 'rows' => 5, | |
450 | + 'rows' => 3, | |
451 | + 'id' => 'sms-text-area', | |
452 | + 'class' => 'form-control', | |
441 | 453 | ] |
442 | 454 | ); |
443 | 455 | ?> |
456 | + <br> | |
457 | + <?php | |
458 | + if ($model->isNewRecord) { | |
459 | + echo Html::button( | |
460 | + \Yii::t('app', 'ะัะฟัะฐะฒะธัั'), | |
461 | + [ | |
462 | + 'class' => 'btn btn-warning disabled', | |
463 | + ] | |
464 | + ); | |
465 | + } else { | |
466 | + echo Html::button( | |
467 | + \Yii::t('app', 'ะัะฟัะฐะฒะธัั'), | |
468 | + [ | |
469 | + 'class' => 'btn btn-warning', | |
470 | + 'id' => 'send-sms-action', | |
471 | + ] | |
472 | + ); | |
473 | + } | |
474 | + ?> | |
444 | 475 | </div> |
445 | 476 | </div> | ... | ... |
views/order/create.php
... | ... | @@ -11,14 +11,16 @@ |
11 | 11 | |
12 | 12 | $this->title = 'ะะพะฑะฐะฒะธัั ัะพะฒะฐั ะฒ ะทะฐะบะฐะท'; |
13 | 13 | $this->params[ 'breadcrumbs' ][] = [ |
14 | - 'label' => 'Pages', | |
14 | + 'label' => \Yii::t('app', 'ะะฐะบะฐะทั'), | |
15 | 15 | 'url' => [ 'index' ], |
16 | 16 | ]; |
17 | 17 | $this->params[ 'breadcrumbs' ][] = $this->title; |
18 | 18 | ?> |
19 | 19 | |
20 | 20 | <div class="order-create"> |
21 | - <h1><?= Html::encode($this->title) ?></h1> | |
21 | + <div class="container"> | |
22 | + <h1><?= Html::encode($this->title) ?></h1> | |
23 | + </div> | |
22 | 24 | |
23 | 25 | <?= $this->render( |
24 | 26 | '_form', | ... | ... |
views/order/index.php
... | ... | @@ -33,7 +33,7 @@ $('[name="OrderSearch[phone]"]').mask('+38(000)000-00-00', { |
33 | 33 | JS; |
34 | 34 | |
35 | 35 | $this->registerJs($js, View::POS_READY); |
36 | - | |
36 | + | |
37 | 37 | ?> |
38 | 38 | <h1>ะะฐะบะฐะทั</h1> |
39 | 39 | <p> |
... | ... | @@ -107,9 +107,9 @@ JS; |
107 | 107 | ?> |
108 | 108 | |
109 | 109 | <?php |
110 | - $query = new JsExpression( | |
111 | - 'function(params) { return {q:params.term}; }' | |
112 | - ); | |
110 | + $query = new JsExpression( | |
111 | + 'function(params) { return {q:params.term}; }' | |
112 | + ); | |
113 | 113 | echo $searchForm->field($searchModel, 'sku') |
114 | 114 | ->widget( |
115 | 115 | Select2::className(), | ... | ... |
views/order/update.php
... | ... | @@ -11,10 +11,14 @@ |
11 | 11 | use yii\web\View; |
12 | 12 | |
13 | 13 | $this->title = 'ะะฐะบะฐะท #' . $model->id; |
14 | + $this->params[ 'breadcrumbs' ][] = [ | |
15 | + 'url' => yii\helpers\Url::to([ '/ecommerce/order/index' ]), | |
16 | + 'label' => \Yii::t('app', 'ะะฐะบะฐะทั'), | |
17 | + ]; | |
14 | 18 | $this->params[ 'breadcrumbs' ][] = $this->title; |
15 | 19 | ?> |
16 | 20 | <div class="order-update"> |
17 | - <h1><?php echo Html::encode($this->title) ?></h1> | |
21 | + <div class="container"><h1><?php echo Html::encode($this->title) ?></h1></div> | |
18 | 22 | |
19 | 23 | <?= $this->render( |
20 | 24 | '_form', | ... | ... |
1 | +<?php | |
2 | + | |
3 | + use artweb\artbox\ecommerce\models\Order; | |
4 | + use kartik\grid\GridView; | |
5 | + use yii\helpers\Html; | |
6 | + use yii\web\View; | |
7 | + use yii\widgets\DetailView; | |
8 | + | |
9 | + /** | |
10 | + * @var View $this | |
11 | + * @var Order $model | |
12 | + */ | |
13 | + | |
14 | + $this->title = 'ะะฐะบะฐะท #' . $model->id; | |
15 | + $this->params[ 'breadcrumbs' ][] = [ | |
16 | + 'label' => \Yii::t('app', 'ะะฐะบะฐะทั'), | |
17 | + 'url' => [ 'index' ], | |
18 | + ]; | |
19 | + $this->params[ 'breadcrumbs' ][] = $this->title; | |
20 | +?> | |
21 | +<div class="order-view"> | |
22 | + | |
23 | + <h1><?= Html::encode($this->title) ?></h1> | |
24 | + | |
25 | + <p> | |
26 | + <?= Html::a( | |
27 | + 'Update', | |
28 | + [ | |
29 | + 'update', | |
30 | + 'id' => $model->id, | |
31 | + ], | |
32 | + [ 'class' => 'btn btn-primary' ] | |
33 | + ) ?> | |
34 | + | |
35 | + </p> | |
36 | + | |
37 | + <?= DetailView::widget( | |
38 | + [ | |
39 | + 'model' => $model, | |
40 | + 'attributes' => [ | |
41 | + 'id', | |
42 | + 'deadline', | |
43 | + 'pay', | |
44 | + 'reason', | |
45 | + 'label', | |
46 | + 'name', | |
47 | + 'phone', | |
48 | + 'email', | |
49 | + 'comment', | |
50 | + 'delivery', | |
51 | + 'declaration', | |
52 | + 'stock', | |
53 | + 'payment', | |
54 | + 'insurance', | |
55 | + 'city', | |
56 | + 'adress', | |
57 | + 'body', | |
58 | + 'check', | |
59 | + 'sms', | |
60 | + ], | |
61 | + ] | |
62 | + ) ?> | |
63 | + | |
64 | + <?php | |
65 | + echo GridView::widget( | |
66 | + [ | |
67 | + 'dataProvider' => $products, | |
68 | + 'columns' => [ | |
69 | + 'id', | |
70 | + 'product_name', | |
71 | + 'name', | |
72 | + 'sku', | |
73 | + 'price', | |
74 | + 'count', | |
75 | + 'sum_cost', | |
76 | + ], | |
77 | + ] | |
78 | + ); | |
79 | + ?> | |
80 | + | |
81 | +</div> | ... | ... |