Blame view

src/lib/models/discount.php 5.37 KB
9586c455   Alex Savenko   base
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  <?php
  /**
   * Created by PhpStorm.
   * User: Alex Savenko
   * Date: 20.12.2016
   * Time: 13:39
   */
  
  namespace models;
  
  
  class discount extends \db
  {
  
      /**
       * Get all discounts
       * @return array
       */
      public function getAllData()
      {
  
          return $this->get(
              '
                  SELECT * FROM
83008cdb   Alex Savenko   disocount => disc...
25
                      public.discount
9586c455   Alex Savenko   base
26
27
28
29
30
31
32
33
34
35
              '
              ,
              [
              ],
              -1
          );
      }
  
  
      /**
31e089d6   Alex Savenko   status
36
       * Get discount
9586c455   Alex Savenko   base
37
38
39
40
41
42
43
44
       * @param $id
       * @return array
       */
      public function getOneData($id)
      {
          return $this->get(
              '
                  SELECT *
83008cdb   Alex Savenko   disocount => disc...
45
                  FROM public.discount
9586c455   Alex Savenko   base
46
47
48
49
50
51
52
53
54
55
                  WHERE
                      id = :id
              ',
              [
                  'id' => $id
              ],
              -1
          );
      }
  
31e089d6   Alex Savenko   status
56
57
58
59
60
61
62
      /**
       * Get discount indication status
       * @param $id
       * @return array
       */
      public function getStatus($id) {
  
e992e0be   Alex Savenko   status
63
          $status = $this->get(
31e089d6   Alex Savenko   status
64
65
66
67
68
69
70
71
72
73
74
75
              '
                  SELECT status
                  FROM public.discount
                  WHERE
                      id = :id
              ',
              [
                  'id' => $id
              ],
              -1
          );
  
e992e0be   Alex Savenko   status
76
77
          return $status[0]['status'];
  
31e089d6   Alex Savenko   status
78
79
      }
  
9586c455   Alex Savenko   base
80
81
  
      /**
e0dcb7a3   Alex Savenko   prices
82
       * Get actual discount
e0dcb7a3   Alex Savenko   prices
83
84
       * @return array
       */
138315b3   Alex Savenko   prices
85
      public function getActiveData()
e0dcb7a3   Alex Savenko   prices
86
87
88
89
90
91
      {
          return $this->get(
              '
                  SELECT *
                  FROM public.discount
                  WHERE
1ebf6408   Alex Savenko   status
92
93
                      status = 1
                      AND
e0dcb7a3   Alex Savenko   prices
94
95
96
                      current_timestamp > start_date
                      AND
                      current_timestamp < end_date
69bb2148   Alex Savenko   prices
97
                  LIMIT 1
e0dcb7a3   Alex Savenko   prices
98
99
100
                      
              ',
              [
e0dcb7a3   Alex Savenko   prices
101
102
103
104
105
106
107
              ],
              -1
          );
      }
  
  
      /**
31e089d6   Alex Savenko   status
108
       * Delete discount
9586c455   Alex Savenko   base
109
110
111
112
113
114
115
116
       * @param $id
       * @return bool
       */
      public function deleteData($id)
      {
          return $this->exec(
              '   DELETE
                  FROM
83008cdb   Alex Savenko   disocount => disc...
117
                      public.discount
9586c455   Alex Savenko   base
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
                  WHERE
                      id  = :id
              ',
              [
                  'id' => $id
              ]
          );
      }
  
      /**
       * Add new discount
       * @param $data
       * @return array
       */
      public function addData($data)
      {
  
          return $this->get(
              '
                  INSERT INTO
83008cdb   Alex Savenko   disocount => disc...
138
                      public.discount
9586c455   Alex Savenko   base
139
140
141
142
143
                          (
                            name,
                            discount,
                            description,
                            start_date,
31e089d6   Alex Savenko   status
144
                            end_date,
9ac2df32   Alex Savenko   products pick
145
146
                            status,
                            group_ids
9586c455   Alex Savenko   base
147
148
149
150
151
152
153
                          )
                          VALUES
                          (
                            :name,
                            :discount,
                            :description,
                            :start_date,
31e089d6   Alex Savenko   status
154
                            :end_date,
768877ce   Alex Savenko   products pick
155
156
                            :status,
                            :group_ids
9586c455   Alex Savenko   base
157
158
159
160
161
162
163
164
                          )
                          RETURNING id
              ',
              [
                  'name' => $data['name'],
                  'discount' => $data['discount'],
                  'description' => $data['description'],
                  'start_date' => $data['start_date'],
31e089d6   Alex Savenko   status
165
                  'end_date' => $data['end_date'],
8b86b4cf   Alex Savenko   products pick
166
                  'group_ids' => !empty($data['group_ids']) ? '{'. implode(', ', $data['group_ids']) . '}' : null,
6a4ff8f9   Alex Savenko   products pick
167
                  'status' => $data['status']
9586c455   Alex Savenko   base
168
169
170
171
172
173
174
175
              ],
              -1
          );
  
  
      }
  
      /**
31e089d6   Alex Savenko   status
176
       * Update discount
9586c455   Alex Savenko   base
177
178
179
180
181
182
183
184
185
186
       * @param $data
       * @param $id
       * @return bool
       */
      public function updateData($data, $id)
      {
  
          return $this->exec(
              '
                  UPDATE
83008cdb   Alex Savenko   disocount => disc...
187
                      public.discount
9586c455   Alex Savenko   base
188
189
190
191
192
                  SET
                      name = :name,
                      discount = :discount,
                      description = :description,
                      start_date = :start_date,
31e089d6   Alex Savenko   status
193
                      end_date = :end_date,
f992445a   Alex Savenko   products pick
194
195
                      status = :status,
                      group_ids = :group_ids
9586c455   Alex Savenko   base
196
197
198
199
200
201
202
203
204
                  WHERE
                      id  = :id
              ',
              [
                  'name' => $data['name'],
                  'discount' => $data['discount'],
                  'description' => $data['description'],
                  'start_date' => $data['start_date'],
                  'end_date' => $data['end_date'],
31e089d6   Alex Savenko   status
205
                  'status' => $data['status'],
4b1cc171   Alex Savenko   products pick
206
                  'group_ids' => !empty($data['group_ids']) ? '{'. implode(', ', $data['group_ids']) . '}' : null,
9586c455   Alex Savenko   base
207
208
209
                  'id' => $id
              ]
          );
be1609ed   Alex Savenko   status
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
  
      }
  
      /**
       * Switch status indicator
       * @param bool $status
       * @param $id
       * @return bool
       */
      public function updateStatus($status, $id) {
  
          return $this->exec(
              '
                  UPDATE
                      public.discount
                  SET
                      status = :status
                  WHERE
                      id  = :id
              ',
              [
                  'status' => $status,
                  'id' => $id
              ]
          );
  
9586c455   Alex Savenko   base
236
237
238
239
240
241
242
243
244
245
246
247
248
      }
  
      /**
       * Count all discounts
       * @return array
       */
      public function countData()
      {
          return $this->get(
              '
                  SELECT
                      COUNT(id) AS total
                  FROM
83008cdb   Alex Savenko   disocount => disc...
249
                      public.discount
9586c455   Alex Savenko   base
250
251
252
253
254
255
256
257
258
              ',
              [
  
              ],
              -1
          );
      }
  
  }