Commit 74c5014fd298ff6d4aec07107f08d9725c872298

Authored by Administrator
2 parents 998b4c25 db3040d3

Merge remote-tracking branch 'origin/master'

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 @@ $(&#39;[name=&quot;OrderSearch[phone]&quot;]&#39;).mask(&#39;+38(000)000-00-00&#39;, {
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',
... ...
views/order/view.php 0 โ†’ 100755
  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>
... ...