Commit 8ac8b542c356f8b08cb94e51cc52e91339075b29

Authored by Alex Savenko
1 parent a487dfdd

rework

Showing 1 changed file with 134 additions and 82 deletions   Show diff stats
src/lib/models/basket.php
... ... @@ -13,14 +13,15 @@ use Phalcon\Forms\Element\Select;
13 13  
14 14 class basket extends \db
15 15 {
  16 +
16 17 /**
17   - * @param array $data
18   - * @return string
  18 + * @param $user_id
  19 + * @param $letter
  20 + * @return array
19 21 */
20   - public function addData($data)
21   - {
  22 + public function addUser($user_id, $letter) {
22 23  
23   - $query_basket = $this->get(
  24 + return $this->get(
24 25 '
25 26 INSERT INTO
26 27 public.basket
... ... @@ -38,15 +39,50 @@ class basket extends \db
38 39 RETURNING user_id
39 40 ',
40 41 [
41   - 'user_id' => $data['user_id'],
42   - 'letter' => $data['letter']
  42 + 'user_id' => $user_id,
  43 + 'letter' => $letter
43 44 ],
44 45 -1
45 46 );
46 47  
47   - foreach ($data['items'] as $item) {
48   - $this->get(
49   - '
  48 + }
  49 +
  50 + /**
  51 + * @param $user_id
  52 + * @param $letter
  53 + * @return bool
  54 + */
  55 + public function updateUser($user_id, $letter) {
  56 +
  57 + return $this->exec(
  58 + '
  59 + UPDATE
  60 + public.basket
  61 + SET
  62 + letter = :letter,
  63 + last_mod = CURRENT_TIMESTAMP
  64 + WHERE
  65 + user_id = :user_id
  66 + RETURNING user_id
  67 + ',
  68 + [
  69 + 'user_id' => $user_id,
  70 + 'letter' => $letter
  71 + ]
  72 + );
  73 +
  74 + }
  75 +
  76 + /**
  77 + * @param $item_id
  78 + * @param $count_items
  79 + * @param $user_id
  80 + * @return array
  81 + */
  82 + public function addItem($item_id, $count_items, $user_id) {
  83 +
  84 + return $this->get(
  85 + '
50 86 INSERT INTO
51 87 public.basket_items
52 88 (
... ... @@ -62,14 +98,79 @@ class basket extends \db
62 98 )
63 99 RETURNING id
64 100 ',
65   - [
66   - 'user_id' => $data['user_id'],
67   - 'item_id' => $item['item_id'],
68   - 'count' => $item['count_items']
69   - ],
70   - -1
71   - );
  101 + [
  102 + 'user_id' => $user_id,
  103 + 'item_id' => $item_id,
  104 + 'count' => $count_items
  105 + ],
  106 + -1
  107 + );
  108 +
  109 + }
  110 +
  111 + /**
  112 + * @param $user_id
  113 + * @param $item_id
  114 + * @param $count_items
  115 + * @return array
  116 + */
  117 + public function updateItem($user_id, $item_id, $count_items) {
  118 +
  119 + return $this->get(
  120 + '
  121 + UPDATE
  122 + public.basket_items
  123 + SET
  124 + item_id = :item_id,
  125 + count = :count
  126 + WHERE
  127 + user_id = :user_id
  128 + AND
  129 + item_id = :item_id
  130 + RETURNING id
  131 + ',
  132 + [
  133 + 'user_id' => $user_id,
  134 + 'item_id' => $item_id,
  135 + 'count' => $count_items
  136 + ],
  137 + -1
  138 + );
  139 +
  140 + }
  141 +
  142 + /**
  143 + * @param $user_id
  144 + * @return bool
  145 + */
  146 + public function deleteAllItems($user_id) {
  147 +
  148 + return $this->exec(
  149 + '
  150 + DELETE FROM
  151 + public.basket_items
  152 + WHERE
  153 + user_id = :user_id
  154 + ',
  155 + [
  156 + 'user_id' => $user_id
  157 + ]
  158 + );
  159 +
  160 + }
  161 +
  162 + /**
  163 + * @param array $data
  164 + * @return string
  165 + */
  166 + public function addData($data) {
  167 +
  168 + $query_basket = $this->addUser($data['user_id'], $data['letter']);
  169 +
  170 + foreach ($data['items'] as $item) {
  171 + $this->addItem($data['user_id'], $item['item_id'], $item['count_items']);
72 172 }
  173 +
73 174 return 'User #'.$query_basket[0]['user_id'].' added';
74 175  
75 176 }
... ... @@ -135,73 +236,18 @@ class basket extends \db
135 236 * @return string
136 237 */
137 238 public function updateData($data) {
138   - $query_basket = $this->exec(
139   - '
140   - UPDATE
141   - public.basket
142   - SET
143   - letter = :letter,
144   - last_mod = CURRENT_TIMESTAMP
145   - WHERE
146   - user_id = :user_id
147   - RETURNING user_id
148   - ',
149   - [
150   - 'user_id' => $data['user_id'],
151   - 'letter' => $data['letter']
152   - ],
153   - -1
154   - );
  239 +
  240 + //update user last mod
  241 + $query_basket = $this->updateUser($data['user_id'], $data['letter']);
  242 +
  243 + //clear deprecated items
  244 + $this->deleteAllItems($data['user_id']);
155 245  
156 246 foreach ($data['items'] as $item) {
157   - if ($this->checkItemExist($data['user_id'], $item['item_id'])) {
158   - $query_basket_items = $this->get(
159   - '
160   - UPDATE
161   - public.basket_items
162   - SET
163   - item_id = :item_id,
164   - count = :count
165   - WHERE
166   - user_id = :user_id
167   - AND
168   - item_id = :item_id
169   - RETURNING id
170   - ',
171   - [
172   - 'user_id' => $data['user_id'],
173   - 'item_id' => $item['item_id'],
174   - 'count' => $item['count_items']
175   - ],
176   - -1
177   - );
178   - }
179   - else {
180   - $query_basket_items = $this->get(
181   - '
182   - INSERT INTO
183   - public.basket_items
184   - (
185   - user_id,
186   - item_id,
187   - count
188   - )
189   - VALUES
190   - (
191   - :user_id,
192   - :item_id,
193   - :count
194   - )
195   - RETURNING id
196   - ',
197   - [
198   - 'user_id' => $data['user_id'],
199   - 'item_id' => $item['item_id'],
200   - 'count' => $item['count_items']
201   - ],
202   - -1
203   - );
204   - }
  247 +
  248 + //add items 1 by 1
  249 + addItem($data['user_id'], $item['item_id'], $item['count_items']);
  250 +
205 251 }
206 252 return 'User #'.$query_basket[0]['user_id'].' updated';
207 253 }
... ... @@ -211,12 +257,18 @@ class basket extends \db
211 257 * @param $data
212 258 */
213 259 public function updateBasket($user_id, $data){
  260 +
214 261 if ($this->checkUserExist($user_id)) {
  262 +
215 263 $this->updateData($data);
  264 +
216 265 }
217 266 else {
  267 +
218 268 $this->addData($data);
  269 +
219 270 }
  271 +
220 272 }
221 273  
222 274 }
223 275 \ No newline at end of file
... ...