diff --git a/src/app/frontend/controllers/MenuController.php b/src/app/frontend/controllers/MenuController.php index 5376da8..6056105 100644 --- a/src/app/frontend/controllers/MenuController.php +++ b/src/app/frontend/controllers/MenuController.php @@ -496,8 +496,7 @@ class MenuController extends \controllers\ControllerBase 'letter' => '0', 'items' => $in_cart ]; - die (print_r($this->models->getBasket()->checkExist($user_id))); - if ($this->models->getBasket()->checkExist($user_id)) { + if ($this->models->getBasket()->checkUserExist($user_id)) { $this->models->getBasket()->updateData($data); } else { diff --git a/src/lib/models/basket.php b/src/lib/models/basket.php index 02e1d93..be712d6 100644 --- a/src/lib/models/basket.php +++ b/src/lib/models/basket.php @@ -14,8 +14,8 @@ use Phalcon\Forms\Element\Select; class basket extends \db { /** - * @param $data - * @return string + * @param array $data + * @return string */ public function addData($data) { @@ -74,7 +74,11 @@ class basket extends \db } - public function checkExist($user_id) { + /** + * @param $user_id + * @return bool + */ + public function checkUserExist($user_id) { $query = $this->get( ' SELECT * @@ -96,51 +100,105 @@ class basket extends \db } } -// public function updateData($data) { -// $query_basket = $this->exec( -// ' -// UPDATE -// public.basket -// SET -// letter = :letter, -// last_mod = CURRENT_TIMESTAMP -// WHERE -// user_id = :user_id -// RETURNING user_id -// ', -// [ -// 'user_id' => $data['user_id'], -// 'letter' => $data['letter'] -// ], -// -1 -// ); -// -// foreach ($data['items'] as $item) { -// $query_basket_items = $this->get( -// ' -// INSERT INTO -// public.basket_items -// ( -// user_id, -// item_id, -// count -// ) -// VALUES -// ( -// :user_id, -// :item_id, -// :count -// ) -// RETURNING id -// ', -// [ -// 'user_id' => $data['user_id'], -// 'item_id' => $item['item_id'], -// 'count' => $item['count_items'] -// ], -// -1 -// ); -// } -// return 'User #'.$query_basket[0]['user_id'].' updated'; -// } + /** + * @param $user_id + * @param $item_id + * @return bool + */ + public function checkItemExist($user_id, $item_id) { + $query = $this->get( + ' + SELECT * + FROM public.basket_items + WHERE + user_id = :user_id + AND + item_id = :item_id + LIMIT 1 + ', + [ + 'user_id' => $user_id, + 'item_id' => $item_id + ], + -1 + ); + if (!empty($query[0]['id'])) { + return true; + } + else { + return false; + } + } + + public function updateData($data) { + $query_basket = $this->exec( + ' + UPDATE + public.basket + SET + letter = :letter, + last_mod = CURRENT_TIMESTAMP + WHERE + user_id = :user_id + RETURNING user_id + ', + [ + 'user_id' => $data['user_id'], + 'letter' => $data['letter'] + ], + -1 + ); + + foreach ($data['items'] as $item) { + if ($this->checkItemExist($data['user_id'], $item['item_id'])) { + $query_basket_items = $this->get( + ' + UPDATE + public.basket_items + SET + item_id = :item_id, + count = :count + WHERE + user_id = :user_id + AND + item_id = :item_id + RETURNING id + ', + [ + 'user_id' => $data['user_id'], + 'item_id' => $item['item_id'], + 'count' => $item['count_items'] + ], + -1 + ); + } + else { + $query_basket_items = $this->get( + ' + INSERT INTO + public.basket_items + ( + user_id, + item_id, + count + ) + VALUES + ( + :user_id, + :item_id, + :count + ) + RETURNING id + ', + [ + 'user_id' => $data['user_id'], + 'item_id' => $item['item_id'], + 'count' => $item['count_items'] + ], + -1 + ); + } + } + return 'User #'.$query_basket[0]['user_id'].' updated'; + } } \ No newline at end of file -- libgit2 0.21.4