From 6a2e27dbaacb8bf70dd1e50fa0ec373bd9361af3 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 22 Dec 2016 14:46:41 +0200 Subject: [PATCH] price display basket --- src/app/frontend/controllers/MenuController.php | 64 ++++++++++++++++++++++++++++++++++------------------------------ src/lib/common.php | 57 +++++++++++++++++++++++++-------------------------------- 2 files changed, 59 insertions(+), 62 deletions(-) diff --git a/src/app/frontend/controllers/MenuController.php b/src/app/frontend/controllers/MenuController.php index d64292b..70665fb 100644 --- a/src/app/frontend/controllers/MenuController.php +++ b/src/app/frontend/controllers/MenuController.php @@ -17,25 +17,22 @@ class MenuController extends \controllers\ControllerBase return $this->response->redirect('dealer/cart'); } - $lang_url = $this->seoUrl->getChangeLangUrl(); - $in_cart = $this->session->get('in_cart', []); - $customer_id = $this->session->get('id'); - $customer_email = $this->session->get('customer_email'); - + $lang_url = $this->seoUrl->getChangeLangUrl(); + $in_cart = $this->session->get('in_cart', []); + $customer_id = $this->session->get('id'); + $customer_email = $this->session->get('customer_email'); $session_promo_code = $this->session->get('promo_code'); + $customer = !empty( $customer_id ) ? $this->models->getCustomers()->getCustomer( $customer_id ) : []; - $customer = !empty( $customer_id ) ? $this->models->getCustomers()->getCustomer( $customer_id ) : []; - $this->session->set( 'return_url', 'basket' ); // для redirect после авторизации на соц сетях + $this->session->set( 'return_url', 'basket' ); // для redirect после авторизации на соц сетях - $items = []; - $total_price = 0; - $err = 0; - - $cities_ = $this->novaposhta->city(); + $items = []; + $total_price = 0; + $err = 0; + $cities_ = $this->novaposhta->city(); foreach( $cities_->item as $c ) { - $cities[strval($c->CityID)] = strval($c->Description); } @@ -43,24 +40,36 @@ class MenuController extends \controllers\ControllerBase { $cart = $this->common->getCartItems($in_cart, $this->lang_id); + //promocode if(!empty($session_promo_code)) { if($this->common->applyPromoCode($session_promo_code, $cart['items'])) { $this->common->countOrderSum($cart); $cart['total_price'] = $cart['total_sum']; } } - $total_price = $cart['total_price']; - $items = $cart['items']; - $items_ = $cart['items_']; - } + //discount + $discount = $this->getDi()->get('models')->getDiscount()->getActiveData(); + if (!empty($discount)) { + $discount = $discount[0]; + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); + $discount['group_ids'] = explode(',', $discount['group_ids']); + } + if ($this->common->applyPromoCode($discount, $cart['items'])) { + $this->common->countOrderSum($cart); + $cart['total_price'] = $cart['total_sum']; + } + $total_price = $cart['total_price']; + $items = $cart['items']; + $items_ = $cart['items_']; + } if ( $this->request->isPost() ) { $order['email'] = $this->request->getPost('login_email', 'string', NULL ); $order['passwd'] = $this->request->getPost('login_passwd', 'string', NULL ); - $promo_code = $this->request->getPost('promo_code', 'string', NULL ); if(empty($session_promo_code)) { @@ -73,8 +82,8 @@ class MenuController extends \controllers\ControllerBase $order_items = $this->request->getPost('count_items', NULL, [] ); $order_color = $this->request->getPost('color', NULL, [] ); - $order_size = $this->request->getPost('size', NULL, [] ); - $order_is = $this->request->getPost('is', NULL, [] ); + $order_size = $this->request->getPost('size', NULL, [] ); + $order_is = $this->request->getPost('is', NULL, [] ); $order['total_sum'] = 0; foreach( $order_items as $key => $val ) @@ -83,15 +92,12 @@ class MenuController extends \controllers\ControllerBase $items_[$key]['total_price'] = round($val*$items_[$key]['price2'], 1); if(isset($order_color[$key])) - $items_[$key]['color'] = $order_color[$key]; + $items_[$key]['color'] = $order_color[$key]; - $items_[$key]['size'] = $order_size[$key]; - $items_[$key]['is'] = $order_is[$key]; - + $items_[$key]['size'] = $order_size[$key]; + $items_[$key]['is'] = $order_is[$key]; $order['items'][] = $items_[$key]; $order['total_sum'] += $items_[$key]['total_price']; - - $item_id_in_cart = $this->common->array_column( $in_cart, 'item_id' ); if( in_array( $key, $item_id_in_cart ) ) @@ -106,9 +112,10 @@ class MenuController extends \controllers\ControllerBase } } - $order['total_sum'] = round( $order['total_sum'], 1 ); + $order['total_sum'] = round( $order['total_sum'], 1 ); $this->session->set( 'in_cart', $in_cart ); + if ( !empty( $order['email'] ) && !empty( $order['passwd'] ) ) { @@ -130,8 +137,6 @@ class MenuController extends \controllers\ControllerBase $this->flash->success($this->languages->getTranslation()->_("please_change_the_password")); $this->session->set( 'customer_email', $order['email'] ); return $this->response->redirect([ 'for' => 'finish_registration', 'language' => $this->lang_name ]); - - } } @@ -251,7 +256,6 @@ class MenuController extends \controllers\ControllerBase return $this->response->redirect([ 'for' => 'basket', 'language' => $this->lang_name ]); } } - } $static_page_alias = '/basket'. $this->lang_name; diff --git a/src/lib/common.php b/src/lib/common.php index 7d93167..e61d153 100644 --- a/src/lib/common.php +++ b/src/lib/common.php @@ -1229,24 +1229,23 @@ namespace } public function getCartItems($in_cart, $lang_id, $special_user = null) { - $result = []; - $total_price = 0; - $item_ids = $this->array_column( $in_cart, 'item_id' ); - $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); - $groups_ids = $this->array_column( $items, 'group_id' ); - $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); - $colors = array_unique($this->array_column( $groups_data, 'color_id' )); - $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); + $result = []; + $total_price = 0; + $item_ids = $this->array_column( $in_cart, 'item_id' ); + $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); + $groups_ids = $this->array_column( $items, 'group_id' ); + $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); + $colors = array_unique($this->array_column( $groups_data, 'color_id' )); + $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); + foreach($color_info as $k =>$v){ $colors_info[$v['id']] = $v; } - foreach($groups_data as $k =>$v){ if($groups_data[$k]['color_id'] != 0){ $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; - } else { $groups_data[$k]['color'] = 0; $groups_data[$k]['absolute_color'] = 0; @@ -1257,9 +1256,7 @@ namespace $groups_data[$v['id']] = $v; } - foreach ( $in_cart as $c ) - { - + foreach ( $in_cart as $c ) { $count_item[$c['item_id']] = $c['count_items']; } @@ -1269,14 +1266,9 @@ namespace } } - - - foreach ( $items as $k => $i ) - { - $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; - $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); - - + foreach ( $items as $k => $i ) { + $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; + $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); if(isset($i['prices'][0])) { $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); @@ -1285,24 +1277,25 @@ namespace $items[$k]['total_price'] = round($count_item[$i['id']] * $i['price2'], 2); } - $items[$k]['count'] = $count_item[$i['id']]; - $total_price += $items[$k]['total_price']; - $items[$k]['color'] = $groups_data[$i['id']]['color']; - $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; - $items_[$i['id']] = $items[$k]; + $items[$k]['count'] = $count_item[$i['id']]; + $total_price += $items[$k]['total_price']; + $items[$k]['color'] = $groups_data[$i['id']]['color']; + $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; + $items_[$i['id']] = $items[$k]; } - $total_price = round( $total_price, 2 ); + $total_price = round( $total_price, 2 ); + $result['total_price'] = $total_price; + $result['items'] = $items; + $result['items_'] = $items_; - $result['total_price'] = $total_price; - $result['items'] = $items; - $result['items_'] = $items_; return $result; } - public function countOrderSum(&$order) { + public function countOrderSum(&$order) + { $sum = 0; - foreach($order['items'] as $k => $item) { + foreach ($order['items'] as $k => $item) { $sum += $item['total_price']; } $order['total_sum'] = $sum; -- libgit2 0.21.4