Blame view

src/lib/models/basket.php 6.04 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
      /**
8ac8b542   Alex Savenko   rework
18
19
20
       * @param $user_id
       * @param $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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
      }
  
      /**
       * @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(
              '
ee508bba   Alex Savenko   returm remove
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
                      INSERT INTO
                          public.basket_items
                              (
                                user_id,
                                item_id,
                                count
                              )
                              VALUES
                              (
                                :user_id,
                                :item_id,
                                :count
                              )
                              RETURNING id
                  ',
8ac8b542   Alex Savenko   rework
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
              [
                  '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(
              '
24048434   Alex Savenko   fix
150
151
                  DELETE 
                  FROM
8ac8b542   Alex Savenko   rework
152
153
154
155
156
157
158
159
160
161
162
163
                      public.basket_items
                  WHERE
                      user_id = :user_id
              ',
              [
                  'user_id' => $user_id
              ]
          );
  
      }
  
      /**
fed20fe6   Alex Savenko   updating records
164
165
166
167
       * @param $user_id
       * @return bool
       */
      public function checkUserExist($user_id) {
8a8db709   Alex Savenko   updating records
168
          $query = $this->get(
9329fda8   Alex Savenko   updating records
169
170
171
172
173
174
175
176
177
178
179
180
              '
                  SELECT *
                  FROM public.basket
                  WHERE
                    user_id = :user_id
                  LIMIT 1
              ',
              [
                  'user_id' => $user_id
              ],
              -1
          );
8a8db709   Alex Savenko   updating records
181
182
183
184
185
186
          if (!empty($query[0]['id'])) {
              return true;
          }
          else {
              return false;
          }
f723ca00   Alex Savenko   test
187
      }
9329fda8   Alex Savenko   updating records
188
  
fed20fe6   Alex Savenko   updating records
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
      /**
       * @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;
          }
      }
  
b504d880   Alex Savenko   update record usi...
219
      /**
c99e7b14   Alex Savenko   debugging
220
221
222
       * @param   int     $user_id
       * @param   array   $items
       * @param   bool    $letter
4988ce85   Alex Savenko   rework
223
224
       * @return  string
       */
c99e7b14   Alex Savenko   debugging
225
      public function addData($user_id, $items, $letter) {
4988ce85   Alex Savenko   rework
226
  
c99e7b14   Alex Savenko   debugging
227
228
229
230
231
          $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
232
  
4988ce85   Alex Savenko   rework
233
234
235
236
237
238
239
          }
  
          return 'User #'.$query_basket[0]['user_id'].' added';
  
      }
  
      /**
c99e7b14   Alex Savenko   debugging
240
241
242
243
       * @param   int     $user_id
       * @param   array   $items
       * @param   bool    $letter
       * @return  string
b504d880   Alex Savenko   update record usi...
244
       */
c99e7b14   Alex Savenko   debugging
245
      public function updateData($user_id, $items, $letter) {
8ac8b542   Alex Savenko   rework
246
247
  
          //update user last mod
c99e7b14   Alex Savenko   debugging
248
          $query_basket =  $this->updateUser($user_id, $letter);
8ac8b542   Alex Savenko   rework
249
250
  
          //clear deprecated items
c99e7b14   Alex Savenko   debugging
251
          $this->deleteAllItems($user_id);
fed20fe6   Alex Savenko   updating records
252
  
c99e7b14   Alex Savenko   debugging
253
          foreach ($items as $item) {
8ac8b542   Alex Savenko   rework
254
255
  
              //add items 1 by 1
c99e7b14   Alex Savenko   debugging
256
              $this->addItem($user_id, $item['item_id'], $item['count_items']);
8ac8b542   Alex Savenko   rework
257
  
fed20fe6   Alex Savenko   updating records
258
259
260
          }
          return 'User #'.$query_basket[0]['user_id'].' updated';
      }
b504d880   Alex Savenko   update record usi...
261
  
c99e7b14   Alex Savenko   debugging
262
      public function updateBasket($user_id, $items, $letter) {
8ac8b542   Alex Savenko   rework
263
  
b504d880   Alex Savenko   update record usi...
264
          if ($this->checkUserExist($user_id)) {
8ac8b542   Alex Savenko   rework
265
  
c99e7b14   Alex Savenko   debugging
266
              $this->updateData($user_id, $items, $letter);
8ac8b542   Alex Savenko   rework
267
  
b504d880   Alex Savenko   update record usi...
268
269
          }
          else {
8ac8b542   Alex Savenko   rework
270
  
c99e7b14   Alex Savenko   debugging
271
              $this->addData($user_id, $items, $letter);
8ac8b542   Alex Savenko   rework
272
  
b504d880   Alex Savenko   update record usi...
273
          }
8ac8b542   Alex Savenko   rework
274
  
b504d880   Alex Savenko   update record usi...
275
276
      }
  
f723ca00   Alex Savenko   test
277
  }