Blame view

common/modules/product/controllers/ManageController.php 12.4 KB
d8c1a2e0   Yarik   Big commit artbox
1
  <?php

36d1807a   Yarik   Big commit.
2
3
4
      

      namespace common\modules\product\controllers;

      

cc658b4c   Yarik   Big commit
5
6
      use common\models\ProductCertificate;

      use common\models\ProductSpec;

e8ccb1b4   Yarik   Import beta
7
      use common\modules\language\models\Language;

36d1807a   Yarik   Big commit.
8
9
10
      use common\modules\product\models\Export;

      use common\modules\product\models\Import;

      use common\modules\product\models\ProductImage;

36d1807a   Yarik   Big commit.
11
12
13
14
15
16
17
18
      use Yii;

      use common\modules\product\models\Product;

      use common\modules\product\models\ProductSearch;

      use yii\web\Controller;

      use yii\web\NotFoundHttpException;

      use yii\filters\VerbFilter;

      use yii\web\UploadedFile;

      

d8c1a2e0   Yarik   Big commit artbox
19
      /**

36d1807a   Yarik   Big commit.
20
       * ManageController implements the CRUD actions for Product model.

d8c1a2e0   Yarik   Big commit artbox
21
       */

36d1807a   Yarik   Big commit.
22
      class ManageController extends Controller

