[ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['POST'], ], ], ]; } public function actionTest() { return; foreach(Product::find()->all() as $product) { if (!$product->variant) { $product->save(); $variantModel = new ProductVariant(); $variantModel->product_id = $product->product_id; $variantModel->name = 'test-'. uniqid(); $variantModel->sku = $variantModel->name; $variantModel->price = rand(5, 200000); $variantModel->price_old = rand(0, 5) > 3 ? $variantModel->price* (1+rand(0, 10) / 10) : $variantModel->price; $variantModel->product_unit_id = rand(1, 5); $variantModel->stock = rand(0, 50); $variantModel->save(); } } return; $categories = Category::find()->where(['depth' => 2])->all(); $cats_ids = []; foreach($categories as $cat) { $cats_ids[] = $cat->category_id; } $brands = ProductHelper::getBrands()->all(); $brands_ids = []; foreach($brands as $brand) { $brands_ids[] = $brand->brand_id; } for($i=1;$i<=1000;$i++) { $uniqid = uniqid(); $model = new Product(); $model->name = 'Test '. $uniqid; $model->brand_id = $brands_ids[array_rand($brands_ids, 1)]; $model->categories = [$cats_ids[array_rand($cats_ids, 1)]]; $model->save(); $variantModel = new ProductVariant(); $variantModel->product_id = $model->product_id; $variantModel->name = 'test-'. $uniqid; $variantModel->sku = $variantModel->name; $variantModel->price = rand(5, 200000); $variantModel->price_old = rand(0, 5) > 3 ? $variantModel->price* (1+rand(0, 10) / 10) : $variantModel->price; $variantModel->product_unit_id = rand(1, 5); $variantModel->save(); } } /** * 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(); if ($model->load(Yii::$app->request->post())) { $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload'); if ($model->save() && $model->imagesUpload) { if ( ($images = $model->imagesUpload()) !== FALSE) { foreach ($images as $image) { $imageModel = new ProductImage(); $imageModel->product_id = $model->product_id; $imageModel->image = $image; $imageModel->save(); } } return $this->redirect(['view', 'id' => $model->product_id]); } } else { return $this->render('create', [ 'model' => $model, ]); } } /** * 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); if ($model->load(Yii::$app->request->post())) { $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload'); $model->variantImagesUpload = UploadedFile::getInstances($model, 'variants'); /*if (!empty($variantImagesUpload)) { var_dump($variantImagesUpload);exit; }*/ /*$model->variantImagesUpload = []; foreach ($_POST['Product']['variants'] as $i => $variant) { if (!empty($variant['product_variant_id'])) { $model->variantImagesUpload[$variant['product_variant_id']] = $variantImagesUpload[$i]; } }*/ if ($model->save()) { // foreach ($model->images as $image) { // $image->delete(); // } if ( ($images = $model->imagesUpload()) !== FALSE) { foreach ($images as $image) { $imageModel = new ProductImage(); $imageModel->product_id = $model->product_id; $imageModel->image = $image; $imageModel->save(); } } if ( ($images = $model->variantImagesUpload()) !== FALSE) { foreach ($images as $i => $image) { if (empty($model->_variants[$i])) { continue; } $imageModel = new ProductImage(); $imageModel->product_id = $model->product_id; $imageModel->product_variant_id = intval($model->_variants[$i]['product_variant_id']); $imageModel->image = $image; $imageModel->save(); } } return $this->redirect(['view', 'id' => $model->product_id]); } } else { $groups = $model->category->getTaxGroups(); return $this->render('update', [ 'model' => $model, 'groups' => $groups, ]); } } /** * 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 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(); if ($model->load(Yii::$app->request->post())) { $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', [ 'model' => $model, ]); } 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, 10); } } 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 actionExport() { $model = new Export(); if (($file = $model->process(Yii::getAlias('@uploadDir')))) { return Yii::$app->response->sendFile($file)->send(); } throw new NotFoundHttpException('Error'); } /** * 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.'); } } }