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,14 +13,15 @@ use Phalcon\Forms\Element\Select;
13 13
14 class basket extends \db 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 INSERT INTO 26 INSERT INTO
26 public.basket 27 public.basket
@@ -38,15 +39,50 @@ class basket extends \db @@ -38,15 +39,50 @@ class basket extends \db
38 RETURNING user_id 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 -1 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 INSERT INTO 86 INSERT INTO
51 public.basket_items 87 public.basket_items
52 ( 88 (
@@ -62,14 +98,79 @@ class basket extends \db @@ -62,14 +98,79 @@ class basket extends \db
62 ) 98 )
63 RETURNING id 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 return 'User #'.$query_basket[0]['user_id'].' added'; 174 return 'User #'.$query_basket[0]['user_id'].' added';
74 175
75 } 176 }
@@ -135,73 +236,18 @@ class basket extends \db @@ -135,73 +236,18 @@ class basket extends \db
135 * @return string 236 * @return string
136 */ 237 */
137 public function updateData($data) { 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 foreach ($data['items'] as $item) { 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 return 'User #'.$query_basket[0]['user_id'].' updated'; 252 return 'User #'.$query_basket[0]['user_id'].' updated';
207 } 253 }
@@ -211,12 +257,18 @@ class basket extends \db @@ -211,12 +257,18 @@ class basket extends \db
211 * @param $data 257 * @param $data
212 */ 258 */
213 public function updateBasket($user_id, $data){ 259 public function updateBasket($user_id, $data){
  260 +
214 if ($this->checkUserExist($user_id)) { 261 if ($this->checkUserExist($user_id)) {
  262 +
215 $this->updateData($data); 263 $this->updateData($data);
  264 +
216 } 265 }
217 else { 266 else {
  267 +
218 $this->addData($data); 268 $this->addData($data);
  269 +
219 } 270 }
  271 +
220 } 272 }
221 273
222 } 274 }
223 \ No newline at end of file 275 \ No newline at end of file