d8c1a2e0   Yarik   Big commit artbox
23
      {

36d1807a   Yarik   Big commit.
24
25
26
27
28
29
30
31
32
33
34
35
          

          /**

           * @inheritdoc

           */

          public function behaviors()

          {

              return [

                  'verbs' => [

                      'class'   => VerbFilter::className(),

                      'actions' => [

                          'delete' => [ 'POST' ],

                      ],

d8c1a2e0   Yarik   Big commit artbox
36
                  ],

36d1807a   Yarik   Big commit.
37
38
39
              ];

          }

          

36d1807a   Yarik   Big commit.
40
41
42
43
44
45
46
47
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
          /**

           * Lists all Product models.

           * @return mixed

           */

          public function actionIndex()

          {

              $searchModel = new ProductSearch();

              $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

              

              return $this->render('index', [

                  'searchModel'  => $searchModel,

                  'dataProvider' => $dataProvider,

              ]);

          }

          

          /**

           * Displays a single Product model.

           *

           * @param integer $id

           *

           * @return mixed

           */

          public function actionView($id)

          {

              return $this->render('view', [

                  'model' => $this->findModel($id),

              ]);

          }

          

          /**

           * Creates a new Product model.

           * If creation is successful, the browser will be redirected to the 'view' page.

           * @return mixed

           */

          public function actionCreate()

          {

              $model = new Product();

9f8be5c9   Yarik   Import browser be...
77
              $model->generateLangs();

cc658b4c   Yarik   Big commit
78
              $product_spec = new ProductSpec();

9f8be5c9   Yarik   Import browser be...
79
              $product_spec->generateLangs();

36d1807a   Yarik   Big commit.
80
              if($model->load(Yii::$app->request->post())) {

9f8be5c9   Yarik   Import browser be...
81
                  $model->loadLangs(\Yii::$app->request);

72a992f5   Yarik   Import browser v1.0
82
                  if($model->save() && $model->transactionStatus) {

cc658b4c   Yarik   Big commit
83
                      if($product_spec->load(Yii::$app->request->post())) {

9f8be5c9   Yarik   Import browser be...
84
                          $product_spec->loadLangs(\Yii::$app->request);

cc658b4c   Yarik   Big commit
85
86
87
                          $product_spec->product_id = $model->product_id;

                          $product_spec->techSpecFile = UploadedFile::getInstance($product_spec, 'techSpecFile');

                          $product_spec->techCharFile = UploadedFile::getInstance($product_spec, 'techCharFile');

72a992f5   Yarik   Import browser v1.0
88
89
                          if($product_spec->upload()) {

                              if($product_spec->save(false) && $product_spec->transactionStatus) {

d55d2fe0   Yarik   Multilanguage
90
91
92
93
                                  return $this->redirect([

                                      'view',

                                      'id' => $model->product_id,

                                  ]);

d55d2fe0   Yarik   Multilanguage
94
                              }

cc658b4c   Yarik   Big commit
95
                          }

d55d2fe0   Yarik   Multilanguage
96
97
                      }

                  }

d8c1a2e0   Yarik   Big commit artbox
98
              }

d8c1a2e0   Yarik   Big commit artbox
99
              return $this->render('create', [

d55d2fe0   Yarik   Multilanguage
100
                  'model'              => $model,

9f8be5c9   Yarik   Import browser be...
101
                  'model_langs'        => $model->model_langs,

d55d2fe0   Yarik   Multilanguage
102
                  'product_spec'       => $product_spec,

9f8be5c9   Yarik   Import browser be...
103
                  'product_spec_langs' => $product_spec->model_langs,

d8c1a2e0   Yarik   Big commit artbox
104
105
              ]);

          }

36d1807a   Yarik   Big commit.
106
107
108
109
110
111
112
113
114
115
116
117
          

          /**

           * Updates an existing Product model.

           * If update is successful, the browser will be redirected to the 'view' page.

           *

           * @param integer $id

           *

           * @return mixed

           */

          public function actionUpdate($id)

          {

              $model = $this->findModel($id);

72a992f5   Yarik   Import browser v1.0
118
              $model->generateLangs();

cc658b4c   Yarik   Big commit
119
120
121
122
123
124
125
              if(!empty( $model->productSpec )) {

                  $product_spec = $model->productSpec;

              } else {

                  $product_spec = new ProductSpec([

                      'product_id' => $model->product_id,

                  ]);

              }

72a992f5   Yarik   Import browser v1.0
126
              $product_spec->generateLangs();

36d1807a   Yarik   Big commit.
127
              if($model->load(Yii::$app->request->post())) {

72a992f5   Yarik   Import browser v1.0
128
                  $model->loadLangs(\Yii::$app->request);

72a992f5   Yarik   Import browser v1.0
129
                  if($model->save() && $model->transactionStatus) {

cc658b4c   Yarik   Big commit
130
                      if($product_spec->load(Yii::$app->request->post())) {

72a992f5   Yarik   Import browser v1.0
131
                          $product_spec->loadLangs(\Yii::$app->request);

cc658b4c   Yarik   Big commit
132
133
                          $product_spec->techSpecFile = UploadedFile::getInstance($product_spec, 'techSpecFile');

                          $product_spec->techCharFile = UploadedFile::getInstance($product_spec, 'techCharFile');

72a992f5   Yarik   Import browser v1.0
134
135
                          if($product_spec->upload()) {

                              if($product_spec->save(false) && $product_spec->transactionStatus) {

d55d2fe0   Yarik   Multilanguage
136
137
138
139
140
                                  return $this->redirect([

                                      'view',

                                      'id' => $model->product_id,

                                  ]);

                              }

cc658b4c   Yarik   Big commit
141
                          }

cc658b4c   Yarik   Big commit
142
                      }

d8c1a2e0   Yarik   Big commit artbox
143
                  }

d8c1a2e0   Yarik   Big commit artbox
144
              }

d8c1a2e0   Yarik   Big commit artbox
145
              $groups = $model->getTaxGroupsByLevel(0);

d8c1a2e0   Yarik   Big commit artbox
146
              return $this->render('update', [

d55d2fe0   Yarik   Multilanguage
147
                  'model'              => $model,

72a992f5   Yarik   Import browser v1.0
148
                  'model_langs'        => $model->model_langs,

d55d2fe0   Yarik   Multilanguage
149
150
                  'groups'             => $groups,

                  'product_spec'       => $product_spec,

72a992f5   Yarik   Import browser v1.0
151
                  'product_spec_langs' => $product_spec->model_langs,

d8c1a2e0   Yarik   Big commit artbox
152
153
              ]);

          }

36d1807a   Yarik   Big commit.
154
155
156
157
158
159
160
161
162
163
164
165
166
          

          /**

           * Deletes an existing Product model.

           * If deletion is successful, the browser will be redirected to the 'index' page.

           *

           * @param integer $id

           *

           * @return mixed

           */

          public function actionDelete($id)

          {

              $this->findModel($id)

                   ->delete();

36d1807a   Yarik   Big commit.
167
              return $this->redirect([ 'index' ]);

d8c1a2e0   Yarik   Big commit artbox
168
          }

36d1807a   Yarik   Big commit.
169
170
171
172
173
174
175
          

          public function actionDelimg($id)

          {

              $image = ProductImage::findOne($id);

              

              if($image) {

                  $image->delete();

d8c1a2e0   Yarik   Big commit artbox
176
              }

36d1807a   Yarik   Big commit.
177
178
179
              

              print '1';

              exit;

d8c1a2e0   Yarik   Big commit artbox
180
          }

d55d2fe0   Yarik   Multilanguage
181
          

cc658b4c   Yarik   Big commit
182
183
184
          public function actionDelcert($id)

          {

              $certificate = ProductCertificate::findOne($id);

d55d2fe0   Yarik   Multilanguage
185
              

cc658b4c   Yarik   Big commit
186
187
188
              if($certificate) {

                  $certificate->delete();

              }

d55d2fe0   Yarik   Multilanguage
189
              

cc658b4c   Yarik   Big commit
190
191
192
              print '1';

              exit;

          }

36d1807a   Yarik   Big commit.
193
194
195
196
197
198
199
200
201
202
          

          public function actionIs_top($id)

          {

              $model = $this->findModel($id);

              

              $model->is_top = intval(empty( $model->is_top ));

              

              $model->save(false, [ 'is_top' ]);

              

              return $this->redirect([ 'index' ]);

d8c1a2e0   Yarik   Big commit artbox
203
          }

36d1807a   Yarik   Big commit.
204
205
206
207
208
209
210
211
212
213
          

          public function actionIs_new($id)

          {

              $model = $this->findModel($id);

              

              $model->is_new = intval(empty( $model->is_new ));

              

              $model->save(false, [ 'is_new' ]);

              

              return $this->redirect([ 'index' ]);

d8c1a2e0   Yarik   Big commit artbox
214
          }

36d1807a   Yarik   Big commit.
215
216
217
218
219
220
221
222
223
224
          

          public function actionAkciya($id)

          {

              $model = $this->findModel($id);

              

              $model->akciya = intval(empty( $model->akciya ));

              

              $model->save(false, [ 'akciya' ]);

              

              return $this->redirect([ 'index' ]);

d8c1a2e0   Yarik   Big commit artbox
225
          }

36d1807a   Yarik   Big commit.
226
227
228
229
230
          

          public function actionImport()

          {

              $model = new Import();

              

e8ccb1b4   Yarik   Import beta
231
232
233
234
235
236
237
238
239
240
241
              $languages = Language::find()

                                   ->select([

                                       'name',

                                       'language_id',

                                   ])

                                   ->where([ 'status' => 1 ])

                                   ->orderBy([ 'default' => SORT_DESC ])

                                   ->asArray()

                                   ->indexBy('language_id')

                                   ->column();

              

36d1807a   Yarik   Big commit.
242
              if($model->load(Yii::$app->request->post())) {

e8ccb1b4   Yarik   Import beta
243
                  \Yii::$app->session->set('export_lang', $model->lang);

36d1807a   Yarik   Big commit.
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
                  $file = UploadedFile::getInstances($model, 'file');

                  $method = 'go' . ucfirst($model->type);

                  $target = Yii::getAlias('@uploadDir') . '/' . Yii::getAlias('@uploadFile' . ucfirst($model->type));

                  if(empty( $file )) {

                      $model->errors[] = 'File not upload';

                  } elseif($method == 'goPrices' && $file[ 0 ]->name != 'file_1.csv') {

                      $model->errors[] = 'File need "file_1.csv"';

                  } elseif($method == 'goProducts' && $file[ 0 ]->name == 'file_1.csv') {

                      $model->errors[] = 'File can not "file_1.csv"';

                  } elseif($model->validate() && $file[ 0 ]->saveAs($target)) {

                      // PROCESS PAGE

                      return $this->render('import-process', [

                          'model'  => $model,

                          'method' => $model->type,

                          'target' => $target,

                      ]);

                      //                $model->$method();

                  } else {

                      $model->errors[] = 'File can not be upload or other error';

                  }

              }

              

              return $this->render('import', [

e8ccb1b4   Yarik   Import beta
267
268
                  'model'     => $model,

                  'languages' => $languages,

36d1807a   Yarik   Big commit.
269
270
271
272
273
274
275
276
277
278
279
              ]);

          }

          

          public function actionProducts()

          {

              $from = Yii::$app->request->get('from', 0);

              

              $model = new Import();

              

              if(Yii::$app->request->isAjax) {

                  Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

7d10d812   Yarik   Import browser be...
280
                  return $model->goProducts($from, 1);

36d1807a   Yarik   Big commit.
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
              }

          }

          

          public function actionPrices()

          {

              $from = Yii::$app->request->get('from', 0);

              

              $model = new Import();

              

              if(Yii::$app->request->isAjax) {

                  Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

                  return $model->goPrices($from, 10);

              }

          }

          

96410438   Yarik   Project admin com...
296
297
298
299
300
301
          public function actionExportProcess($from, $filename)

          {

              

              $model = new Export();

              if(Yii::$app->request->isAjax) {

                  Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

e8ccb1b4   Yarik   Import beta
302
                  return $model->process($filename, $from);

96410438   Yarik   Project admin com...
303
304
305
              }

          }

          

36d1807a   Yarik   Big commit.
306
307
308
          public function actionExport()

          {

              $model = new Export();

96410438   Yarik   Project admin com...
309
310
311
312
              

              if($model->load(Yii::$app->request->post())) {

                  \Yii::$app->session->set('export_lang', $model->lang);

                  return $this->render('export-process', [

e8ccb1b4   Yarik   Import beta
313
314
                      'model'  => $model,

                      'method' => 'export',

96410438   Yarik   Project admin com...
315
                  ]);

36d1807a   Yarik   Big commit.
316
              }

96410438   Yarik   Project admin com...
317
318
319
320
321
322
323
324
325
326
              

              return $this->render('export', [

                  'model' => $model,

              ]);

              //            $model = new Export();

              //            if(( $file = $model->process(Yii::getAlias('@uploadDir')) )) {

              //                return Yii::$app->response->sendFile($file)

              //                                          ->send();

              //            }

              //            throw new NotFoundHttpException('Error');

36d1807a   Yarik   Big commit.
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
          }

          

          /**

           * Finds the Product model based on its primary key value.

           * If the model is not found, a 404 HTTP exception will be thrown.

           *

           * @param integer $id

           *

           * @return Product the loaded model

           * @throws NotFoundHttpException if the model cannot be found

           */

          protected function findModel($id)

          {

              if(( $model = Product::findOne($id) ) !== NULL) {

                  return $model;

              } else {

                  throw new NotFoundHttpException('The requested page does not exist.');

              }

d8c1a2e0   Yarik   Big commit artbox
345
346
          }

      }