Commit ed038e99acbf0a27f8e11665deb4a870b31772b6

Authored by Yarik
1 parent 11ecfb79

Order

controllers/BasketController.php
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 /** 20 /**
21 * @var Basket $basket 21 * @var Basket $basket
22 */ 22 */
23 - $basket = \Yii::$app->basket; 23 + $basket = \Yii::$app->get('basket');
24 $result = [ 24 $result = [
25 'basket' => $basket->getData(), 25 'basket' => $basket->getData(),
26 'modal' => $this->getModal($basket), 26 'modal' => $this->getModal($basket),
@@ -28,16 +28,16 @@ @@ -28,16 +28,16 @@
28 ]; 28 ];
29 return $result; 29 return $result;
30 } 30 }
31 -  
32 - public function actionAdd(int $product_variant_id, int $count) 31 +
  32 + public function actionAdd(int $variant_id, int $count)
33 { 33 {
34 $response = \Yii::$app->response; 34 $response = \Yii::$app->response;
35 $response->format = Response::FORMAT_JSON; 35 $response->format = Response::FORMAT_JSON;
36 /** 36 /**
37 * @var Basket $basket 37 * @var Basket $basket
38 */ 38 */
39 - $basket = \Yii::$app->basket;  
40 - $basket->add($product_variant_id, $count); 39 + $basket = \Yii::$app->get('basket');
  40 + $basket->add($variant_id, $count);
41 $result = [ 41 $result = [
42 'basket' => $basket->getData(), 42 'basket' => $basket->getData(),
43 'modal' => $this->getModal($basket), 43 'modal' => $this->getModal($basket),
@@ -45,16 +45,16 @@ @@ -45,16 +45,16 @@
45 ]; 45 ];
46 return $result; 46 return $result;
47 } 47 }
48 -  
49 - public function actionSet(int $product_variant_id, int $count) 48 +
  49 + public function actionSet(int $variant_id, int $count)
50 { 50 {
51 $response = \Yii::$app->response; 51 $response = \Yii::$app->response;
52 $response->format = Response::FORMAT_JSON; 52 $response->format = Response::FORMAT_JSON;
53 /** 53 /**
54 * @var Basket $basket 54 * @var Basket $basket
55 */ 55 */
56 - $basket = \Yii::$app->basket;  
57 - $basket->set($product_variant_id, $count); 56 + $basket = \Yii::$app->get('basket');
  57 + $basket->set($variant_id, $count);
58 $result = [ 58 $result = [
59 'basket' => $basket->getData(), 59 'basket' => $basket->getData(),
60 'modal' => $this->getModal($basket), 60 'modal' => $this->getModal($basket),
@@ -62,10 +62,10 @@ @@ -62,10 +62,10 @@
62 ]; 62 ];
63 return $result; 63 return $result;
64 } 64 }
65 -  
66 - public function actionRemove(int $product_variant_id) 65 +
  66 + public function actionRemove(int $variant_id)
