public function put($params) { $model = Tovar::findOne(['id' => $params['id']]); $t = $model->attributes; $basket = Yii::$app->getDb(); $default = ['session_id' => $this->getPhpsessid(), 'tovar_count' => 1, 'tovar_min' => 1, 'tovar_id' => $t['id'], 'tovar_price' => $t['price']]; $params = array_merge($default, $params); if ($params['tovar_count'] > 0) { return $basket->createCommand('insert into `basket` (`tovar_id`,`tovar_count`,`tovar_min`,`tovar_price`,`session_id`)' . 'values(:tovar_id,:tovar_count,:tovar_min,:tovar_price,:session_id)' . ' ON DUPLICATE KEY UPDATE `tovar_count`=:tovar_count')->bindValues($params)->execute(); } else { $p = ['session_id' => $params['session_id'], 'tovar_id' => $params['tovar_id']]; return $basket->createCommand('delete from `basket` where `session_id`=:session_id and `tovar_id`=:tovar_id')->bindValues($p)->execute(); } }
public function actionPut() { $params = Yii::$app->request->post(); $post = array_merge(Yii::$app->request->post()); $params = Yii::$app->request->queryParams; switch ($params['mode']) { case 'changeQuantity': if (Yii::$app->request->isAjax) { if (!empty($position = (int) $post['position']) && !empty($quantity = (int) $post['quantity'])) { $basket = BasketSearch::findOne($position); $basket->tovar_count = $quantity; return $basket->update(); } } break; case 'put': $session = new \yii\web\Session(); $id = Yii::$app->request->post('id'); if ($id) { $tovar = Tovar::findOne(['id' => $id]); if ($tovar) { $toBasket = new BasketSearch(); $toBasket->tovar_id = $id; $toBasket->tovar_count = 1; $toBasket->tovar_price = $tovar->price; $toBasket->session_id = Yii::$app->session->id; $toBasket->tovar_min = 1; $toBasket->provider_id = 5; //id=5 провайдер KD ищет в локальной базе if (Yii::$app->user->id) { $toBasket->uid = Yii::$app->user->id; } if ($toBasket->save()) { return '<a class="btn" href="' . url::toRoute(['/basket/basket'], true) . '"><i class="icon-shopping-cart icon-black"></i>Уже в корзине</a>'; } else { if (YII_DEBUG) { var_dump($toBasket->getErrors()); } } } else { return false; } } return '<a class="btn" href="' . url::toRoute(['/basket/basket'], true) . '"><i class="icon-shopping-cart icon-black"></i>Уже в корзине</a>'; break; case 'update': // $data = Yii::$app->request->post(); // if (isset($data) && $data != '') { // $basket = BasketSearch::findOne(['id' => intval($data['row_id'])]); // if ($basket) // $basket->description = Html::encode($data['text']); // if ($basket->save()) // return true; // } if (Yii::$app->request->post('hasEditable')) { $post = Yii::$app->request->post(); $model = $basket = BasketSearch::findOne(['id' => $post['editableKey']]); $data['OrderSearch'] = current($post['OrderSearch']); if ($model->load($data) && $model->save()) { $data = ['output' => $model->comment]; } return Json::encode($data); } break; case 'order': // создаем новый заказ $user_id = Yii::$app->user->id; $number = ($user_id ? $user_id : 'N') . '-' . date("ymdhis"); $orders = explode(';', Yii::$app->request->post('orderData')); $formData = Yii::$app->request->post('formData'); if (isset($formData) && $formData != '') { parse_str($formData, $fdata); $profileData = array_values($fdata['Profile']); } $fdata['deliveryStore'] = isset($fdata['deliveryStore']) ? $fdata['deliveryStore'] : 0; $cityCode = Yii::$app->request->cookies['city']; $city = \app\modules\city\models\CitySearch::find()->where(['id' => $cityCode ? $cityCode : 2097])->one(); $order_data = ['number' => $number, 'date' => date("Y-m-d H:i:s"), 'user_id' => $user_id, 'user_name' => $fdata['Profile']['name'], 'user_email' => $fdata['User']['email'], 'user_telephone' => $fdata['User']['telephone'], 'user_location' => $city->name, 'store_id' => (int) $fdata['deliveryStore']]; $order = new Order(); $order->load($order_data, ''); $order->save(); // передаем id заказа $order_id = $order->id; $order = new OrderUpdate1c(); $order->OrderId = $order_id; $order->save(); $user = \app\modules\user\models\User::findOne($user_id); $user->scenario = 'update'; $user->telephone = $order_data['user_telephone']; $user->save(); $profile = Profile::findOne($user_id); $profile->scenario = 'order'; $profile->name = $order_data['user_name']; $profile->save(); foreach ($orders as $order) { $order = explode(':', $order); $basket = BasketSearch::findOne(['id' => intval($order[0])]); if ($basket) { $product = Tovar::findOne(['id' => $basket->tovar_id]); $data['Orders'] = ['product_id' => $product ? $product->id : null, 'manufacture' => $basket->manufacturer, 'part_name' => $product ? $product->name : $basket->part_name, 'part_price' => $basket->tovar_price, 'product_article' => $product ? null : $basket->part_number, 'quantity' => $order[1], 'reference' => '', 'status' => \app\modules\user\models\Orders::ORDER_ADOPTED, 'datetime' => date('Y-m-d H:i:s'), 'description' => $basket->description, 'order_id' => (int) $order_id, 'provider_id' => (int) $basket->provider_id, 'delivery_days' => (int) $basket->period]; $Orders = new Orders(); if ($Orders->load($data) && $Orders->save()) { $basket->delete(); } } } return true; break; case 'remove': if (BasketSearch::deleteAll(['in', 'id', $post['id']])) { return JSON::encode($_POST); } //$this->basket_row($dataProvider); break; } }
/** * Finds the Tovar model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param string $id * @return Tovar the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Tovar::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }