Commit 0b0b1232d9125733c60c303d0c891c40ae79d89f

Authored by Anastasia
1 parent 8015d9d9

bonuses in basket

controllers/BasketController.php
@@ -137,4 +137,41 @@ @@ -137,4 +137,41 @@
137 ); 137 );
138 return $output; 138 return $output;
139 } 139 }
  140 +
  141 +
  142 +
  143 + public function actionAddBonus($bonus){
  144 + $response = \Yii::$app->response;
  145 + $response->format = Response::FORMAT_JSON;
  146 + /**
  147 + * @var Basket $basket
  148 + */
  149 + $basket = \Yii::$app->get('basket');
  150 +
  151 + $basket->setBonus($bonus);
  152 + $result = [
  153 + 'basket' => $basket->getData(),
  154 + 'modal' => $this->getModal($basket),
  155 + 'cart' => $this->getCart($basket),
  156 + 'small' => $this->actionRenderBasket()
  157 + ];
  158 + return $result;
  159 + }
  160 +
  161 + public function actionDeleteBonus(){
  162 + $response = \Yii::$app->response;
  163 + $response->format = Response::FORMAT_JSON;
  164 + /**
  165 + * @var Basket $basket
  166 + */
  167 + $basket = \Yii::$app->get('basket');
  168 + $basket->removeBonus();
  169 + $result = [
  170 + 'basket' => $basket->getData(),
  171 + 'modal' => $this->getModal($basket),
  172 + 'cart' => $this->getCart($basket),
  173 + 'small' => $this->actionRenderBasket()
  174 + ];
  175 + return $result;
  176 + }
140 } 177 }
@@ -316,5 +316,29 @@ @@ -316,5 +316,29 @@
316 { 316 {
317 $this->setData([]); 317 $this->setData([]);
318 } 318 }
  319 +
  320 + /**
  321 + * @param int $bonuses
  322 + */
  323 + public function setBonus(int $bonuses){
  324 + $this->session->set('bonus', $bonuses);
  325 + }
  326 +
  327 + /**
  328 + * @return mixed|null
  329 + */
  330 + public function getBonuses(){
  331 + if ($this->session->has('bonus')){
  332 + return $this->session->get('bonus');
  333 + }
  334 + return null;
  335 + }
  336 +
  337 + /**
  338 + *
  339 + */
  340 + public function removeBonus(){
  341 + $this->session->remove('bonus');
  342 + }
