[ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => [ 'POST' ], ], ], ]; } /** * 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) { $model = $this->findModel($id); $categories = $model->getCategories() ->with('lang') ->all(); $variants = $model->getVariants() ->with('lang') ->all(); $properties = $model->getProperties(); return $this->render('view', [ 'model' => $this->findModel($id), 'categories' => $categories, 'variants' => $variants, 'properties' => $properties, ]); } /** * 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(); $model->detachBehavior('techSpec'); $model->generateLangs(); $product_spec = new ProductSpec(); $product_spec->generateLangs(); if($model->load(Yii::$app->request->post())) { $model->loadLangs(\Yii::$app->request); if($model->save() && $model->transactionStatus) { if($product_spec->load(Yii::$app->request->post())) { $product_spec->loadLangs(\Yii::$app->request); $product_spec->product_id = $model->product_id; $product_spec->techSpecFile = UploadedFile::getInstance($product_spec, 'techSpecFile'); $product_spec->techCharFile = UploadedFile::getInstance($product_spec, 'techCharFile'); if($product_spec->upload()) { if($product_spec->save(false) && $product_spec->transactionStatus) { return $this->redirect([ 'view', 'id' => $model->product_id, ]); } } } } } return $this->render('create', [ 'model' => $model, 'model_langs' => $model->model_langs, 'product_spec' => $product_spec, 'product_spec_langs' => $product_spec->model_langs, ]); } /** * 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); $model->generateLangs(); if(!empty( $model->productSpec )) { $product_spec = $model->productSpec; } else { $product_spec = new ProductSpec([ 'product_id' => $model->product_id, ]); } $product_spec->generateLangs(); if($model->load(Yii::$app->request->post())) { $model->loadLangs(\Yii::$app->request); if($model->save() && $model->transactionStatus) { if($product_spec->load(Yii::$app->request->post())) { $product_spec->loadLangs(\Yii::$app->request); $product_spec->techSpecFile = UploadedFile::getInstance($product_spec, 'techSpecFile'); $product_spec->techCharFile = UploadedFile::getInstance($product_spec, 'techCharFile'); if($product_spec->upload()) { if($product_spec->save(false) && $product_spec->transactionStatus) { return $this->redirect([ 'view', 'id' => $model->product_id, ]); } } } } } $groups = $model->getTaxGroupsByLevel(0); return $this->render('update', [ 'model' => $model, 'model_langs' => $model->model_langs, 'groups' => $groups, 'product_spec' => $product_spec, 'product_spec_langs' => $product_spec->model_langs, ]); } /** * 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(); return $this->redirect([ 'index' ]); } public function actionDelimg($id) { $image = ProductImage::findOne($id); if($image) { $image->delete(); } print '1'; exit; } public function actionDelcert($id) { $certificate = ProductCertificate::findOne($id); if($certificate) { $certificate->delete(); } print '1'; exit; } 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' ]); } 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' ]); } public function actionAkciya($id) { $model = $this->findModel($id); $model->akciya = intval(empty( $model->akciya )); $model->save(false, [ 'akciya' ]); return $this->redirect([ 'index' ]); } public function actionImport() { $model = new Import(); $languages = Language::find() ->select([ 'name', 'language_id', ]) ->where([ 'status' => 1 ]) ->orderBy([ 'default' => SORT_DESC ]) ->asArray() ->indexBy('language_id') ->column(); if($model->load(Yii::$app->request->post())) { \Yii::$app->session->set('export_lang', $model->lang); $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, ]); } else { $model->errors[] = 'File can not be upload or other error'; } } return $this->render('import', [ 'model' => $model, 'languages' => $languages, ]); } 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; return $model->goProducts($from, 1); } } 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); } } public function actionExportProcess($from, $filename) { $model = new Export(); if(Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return $model->process($filename, $from); } } public function actionExport() { $model = new Export(); if($model->load(Yii::$app->request->post())) { \Yii::$app->session->set('export_lang', $model->lang); return $this->render('export-process', [ 'model' => $model, 'method' => 'export', ]); } return $this->render('export', [ 'model' => $model, ]); } /** * 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::find() ->where([ 'product_id' => $id ]) ->with('lang') ->one() ) !== NULL ) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }