Blame view

src/lib/models/basket.php 7.37 KB
f723ca00   Alex Savenko   test
1
2
3
4
5
6
7
8
9
10
11
  <?php
  /**
   * Created by PhpStorm.
   * User: Alex Savenko
   * Date: 12.01.2017
   * Time: 12:59
   */
  
  namespace models;
  
  
9329fda8   Alex Savenko   updating records
12
13
  use Phalcon\Forms\Element\Select;
  
f723ca00   Alex Savenko   test
14
15
  class basket extends \db
  {
8ac8b542   Alex Savenko   rework
16
  
9329fda8   Alex Savenko   updating records
17
      /**
8440206a   Alex Savenko   debugging
18
19
20
       * @param   int     $user_id
       * @param   bool    $letter
       * @return  array
9329fda8   Alex Savenko   updating records
21
       */
8ac8b542   Alex Savenko   rework
22
      public function addUser($user_id, $letter) {
f723ca00   Alex Savenko   test
23
  
8ac8b542   Alex Savenko   rework
24
          return $this->get(
f723ca00   Alex Savenko   test
25
26
27
28
              '
                  INSERT INTO
                      public.basket
                          (
a0b0342d   Alex Savenko   back to user_id
29
                            user_id,
f723ca00   Alex Savenko   test
30
31
32
33
34
                            letter,
                            last_mod
                          )
                          VALUES
                          (
a0b0342d   Alex Savenko   back to user_id
35
                            :user_id,
f723ca00   Alex Savenko   test
36
37
38
                            :letter,
                            CURRENT_TIMESTAMP
                          )
c99a63b0   Alex Savenko   return fix
39
                          RETURNING user_id
f723ca00   Alex Savenko   test
40
41
              ',
              [
8ac8b542   Alex Savenko   rework
42
43
                  'user_id'       => $user_id,
                  'letter'        => $letter
f723ca00   Alex Savenko   test
44
45
46
47
              ],
              -1
          );
  
8ac8b542   Alex Savenko   rework
48
49
50
      }
  
      /**
8440206a   Alex Savenko   debugging
51
52
53
       * @param   int     $user_id
       * @param   bool    $letter
       * @return  bool
8ac8b542   Alex Savenko   rework
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
       */
      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
              ]
          );
  
      }
  
3c014fd3   Alex Savenko   delete from DB af...
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
      /**
       * @param   int     $user_id
       * @return  bool
       */
      public function deleteUser($user_id) {
  
          return $this->exec(
              '
                  DELETE 
                  FROM
                      public.basket
                  WHERE
                      user_id = :user_id
              ',
              [
                  'user_id' => $user_id
              ]
          );
  
      }
8440206a   Alex Savenko   debugging
96
  
8ac8b542   Alex Savenko   rework
97
      /**
8440206a   Alex Savenko   debugging
98
99
100
101
       * @param   int     $user_id
       * @param   int     $item_id
       * @param   int     $count_items
       * @return  array
8ac8b542   Alex Savenko   rework
102
       */
8440206a   Alex Savenko   debugging
103
      public function addItem($user_id, $item_id, $count_items) {
8ac8b542   Alex Savenko   rework
104
105
106
  
          return $this->get(
              '
ee508bba   Alex Savenko   returm remove
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
                      INSERT INTO
                          public.basket_items
                              (
                                user_id,
                                item_id,
                                count
                              )
                              VALUES
                              (
                                :user_id,
                                :item_id,
                                :count
                              )
                              RETURNING id
                  ',
8ac8b542   Alex Savenko   rework
122
123
124
125
126
127
128
129
130
131
132
              [
                  'user_id'   => $user_id,
                  'item_id'   => $item_id,
                  'count'     => $count_items
              ],
              -1
          );
  
      }
  
      /**
8440206a   Alex Savenko   debugging
133
134
135
136
       * @param   int     $user_id
       * @param   int     $item_id
       * @param   int     $count_items
       * @return  array
8ac8b542   Alex Savenko   rework
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
       */
      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
          );
  
      }
  
      /**
8440206a   Alex Savenko   debugging
164
165
       * @param   int     $user_id
       * @return  bool
8ac8b542   Alex Savenko   rework
166
167
168
169
170
       */
      public function deleteAllItems($user_id) {
  
          return $this->exec(
              '
24048434   Alex Savenko   fix
171
172
                  DELETE 
                  FROM
8ac8b542   Alex Savenko   rework
173
174
175
176
177
178
179
180
181
182
183
184
                      public.basket_items
                  WHERE
                      user_id = :user_id
              ',
              [
                  'user_id' => $user_id
              ]
          );
  
      }
  
      /**
0914b200   Alex Savenko   debugging
185
186
       * @param   int     $user_id
       * @return  bool
fed20fe6   Alex Savenko   updating records
187
188
       */
      public function checkUserExist($user_id) {
0914b200   Alex Savenko   debugging
189
  
8a8db709   Alex Savenko   updating records
190
          $query = $this->get(
9329fda8   Alex Savenko   updating records
191
192
193
194
195
196
197
198
199
200
201
202
              '
                  SELECT *
                  FROM public.basket
                  WHERE
                    user_id = :user_id
                  LIMIT 1
              ',
              [
                  'user_id' => $user_id
              ],
              -1
          );
8a8db709   Alex Savenko   updating records
203
204
205
206
207
208
          if (!empty($query[0]['id'])) {
              return true;
          }
          else {
              return false;
          }
0914b200   Alex Savenko   debugging
209
  
f723ca00   Alex Savenko   test
210
      }
9329fda8   Alex Savenko   updating records
211
  
fed20fe6   Alex Savenko   updating records
212
      /**
8440206a   Alex Savenko   debugging
213
214
215
       * @param   int     $user_id
       * @param   int     $item_id
       * @return  bool
fed20fe6   Alex Savenko   updating records
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
       */
      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;
          }
      }
  
b504d880   Alex Savenko   update record usi...
242
      /**
c99e7b14   Alex Savenko   debugging
243
244
245
       * @param   int     $user_id
       * @param   array   $items
       * @param   bool    $letter
4988ce85   Alex Savenko   rework
246
247
       * @return  string
       */
c99e7b14   Alex Savenko   debugging
248
      public function addData($user_id, $items, $letter) {
4988ce85   Alex Savenko   rework
249
  
c99e7b14   Alex Savenko   debugging
250
251
252
253
254
          $query_basket =  $this->addUser($user_id, $letter);
  
          foreach ($items as $item) {
  
              $this->addItem($user_id, $item['item_id'], $item['count_items']);
4988ce85   Alex Savenko   rework
255
  
4988ce85   Alex Savenko   rework
256
257
258
259
260
261
262
          }
  
          return 'User #'.$query_basket[0]['user_id'].' added';
  
      }
  
      /**
c99e7b14   Alex Savenko   debugging
263
264
265
266
       * @param   int     $user_id
       * @param   array   $items
       * @param   bool    $letter
       * @return  string
b504d880   Alex Savenko   update record usi...
267
       */
c99e7b14   Alex Savenko   debugging
268
      public function updateData($user_id, $items, $letter) {
8ac8b542   Alex Savenko   rework
269
270
  
          //update user last mod
73d31092   Alex Savenko   fix update data (...
271
272
273
274
275
276
          if (!empty($items)) {
              $query_basket =  $this->updateUser($user_id, $letter);
          }
          else {
              $query_basket =  $this->deleteUser($user_id, $letter);
          }
8ac8b542   Alex Savenko   rework
277
278
  
          //clear deprecated items
c99e7b14   Alex Savenko   debugging
279
          $this->deleteAllItems($user_id);
fed20fe6   Alex Savenko   updating records
280
  
c99e7b14   Alex Savenko   debugging
281
          foreach ($items as $item) {
8ac8b542   Alex Savenko   rework
282
283
  
              //add items 1 by 1
c99e7b14   Alex Savenko   debugging
284
              $this->addItem($user_id, $item['item_id'], $item['count_items']);
8ac8b542   Alex Savenko   rework
285
  
fed20fe6   Alex Savenko   updating records
286
287
288
          }
          return 'User #'.$query_basket[0]['user_id'].' updated';
      }
b504d880   Alex Savenko   update record usi...
289
  
0914b200   Alex Savenko   debugging
290
291
292
293
294
      /**
       * @param   int     $user_id
       * @param   array   $items
       * @param   bool    $letter
       */
c99e7b14   Alex Savenko   debugging
295
      public function updateBasket($user_id, $items, $letter) {
8ac8b542   Alex Savenko   rework
296
  
b504d880   Alex Savenko   update record usi...
297
          if ($this->checkUserExist($user_id)) {
8ac8b542   Alex Savenko   rework
298
  
c99e7b14   Alex Savenko   debugging
299
              $this->updateData($user_id, $items, $letter);
8ac8b542   Alex Savenko   rework
300
  
b504d880   Alex Savenko   update record usi...
301
302
          }
          else {
8ac8b542   Alex Savenko   rework
303
  
c99e7b14   Alex Savenko   debugging
304
              $this->addData($user_id, $items, $letter);
8ac8b542   Alex Savenko   rework
305
  
b504d880   Alex Savenko   update record usi...
306
          }
8ac8b542   Alex Savenko   rework
307
  
b504d880   Alex Savenko   update record usi...
308
309
      }
  
3c014fd3   Alex Savenko   delete from DB af...
310
      /**
7b111c53   Alex Savenko   generating task base
311
       * @param   int     $user_id
3c014fd3   Alex Savenko   delete from DB af...
312
313
314
315
316
317
318
319
       */
      public function deleteBasket($user_id) {
  
          $this->deleteUser($user_id);
          $this->deleteAllItems($user_id);
  
      }
  
46391d14   Alex Savenko   generate letter
320
321
322
      /**
       * @return array
       */
d543532d   Alex Savenko   testing
323
      public function getAbandonedUsers() {
7b111c53   Alex Savenko   generating task base
324
  
4df3d72a   Alex Savenko   testing
325
          return $this->get(
15cb3366   Alex Savenko   testing
326
              "
d543532d   Alex Savenko   testing
327
328
                  SELECT *
                  FROM public.basket
155f922f   Alex Savenko   testing
329
                  WHERE
c420426c   Alex Savenko   abandoned interva...
330
                    last_mod < CURRENT_TIMESTAMP - INTERVAL '1 day'
6659eac6   Alex Savenko   letter indicator
331
332
                  AND
                    letter = FALSE
15cb3366   Alex Savenko   testing
333
              ",
d543532d   Alex Savenko   testing
334
335
              [
  
7af22b8a   Alex Savenko   testing
336
              ]
d543532d   Alex Savenko   testing
337
          );
7b111c53   Alex Savenko   generating task base
338
  
7b111c53   Alex Savenko   generating task base
339
      }
d543532d   Alex Savenko   testing
340
  
f723ca00   Alex Savenko   test
341
  }