Blame view

src/app/backend/controllers/DiscountController.php 6.44 KB
9586c455   Alex Savenko   base
1
2
3
4
5
6
7
8
9
10
11
12
  <?php
  /**
   * Created by PhpStorm.
   * User: Alex Savenko
   * Date: 20.12.2016
   * Time: 13:35
   */
  
  namespace controllers;
  
  use Phalcon\Mvc\Controller;
  
c4094a95   Alex Savenko   add/edit
13
14
15
16
17
  /**
   * Class DiscountController
   * @package controllers
   * @property \models models
   */
9586c455   Alex Savenko   base
18
19
20
  class DiscountController extends Controller
  {
  
c4094a95   Alex Savenko   add/edit
21
22
23
24
      /**
       * Displays all discounts with pagination
       * @return \Phalcon\Http\ResponseInterface
       */
9586c455   Alex Savenko   base
25
26
27
28
29
30
31
32
33
34
      public function indexAction() {
  
          if( !$this->session->get('isAdminAuth') ) {
  
              return $this->response->redirect([ 'for' => 'admin_login' ]);
  
          }
  
          $params         = $this->dispatcher->getParams();
          $page           = !empty( $params['page']  ) ? $params['page'] : 1;
9586c455   Alex Savenko   base
35
36
37
          $data           = $this->models->getDiscount()->getAllData();
          $total          = $this->models->getDiscount()->countData();
  
5d41bb08   Alex Savenko   add/edit
38
39
          if( $total['0']['total'] > \config::get( 'limits/items') ) {
  
9586c455   Alex Savenko   base
40
41
42
43
44
45
46
47
48
              $paginate = $this->common->paginate(
                  [
                      'page'              => $page,
                      'items_per_page'    => \config::get( 'limits/admin_orders', 5),
                      'total_items'       => $total[0]['total'],
                      'url_for'           => [ 'for' => 'discount_index_paged', 'page' => $page ],
                      'index_page'        => 'discount_index'
                  ], true
              );
5d41bb08   Alex Savenko   add/edit
49
  
9586c455   Alex Savenko   base
50
51
52
53
54
55
56
57
          }
          $this->view->setVars([
              'info' => $data,
              'paginate' => !empty($paginate['output']) ? $paginate['output'] : '' ,
          ]);
  
      }
  
c4094a95   Alex Savenko   add/edit
58
59
60
61
62
63
64
      /**
       * Add discount form
       * @return \Phalcon\Http\ResponseInterface
       */
      public function addAction() {
  
          $titlecmp = function ($a, $b) {
5d41bb08   Alex Savenko   add/edit
65
  
c4094a95   Alex Savenko   add/edit
66
              return strcasecmp($a['title'], $b['title']);
5d41bb08   Alex Savenko   add/edit
67
  
c4094a95   Alex Savenko   add/edit
68
          };
5d41bb08   Alex Savenko   add/edit
69
  
c4094a95   Alex Savenko   add/edit
70
          $lang_id = 1; // ua language
5d41bb08   Alex Savenko   add/edit
71
72
          if( !$this->session->get('isAdminAuth') ) {
  
c4094a95   Alex Savenko   add/edit
73
              return $this->response->redirect([ 'for' => 'admin_login' ]);
5d41bb08   Alex Savenko   add/edit
74
  
c4094a95   Alex Savenko   add/edit
75
76
          }
  
5d41bb08   Alex Savenko   add/edit
77
          if( $this->request->isPost() ) {
c4094a95   Alex Savenko   add/edit
78
79
80
81
82
83
84
  
              $data['name']           = $this->request->getPost('name', 'string', NULL );
              $data['description']    = $this->request->getPost('description');
              $data['start_date']     = $this->request->getPost('start_date');
              $data['end_date']       = $this->request->getPost('end_date');
              $data['discount']       = $this->request->getPost('discount', 'string', NULL );
  
5d41bb08   Alex Savenko   add/edit
85
86
              if($this->models->getDiscount()->addData( $data )) {
  
c4094a95   Alex Savenko   add/edit
87
88
                  $this->flash->success( 'Сохранение прошло успешно' );
                  return $this->response->redirect([ 'for' => 'discount_index' ]);
5d41bb08   Alex Savenko   add/edit
89
  
c4094a95   Alex Savenko   add/edit
90
              }
5d41bb08   Alex Savenko   add/edit
91
92
              else {
  
c4094a95   Alex Savenko   add/edit
93
                  $this->flash->error( 'Выберите товары для промокода' );
5d41bb08   Alex Savenko   add/edit
94
  
c4094a95   Alex Savenko   add/edit
95
96
97
98
99
100
101
102
103
104
105
106
              }
          }
  
          $catalog_temp = $this->common->getTypeSubtype1(NULL, $lang_id)['catalog'];
          usort($catalog_temp, $titlecmp);
  
  
          $this->view->setVar('catalog_temp', $catalog_temp);
          $this->view->pick( 'discount/addEdit' );
  
      }
  
5d41bb08   Alex Savenko   add/edit
107
108
109
110
111
112
113
114
115
116
117
118
      /**
       * Delete discount by $id
       * @param $id
       * @return \Phalcon\Http\ResponseInterface
       */
      public function deleteAction($id) {
  
          if( !$this->session->get('isAdminAuth') ) {
  
              return $this->response->redirect([ 'for' => 'admin_login' ]);
  
          }
31e089d6   Alex Savenko   status
119
  
5d41bb08   Alex Savenko   add/edit
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
150
151
          $this->models->getDiscount()->deleteData($id);
  
          return $this->response->redirect([ 'for' => 'discount_index' ]);
  
      }
  
      /**
       * Update discount form
       * @param $id
       * @return \Phalcon\Http\ResponseInterface
       */
      public function updateAction($id) {
  
          $titlecmp = function ($a, $b) {
  
              return strcasecmp($a['title'], $b['title']);
  
          };
  
          $lang_id = 1; // ua language
  
          if( !$this->session->get('isAdminAuth') ) {
  
              return $this->response->redirect([ 'for' => 'admin_login' ]);
  
          }
  
          $data = $this->models->getDiscount()->getOneData($id);
  
          if( $this->request->isPost() ) {
  
              $data[0]['name']        = $this->request->getPost('name', 'string', NULL );
2545a440   Alex Savenko   prices
152
              $data[0]['discount']    = $this->request->getPost('discount', 'int', 0 );
5d41bb08   Alex Savenko   add/edit
153
154
155
156
              $data[0]['start_date']  = $this->request->getPost('start_date');
              $data[0]['end_date']    = $this->request->getPost('end_date');
              $data[0]['description'] = $this->request->getPost('description');
  
28a7aba8   Alex Savenko   prices
157
              if ($data[0]['discount'] > 100) {
5d41bb08   Alex Savenko   add/edit
158
  
28a7aba8   Alex Savenko   prices
159
                  $this->flash->error( 'Размер скидки не может привышать 100' );
5d41bb08   Alex Savenko   add/edit
160
161
162
163
  
              }
              else {
  
28a7aba8   Alex Savenko   prices
164
165
166
167
168
169
170
171
172
173
174
                  if($this->models->getDiscount()->updateData( $data[0], $id ) ) {
  
                      $this->flash->success( 'Сохранение прошло успешно' );
                      return $this->response->redirect([ 'for' => 'discount_index' ]);
  
                  }
                  else {
  
                      $this->flash->error( 'Update error.' );
  
                  }
5d41bb08   Alex Savenko   add/edit
175
176
177
  
              }
  
28a7aba8   Alex Savenko   prices
178
  
5d41bb08   Alex Savenko   add/edit
179
180
          }
  
26d1e4f6   Alex Savenko   add/edit
181
182
183
184
          $catalog_temp = $this->common->getTypeSubtype1(NULL, $lang_id)['catalog'];
          usort($catalog_temp, $titlecmp);
  
          foreach($catalog_temp as &$group) {
0fd83787   Alex Savenko   add/edit
185
  
26d1e4f6   Alex Savenko   add/edit
186
              usort($group['sub'], $titlecmp);
0fd83787   Alex Savenko   add/edit
187
  
26d1e4f6   Alex Savenko   add/edit
188
189
190
          }
  
          if(!empty($data[0]['group_ids'][0])) {
0fd83787   Alex Savenko   add/edit
191
  
26d1e4f6   Alex Savenko   add/edit
192
193
              $groups = $this->models->getItems()->getItemsByIds($lang_id, $data[0]['group_ids']);
              usort($groups, $titlecmp);
0fd83787   Alex Savenko   add/edit
194
  
26d1e4f6   Alex Savenko   add/edit
195
196
197
          }
  
          foreach($data as $k => $i) {
0fd83787   Alex Savenko   add/edit
198
  
26d1e4f6   Alex Savenko   add/edit
199
200
              if(isset($i['image']) && !empty($i['image']))
                  $data[$k]['image'] = $this->storage->getPhotoURL($i['image'], 'promo_codes', 'original');
0fd83787   Alex Savenko   add/edit
201
  
26d1e4f6   Alex Savenko   add/edit
202
          }
39420bfc   Alex Savenko   add/edit
203
  
26d1e4f6   Alex Savenko   add/edit
204
  
5d41bb08   Alex Savenko   add/edit
205
206
207
          $this->view->pick( 'discount/addEdit' );
  
          $this->view->setVars([
26d1e4f6   Alex Savenko   add/edit
208
              'page' => $data,
39420bfc   Alex Savenko   add/edit
209
210
              'catalog_temp' => $catalog_temp,
              'groups' => !empty($groups) ? $groups : null
5d41bb08   Alex Savenko   add/edit
211
212
213
          ]);
  
      }
31e089d6   Alex Savenko   status
214
215
216
217
218
219
220
221
222
223
224
  
      public function switchAction($id) {
  
          if( !$this->session->get('isAdminAuth') ) {
  
              return $this->response->redirect([ 'for' => 'admin_login' ]);
  
          }
  
          $status = $this->models->getDiscount()->getStatus($id);
  
c97a48c7   Alex Savenko   status
225
226
          empty($status) ? $status = $status[0] : $status = 'Cann\'t get status';
  
31e089d6   Alex Savenko   status
227
228
          if ($status == 1) {
  
be1609ed   Alex Savenko   status
229
              $this->models->getDiscount()->updateStatus('0', $id);
31e089d6   Alex Savenko   status
230
231
232
233
  
          }
          elseif ($status == 0) {
  
be1609ed   Alex Savenko   status
234
              $this->models->getDiscount()->updateStatus('1', $id);
31e089d6   Alex Savenko   status
235
236
  
          }
c97a48c7   Alex Savenko   status
237
238
239
240
241
          else {
  
              $this->flash->error($status);
  
          }
31e089d6   Alex Savenko   status
242
243
244
245
  
          return $this->response->redirect([ 'for' => 'discount_index' ]);
  
      }
9586c455   Alex Savenko   base
246
  }