67 { 67 {
68 - return $this->actionSet($product_variant_id, 0); 68 + return $this->actionSet($variant_id, 0);
69 } 69 }
70 70
71 public function actionTest() 71 public function actionTest()
@@ -73,7 +73,7 @@ @@ -73,7 +73,7 @@
73 /** 73 /**
74 * @var Basket $basket 74 * @var Basket $basket
75 */ 75 */
76 - $basket = \Yii::$app->basket; 76 + $basket = \Yii::$app->get('basket');
77 $modal = $this->getModal($basket); 77 $modal = $this->getModal($basket);
78 return $modal; 78 return $modal;
79 } 79 }
migrations/m170503_145306_create_order_product_table.php
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 ); 37 );
38 38
39 $this->addForeignKey( 39 $this->addForeignKey(
40 - 'order_product_variant_id_fkey', 40 + 'order_variant_id_fkey',
41 'order_product', 41 'order_product',
42 'variant_id', 42 'variant_id',
43 'variant', 43 'variant',
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
53 public function safeDown() 53 public function safeDown()
54 { 54 {
55 $this->dropForeignKey('order_product_order_id_fkey', 'order_product'); 55 $this->dropForeignKey('order_product_order_id_fkey', 'order_product');
56 - $this->dropForeignKey('order_product_variant_id_fkey', 'order_product'); 56 + $this->dropForeignKey('order_variant_id_fkey', 'order_product');
57 57
58 $this->dropTable('order_product'); 58 $this->dropTable('order_product');
59 } 59 }
models/Delivery.php
1 <?php 1 <?php
2 2
3 namespace artbox\order\models; 3 namespace artbox\order\models;
4 - 4 +
  5 + use artbox\core\behaviors\LanguageBehavior;
5 use artbox\core\models\Language; 6 use artbox\core\models\Language;
6 use Yii; 7 use Yii;
7 - 8 + use yii\db\ActiveQuery;
  9 + use yii\web\Request;
  10 +
8 /** 11 /**
9 * This is the model class for table "delivery". 12 * This is the model class for table "delivery".
10 * 13 *
11 * @property integer $id 14 * @property integer $id
12 * @property integer $sort 15 * @property integer $sort
13 - * @property string $value 16 + * @property float $value
14 * @property boolean $status 17 * @property boolean $status
15 * @property DeliveryLang[] $deliveryLangs 18 * @property DeliveryLang[] $deliveryLangs
16 * @property Language[] $languages 19 * @property Language[] $languages
17 * @property Order[] $orders 20 * @property Order[] $orders
  21 + * * * From language behavior *
  22 + * @property DeliveryLang $lang
  23 + * @property DeliveryLang[] $langs
  24 + * @property DeliveryLang $objectLang
  25 + * @property string $ownerKey
  26 + * @property string $langKey
  27 + * @property DeliveryLang[] $modelLangs
  28 + * @property bool $transactionStatus
  29 + * @method string getOwnerKey()
  30 + * @method void setOwnerKey( string $value )
  31 + * @method string getLangKey()
  32 + * @method void setLangKey( string $value )
  33 + * @method ActiveQuery getLangs()
  34 + * @method ActiveQuery getLang( integer $language_id )
  35 + * @method DeliveryLang[] generateLangs()
  36 + * @method void loadLangs( Request $request )
  37 + * @method bool linkLangs()
  38 + * @method bool saveLangs()
  39 + * @method bool getTransactionStatus()
  40 + * @method bool loadWithLangs( Request $request )
  41 + * @method bool saveWithLangs()
  42 + * * End language behavior *
  43 + * @see LanguageBehavior
18 */ 44 */
19 class Delivery extends \yii\db\ActiveRecord 45 class Delivery extends \yii\db\ActiveRecord
20 { 46 {
@@ -25,7 +51,7 @@ @@ -25,7 +51,7 @@
25 { 51 {
26 return 'delivery'; 52 return 'delivery';
27 } 53 }
28 - 54 +
29 /** 55 /**
30 * @inheritdoc 56 * @inheritdoc
31 */ 57 */
@@ -46,7 +72,19 @@ @@ -46,7 +72,19 @@
46 ], 72 ],
47 ]; 73 ];
48 } 74 }
49 - 75 +
  76 + /**
  77 + * @inheritdoc
  78 + */
  79 + public function behaviors()
  80 + {
  81 + return [
  82 + 'language' => [
  83 + 'class' => LanguageBehavior::className(),
  84 + ],
  85 + ];
  86 + }
  87 +
50 /** 88 /**
51 * @inheritdoc 89 * @inheritdoc
52 */ 90 */
@@ -59,7 +97,7 @@ @@ -59,7 +97,7 @@
59 'status' => Yii::t('order', 'Status'), 97 'status' => Yii::t('order', 'Status'),
60 ]; 98 ];
61 } 99 }
62 - 100 +
63 /** 101 /**
64 * @return \yii\db\ActiveQuery 102 * @return \yii\db\ActiveQuery
65 */ 103 */
@@ -67,7 +105,7 @@ @@ -67,7 +105,7 @@
67 { 105 {
68 return $this->hasMany(DeliveryLang::className(), [ 'delivery_id' => 'id' ]); 106 return $this->hasMany(DeliveryLang::className(), [ 'delivery_id' => 'id' ]);
69 } 107 }
70 - 108 +
71 /** 109 /**
72 * @return \yii\db\ActiveQuery 110 * @return \yii\db\ActiveQuery
73 */ 111 */
@@ -76,7 +114,7 @@ @@ -76,7 +114,7 @@
76 return $this->hasMany(Language::className(), [ 'id' => 'language_id' ]) 114 return $this->hasMany(Language::className(), [ 'id' => 'language_id' ])
77 ->viaTable('delivery_lang', [ 'delivery_id' => 'id' ]); 115 ->viaTable('delivery_lang', [ 'delivery_id' => 'id' ]);
78 } 116 }
79 - 117 +
80 /** 118 /**
81 * @return \yii\db\ActiveQuery 119 * @return \yii\db\ActiveQuery
82 */ 120 */
@@ -3,7 +3,8 @@ @@ -3,7 +3,8 @@
3 namespace artbox\order\models; 3 namespace artbox\order\models;
4 4
5 use Yii; 5 use Yii;
6 - 6 + use yii\db\ActiveRecord;
  7 +
