/** * Creates a new Item model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Item(); $modelPrice = new Price(); $modelPrice->tax = 12; if ($model->load(Yii::$app->request->post()) && $model->validate() && $modelPrice->load(Yii::$app->request->post()) && $modelPrice->validate()) { $transaction = $model->getDb()->beginTransaction(); try { if (!$model->save(false)) { throw new Exception(Yii::t('app', 'Error saving {model}: {msj}', ['model' => Yii::t('app', ucfirst($model->tableName())), 'msj' => print_r($model->getErrors(), true)]), 500); } if (!$modelPrice->save(false)) { throw new Exception(Yii::t('app', 'Error saving {model}: {msj}', ['model' => Yii::t('app', ucfirst($modelPrice->tableName())), 'msj' => print_r($modelPrice->getErrors(), true)]), 500); } $modelItemPrice = new ItemPrice(); $modelItemPrice->item_id = $model->id; $modelItemPrice->price_id = $modelPrice->id; if (!$modelItemPrice->save(false)) { throw new Exception(Yii::t('app', 'Error saving {model}: {msj}', ['model' => Yii::t('app', ucfirst($modelItemPrice->tableName())), 'msj' => print_r($modelItemPrice->getErrors(), true)]), 500); } $transaction->commit(); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } return $this->redirect(['index']); } else { return $this->render('create', ['model' => $model, 'modelPrice' => $modelPrice]); } }
public function getSitePrice() { if (is_null($this->price)) { return 0; } return $this->price->getSitePrice(); }
/** * @param $item Item * @return ItemPrice */ public function getItemPrice($item) { $params = ['currency' => $this->currency, 'appid' => $item->getAppId(), 'market_hash_name' => $item->getMarketName()]; $query = http_build_query($params); $price = ItemPrice::where('class_id', $item->getClassId())->where('app_id', $item->getAppId())->first(); // Пытаемся достать из файлового кеша, если нифига - берем из маркета if (!$price) { $url = $this->communityURL . 'market/priceoverview/?' . $query; $contents = @file_get_contents($url); $result = json_decode($contents, true); if (!$result['success']) { throw new NotFoundHttpException('Стим считает нас дудосерами по ссылке ' . $url); } $lowest = isset($result['lowest_price']) ? $this->cleanFloat($result['lowest_price']) : 0; $median = isset($result['median_price']) ? $this->cleanFloat($result['median_price']) : 0; $volume = isset($result['volume']) ? $this->cleanInt($result['volume']) : 0; $cached = ['class_id' => $item->getClassId(), 'app_id' => $item->getAppId(), 'min' => $lowest, 'median' => $median, 'volume' => $volume]; $price = ItemPrice::create($cached); } return $price; }
/** * @return \yii\db\ActiveQuery */ public function getItemPrices() { return $this->hasMany(ItemPrice::className(), ['item_id' => 'id']); }