diff --git a/src/lib/models/basket.php b/src/lib/models/basket.php index 58a93e8..f6de477 100644 --- a/src/lib/models/basket.php +++ b/src/lib/models/basket.php @@ -13,14 +13,15 @@ use Phalcon\Forms\Element\Select; class basket extends \db { + /** - * @param array $data - * @return string + * @param $user_id + * @param $letter + * @return array */ - public function addData($data) - { + public function addUser($user_id, $letter) { - $query_basket = $this->get( + return $this->get( ' INSERT INTO public.basket @@ -38,15 +39,50 @@ class basket extends \db RETURNING user_id ', [ - 'user_id' => $data['user_id'], - 'letter' => $data['letter'] + 'user_id' => $user_id, + 'letter' => $letter ], -1 ); - foreach ($data['items'] as $item) { - $this->get( - ' + } + + /** + * @param $user_id + * @param $letter + * @return bool + */ + public function updateUser($user_id, $letter) { + + return $this->exec( + ' + UPDATE + public.basket + SET + letter = :letter, + last_mod = CURRENT_TIMESTAMP + WHERE + user_id = :user_id + RETURNING user_id + ', + [ + 'user_id' => $user_id, + 'letter' => $letter + ] + ); + + } + + /** + * @param $item_id + * @param $count_items + * @param $user_id + * @return array + */ + public function addItem($item_id, $count_items, $user_id) { + + return $this->get( + ' INSERT INTO public.basket_items ( @@ -62,14 +98,79 @@ class basket extends \db ) RETURNING id ', - [ - 'user_id' => $data['user_id'], - 'item_id' => $item['item_id'], - 'count' => $item['count_items'] - ], - -1 - ); + [ + 'user_id' => $user_id, + 'item_id' => $item_id, + 'count' => $count_items + ], + -1 + ); + + } + + /** + * @param $user_id + * @param $item_id + * @param $count_items + * @return array + */ + public function updateItem($user_id, $item_id, $count_items) { + + return $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' => $user_id, + 'item_id' => $item_id, + 'count' => $count_items + ], + -1 + ); + + } + + /** + * @param $user_id + * @return bool + */ + public function deleteAllItems($user_id) { + + return $this->exec( + ' + DELETE FROM + public.basket_items + WHERE + user_id = :user_id + ', + [ + 'user_id' => $user_id + ] + ); + + } + + /** + * @param array $data + * @return string + */ + public function addData($data) { + + $query_basket = $this->addUser($data['user_id'], $data['letter']); + + foreach ($data['items'] as $item) { + $this->addItem($data['user_id'], $item['item_id'], $item['count_items']); } + return 'User #'.$query_basket[0]['user_id'].' added'; } @@ -135,73 +236,18 @@ class basket extends \db * @return string */ 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 - ); + + //update user last mod + $query_basket = $this->updateUser($data['user_id'], $data['letter']); + + //clear deprecated items + $this->deleteAllItems($data['user_id']); 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 - ); - } + + //add items 1 by 1 + addItem($data['user_id'], $item['item_id'], $item['count_items']); + } return 'User #'.$query_basket[0]['user_id'].' updated'; } @@ -211,12 +257,18 @@ class basket extends \db * @param $data */ public function updateBasket($user_id, $data){ + if ($this->checkUserExist($user_id)) { + $this->updateData($data); + } else { + $this->addData($data); + } + } } \ No newline at end of file -- libgit2 0.21.4