7 /** 8 /**
8 * This is the model class for table "order". 9 * This is the model class for table "order".
9 * 10 *
@@ -27,7 +28,7 @@ @@ -27,7 +28,7 @@
27 * @property Payment $payment 28 * @property Payment $payment
28 * @property OrderProduct[] $orderProducts 29 * @property OrderProduct[] $orderProducts
29 */ 30 */
30 - class Order extends \yii\db\ActiveRecord 31 + class Order extends ActiveRecord
31 { 32 {
32 /** 33 /**
33 * @inheritdoc 34 * @inheritdoc
models/Payment.php
1 <?php 1 <?php
2 2
3 namespace artbox\order\models; 3 namespace artbox\order\models;
4 - 4 +
  5 + use artbox\core\behaviors\LanguageBehavior;
5 use artbox\core\models\Language; 6 use artbox\core\models\Language;
6 use Yii; 7 use Yii;
7 - 8 + use yii\db\ActiveQuery;
  9 + use yii\web\Request;
  10 +
8 /** 11 /**
9 * This is the model class for table "payment". 12 * This is the model class for table "payment".
10 * 13 *
@@ -14,6 +17,29 @@ @@ -14,6 +17,29 @@
14 * @property Order[] $orders 17 * @property Order[] $orders
15 * @property PaymentLang[] $paymentLangs 18 * @property PaymentLang[] $paymentLangs
16 * @property Language[] $languages 19 * @property Language[] $languages
  20 + * * From language behavior *
  21 + * @property PaymentLang $lang
  22 + * @property PaymentLang[] $langs
  23 + * @property PaymentLang $objectLang
  24 + * @property string $ownerKey
  25 + * @property string $langKey
  26 + * @property PaymentLang[] $modelLangs
  27 + * @property bool $transactionStatus
  28 + * @method string getOwnerKey()
  29 + * @method void setOwnerKey( string $value )
  30 + * @method string getLangKey()
  31 + * @method void setLangKey( string $value )
  32 + * @method ActiveQuery getLangs()
  33 + * @method ActiveQuery getLang( integer $language_id )
  34 + * @method PaymentLang[] generateLangs()
  35 + * @method void loadLangs( Request $request )
  36 + * @method bool linkLangs()
  37 + * @method bool saveLangs()
  38 + * @method bool getTransactionStatus()
  39 + * @method bool loadWithLangs( Request $request )
  40 + * @method bool saveWithLangs()
  41 + * * End language behavior *
  42 + * @see LanguageBehavior
17 */ 43 */
18 class Payment extends \yii\db\ActiveRecord 44 class Payment extends \yii\db\ActiveRecord
19 { 45 {
@@ -24,7 +50,19 @@ @@ -24,7 +50,19 @@
24 { 50 {
25 return 'payment'; 51 return 'payment';
26 } 52 }
27 - 53 +
  54 + /**
  55 + * @inheritdoc
  56 + */
  57 + public function behaviors()
  58 + {
  59 + return [
  60 + 'language' => [
  61 + 'class' => LanguageBehavior::className(),
  62 + ],
  63 + ];
  64 + }
  65 +
28 /** 66 /**
29 * @inheritdoc 67 * @inheritdoc
30 */ 68 */
@@ -41,7 +79,7 @@ @@ -41,7 +79,7 @@
41 ], 79 ],
42 ]; 80 ];
43 } 81 }
44 - 82 +
45 /** 83 /**
46 * @inheritdoc 84 * @inheritdoc
47 */ 85 */
@@ -53,7 +91,7 @@ @@ -53,7 +91,7 @@
53 'status' => Yii::t('order', 'Status'), 91 'status' => Yii::t('order', 'Status'),
54 ]; 92 ];
55 } 93 }
56 - 94 +
57 /** 95 /**
58 * @return \yii\db\ActiveQuery 96 * @return \yii\db\ActiveQuery
59 */ 97 */
@@ -61,7 +99,7 @@ @@ -61,7 +99,7 @@
61 { 99 {
62 return $this->hasMany(Order::className(), [ 'payment_id' => 'id' ]); 100 return $this->hasMany(Order::className(), [ 'payment_id' => 'id' ]);
63 } 101 }
64 - 102 +
65 /** 103 /**
66 * @return \yii\db\ActiveQuery 104 * @return \yii\db\ActiveQuery
67 */ 105 */
@@ -69,7 +107,7 @@ @@ -69,7 +107,7 @@
69 { 107 {
70 return $this->hasMany(PaymentLang::className(), [ 'payment_id' => 'id' ]); 108 return $this->hasMany(PaymentLang::className(), [ 'payment_id' => 'id' ]);
71 } 109 }
72 - 110 +
73 /** 111 /**
74 * @return \yii\db\ActiveQuery 112 * @return \yii\db\ActiveQuery
75 */ 113 */
views/basket/cart.php
1 <?php 1 <?php
2 - use yii\helpers\Url; 2 + use yii\bootstrap\Html;
3 use yii\web\View; 3 use yii\web\View;
4 4
5 /** 5 /**
@@ -7,7 +7,21 @@ @@ -7,7 +7,21 @@
7 * @var int $count 7 * @var int $count
8 */ 8 */
9 ?> 9 ?>
10 -<a href="<?php echo Url::to([ 'order/basket' ]); ?>" class="basket_">  
11 - <span class="ico_b_"><span><?php echo $count; ?></span></span>  
12 - <p><span class="name_bas"><?= \Yii::t('app', 'basket') ?></span><span class="separator_bas"><i></i></span></p>  
13 -</a> 10 +<span class="badge"><?= $count; ?></span>
  11 +<?php
  12 + echo Html::a(
  13 + Html::tag(
  14 + 'span',
  15 + \Yii::t('app', 'ะšะพั€ะทะธะฝะฐ'),
  16 + [
  17 + 'class' => 'sub-title',
  18 + ]
  19 + ),
  20 + [
  21 + '/basket/index',
  22 + ],
  23 + [
  24 + 'class' => 'cart-item-link',
  25 + ]
  26 + );
  27 +?>