319 } 343 }
320 344
321 \ No newline at end of file 345 \ No newline at end of file
web/js/artbox_basket.js
1 ///<reference path="node_modules/@types/jquery/index.d.ts" /> 1 ///<reference path="node_modules/@types/jquery/index.d.ts" />
2 -var ArtboxBasket = (function () { 2 +var ArtboxBasket = /** @class */ (function () {
3 function ArtboxBasket(settings) { 3 function ArtboxBasket(settings) {
4 if (settings === void 0) { settings = {}; } 4 if (settings === void 0) { settings = {}; }
5 this._defaults = { 5 this._defaults = {
@@ -7,7 +7,8 @@ var ArtboxBasket = (function () { @@ -7,7 +7,8 @@ var ArtboxBasket = (function () {
7 url: 'basket', 7 url: 'basket',
8 initError: 'Basket cannot be init', 8 initError: 'Basket cannot be init',
9 modalSelector: '.basket_modal', 9 modalSelector: '.basket_modal',
10 - cartSelector: '.basket_wrapper' 10 + cartSelector: '.basket_wrapper',
  11 + smallSelector: '.small_basket_page'
11 }; 12 };
12 this._settings = {}; 13 this._settings = {};
13 this._settings = ArtboxBasket.mergeObjects(this._defaults, settings); 14 this._settings = ArtboxBasket.mergeObjects(this._defaults, settings);
@@ -46,6 +47,7 @@ var ArtboxBasket = (function () { @@ -46,6 +47,7 @@ var ArtboxBasket = (function () {
46 configurable: true 47 configurable: true
47 }); 48 });
48 ArtboxBasket.prototype.init = function (update_modal, update_cart) { 49 ArtboxBasket.prototype.init = function (update_modal, update_cart) {
  50 + this.deleteBonus();
49 $.get(this.getLanguagePath() + this._settings['url'], function (data) { 51 $.get(this.getLanguagePath() + this._settings['url'], function (data) {
50 this._items = data.basket; 52 this._items = data.basket;
51 if (update_modal) { 53 if (update_modal) {
@@ -100,6 +102,10 @@ var ArtboxBasket = (function () { @@ -100,6 +102,10 @@ var ArtboxBasket = (function () {
100 var cart = $(this._settings['cartSelector']); 102 var cart = $(this._settings['cartSelector']);
101 cart.html(cart_html); 103 cart.html(cart_html);
102 }; 104 };
  105 + ArtboxBasket.prototype.updateSmall = function (small_html) {
  106 + var cart = $(this._settings['smallSelector']);
  107 + cart.html(small_html);
  108 + };
103 ArtboxBasket.prototype.hideBasket = function () { 109 ArtboxBasket.prototype.hideBasket = function () {
104 $(this._settings['modalSelector']) 110 $(this._settings['modalSelector'])
105 .animate({ 111 .animate({
@@ -137,5 +143,23 @@ var ArtboxBasket = (function () { @@ -137,5 +143,23 @@ var ArtboxBasket = (function () {
137 return '/'; 143 return '/';
138 } 144 }
139 }; 145 };
  146 + ArtboxBasket.prototype.setBonus = function (bonus) {
  147 + return $.post(this.getLanguagePath() + this._settings['url'] + '/add-bonus?bonus=' + bonus, function (data) {
  148 + this._items = data.basket;
  149 + this.updateModal(data.modal, data.cart, true);
  150 + this.updateSmall(data.small);
  151 + }.bind(this), 'json').fail(function (xhr, status, error) {
  152 + console.error(error);
  153 + });
  154 + };
  155 + ArtboxBasket.prototype.deleteBonus = function () {
  156 + return $.post(this.getLanguagePath() + this._settings['url'] + '/delete-bonus', function (data) {
  157 + this._items = data.basket;
  158 + this.updateModal(data.modal, data.cart, true);
  159 + this.updateSmall(data.small);
  160 + }.bind(this), 'json').fail(function (xhr, status, error) {
  161 + console.error(error);
  162 + });
  163 + };
140 return ArtboxBasket; 164 return ArtboxBasket;
141 }()); 165 }());
web/js/artbox_basket.ts
@@ -7,7 +7,8 @@ class ArtboxBasket { @@ -7,7 +7,8 @@ class ArtboxBasket {
7 url: 'basket', 7 url: 'basket',
8 initError: 'Basket cannot be init', 8 initError: 'Basket cannot be init',
9 modalSelector: '.basket_modal', 9 modalSelector: '.basket_modal',
10 - cartSelector: '.basket_wrapper' 10 + cartSelector: '.basket_wrapper',
  11 + smallSelector: '.small_basket_page'
11 }; 12 };
12 private _settings: Object = {}; 13 private _settings: Object = {};
13 14
@@ -41,6 +42,7 @@ class ArtboxBasket { @@ -41,6 +42,7 @@ class ArtboxBasket {
41 } 42 }
42 43
43 public init(update_modal, update_cart) { 44 public init(update_modal, update_cart) {
  45 + this.deleteBonus();
44 $.get(this.getLanguagePath() + this._settings['url'], function (data) { 46 $.get(this.getLanguagePath() + this._settings['url'], function (data) {
45 this._items = data.basket; 47 this._items = data.basket;
46 if (update_modal) { 48 if (update_modal) {
@@ -100,6 +102,11 @@ class ArtboxBasket { @@ -100,6 +102,11 @@ class ArtboxBasket {
100 cart.html(cart_html); 102 cart.html(cart_html);
101 } 103 }
102 104
  105 + public updateSmall(small_html) {
  106 + let cart = $(this._settings['smallSelector']);
  107 + cart.html(small_html);
  108 + }
  109 +
103 public hideBasket() { 110 public hideBasket() {
104 $(this._settings['modalSelector']) 111 $(this._settings['modalSelector'])
105 .animate( 112 .animate(
@@ -137,4 +144,24 @@ class ArtboxBasket { @@ -137,4 +144,24 @@ class ArtboxBasket {
137 return '/'; 144 return '/';
138 } 145 }
139 } 146 }
  147 +
  148 + public setBonus(bonus) {
  149 + return $.post(this.getLanguagePath() + this._settings['url'] + '/add-bonus?bonus=' + bonus, function (data) {
  150 + this._items = data.basket;
  151 + this.updateModal(data.modal, data.cart, true);
  152 + this.updateSmall(data.small);
  153 + }.bind(this), 'json').fail(function (xhr, status, error) {
  154 + console.error(error);
  155 + });
  156 + }
  157 +
  158 + public deleteBonus(){
  159 + return $.post(this.getLanguagePath() + this._settings['url'] + '/delete-bonus', function (data) {
  160 + this._items = data.basket;
  161 + this.updateModal(data.modal, data.cart, true);
  162 + this.updateSmall(data.small);
  163 + }.bind(this), 'json').fail(function (xhr, status, error) {
  164 + console.error(error);
  165 + });
  166 + }
140 } 167 }
141 \ No newline at end of file 168 \ No newline at end of file