views/basket/modal_items.php
1 <?php 1 <?php
2 use artbox\catalog\models\Variant; 2 use artbox\catalog\models\Variant;
3 use artbox\order\models\Basket; 3 use artbox\order\models\Basket;
4 - use yii\bootstrap\Html;  
5 - use yii\helpers\Url;  
6 use yii\web\View; 4 use yii\web\View;
7 - use yii\widgets\ActiveForm;  
8 -  
9 /** 5 /**
10 * @var View $this 6 * @var View $this
11 * @var Variant[] $models 7 * @var Variant[] $models
12 * @var Basket $basket 8 * @var Basket $basket
13 * @var array $data 9 * @var array $data
14 */ 10 */
15 - $data = $basket->getData();  
16 -?>  
17 -<div class="container">  
18 - <div class="row">  
19 - <div class="col-xs-12 col-sm-12">  
20 - <div class="style basket-modal-bg">  
21 - <span id="modal_close"></span>  
22 - <div class="style model-name-test"> <?= \Yii::t('app', 'you_add') ?></div>  
23 - <?php  
24 - echo $this->render(  
25 - '@frontend/views/basket/basket_table',  
26 - [  
27 - 'models' => $models,  
28 - 'basket' => $basket,  
29 - 'data' => $data,  
30 - ]  
31 - );  
32 - ?>  
33 - <div class="style">  
34 - <?php  
35 - $form = ActiveForm::begin(  
36 - [  
37 - 'id' => 'basket-modal-form',  
38 - 'method' => 'POST',  
39 - 'action' => Url::to([ 'order/basket' ]),  
40 - ]  
41 - );  
42 - echo Html::a(  
43 - \Yii::t('app', 'ะพั„ะพั€ะผะธั‚ัŒ ะทะฐะบะฐะท'),  
44 - [  
45 - 'order/basket',  
46 - ],  
47 - [  
48 - 'class' => 'btn_link_basket',  
49 - ]  
50 - );  
51 - ?>  
52 - <span id="modal_close-2"><?= \Yii::t('app', 'cont_buy') ?></span>  
53 - <?php  
54 - $form::end();  
55 - ?>  
56 - </div>  
57 - </div>  
58 - </div>  
59 - </div>  
60 -</div>  
web/js/artbox_basket.js
1 -"use strict";  
2 -Object.defineProperty(exports, "__esModule", { value: true });  
3 -var $ = require("jquery"); 1 +///<reference path="node_modules/@types/jquery/index.d.ts" />
4 var ArtboxBasket = (function () { 2 var ArtboxBasket = (function () {
5 function ArtboxBasket(settings) { 3 function ArtboxBasket(settings) {
6 if (settings === void 0) { settings = {}; } 4 if (settings === void 0) { settings = {}; }
@@ -58,7 +56,7 @@ var ArtboxBasket = (function () { @@ -58,7 +56,7 @@ var ArtboxBasket = (function () {
58 }.bind(this)); 56 }.bind(this));
59 }; 57 };
60 ArtboxBasket.prototype.add = function (variant_id, count) { 58 ArtboxBasket.prototype.add = function (variant_id, count) {
61 - $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) { 59 + return $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) {
62 this._items = data.basket; 60 this._items = data.basket;
63 this.updateModal(data.modal, data.cart, true); 61 this.updateModal(data.modal, data.cart, true);
64 }.bind(this), 'json').fail(function (xhr, status, error) { 62 }.bind(this), 'json').fail(function (xhr, status, error) {
@@ -66,7 +64,7 @@ var ArtboxBasket = (function () { @@ -66,7 +64,7 @@ var ArtboxBasket = (function () {
66 }); 64 });
67 }; 65 };
68 ArtboxBasket.prototype.set = function (variant_id, count) { 66 ArtboxBasket.prototype.set = function (variant_id, count) {
69 - $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) { 67 + return $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) {
70 this._items = data.basket; 68 this._items = data.basket;
71 this.updateModal(data.modal, data.cart, true); 69 this.updateModal(data.modal, data.cart, true);
72 }.bind(this), 'json').fail(function (xhr, status, error) { 70 }.bind(this), 'json').fail(function (xhr, status, error) {
@@ -74,7 +72,7 @@ var ArtboxBasket = (function () { @@ -74,7 +72,7 @@ var ArtboxBasket = (function () {
74 }); 72 });
75 }; 73 };
76 ArtboxBasket.prototype.remove = function (variant_id) { 74 ArtboxBasket.prototype.remove = function (variant_id) {
77 - $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) { 75 + return $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) {
78 this._items = data.basket; 76 this._items = data.basket;
79 this.updateModal(data.modal, data.cart, true); 77 this.updateModal(data.modal, data.cart, true);
80 }.bind(this), 'json').fail(function (xhr, status, error) { 78 }.bind(this), 'json').fail(function (xhr, status, error) {
web/js/artbox_basket.ts
1 -import * as $ from 'jquery';  
2 - 1 +///<reference path="node_modules/@types/jquery/index.d.ts" />
3 class ArtboxBasket { 2 class ArtboxBasket {
4 private _items; 3 private _items;
5 private _language; 4 private _language;
@@ -52,8 +51,8 @@ class ArtboxBasket { @@ -52,8 +51,8 @@ class ArtboxBasket {
52 }.bind(this)); 51 }.bind(this));
53 } 52 }
54 53
55 - public add(variant_id, count) {  
56 - $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) { 54 + public add(variant_id, count): JQueryPromise<JQueryXHR> {
  55 + return $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) {
57 this._items = data.basket; 56 this._items = data.basket;
58 this.updateModal(data.modal, data.cart, true); 57 this.updateModal(data.modal, data.cart, true);
59 }.bind(this), 'json').fail(function (xhr, status, error) { 58 }.bind(this), 'json').fail(function (xhr, status, error) {
@@ -61,8 +60,8 @@ class ArtboxBasket { @@ -61,8 +60,8 @@ class ArtboxBasket {
61 }); 60 });
62 } 61 }
63 62
64 - public set(variant_id, count) {  
65 - $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) { 63 + public set(variant_id, count): JQueryPromise<JQueryXHR> {
  64 + return $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) {
66 this._items = data.basket; 65 this._items = data.basket;
67 this.updateModal(data.modal, data.cart, true); 66 this.updateModal(data.modal, data.cart, true);
68 }.bind(this), 'json').fail(function (xhr, status, error) { 67 }.bind(this), 'json').fail(function (xhr, status, error) {
@@ -70,8 +69,8 @@ class ArtboxBasket { @@ -70,8 +69,8 @@ class ArtboxBasket {
70 }); 69 });
71 } 70 }
72 71
73 - public remove(variant_id) {  
74 - $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) { 72 + public remove(variant_id): JQueryPromise<JQueryXHR> {
  73 + return $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) {
75 this._items = data.basket; 74 this._items = data.basket;
76 this.updateModal(data.modal, data.cart, true); 75 this.updateModal(data.modal, data.cart, true);
77 }.bind(this), 'json').fail(function (xhr, status, error) { 76 }.bind(this), 'json').fail(function (xhr, status, error) {