/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = DotaHero::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'status' => $this->status]); $query->andFilterWhere(['like', 'localized_name', $this->localized_name])->andFilterWhere(['like', 'name', $this->name]); return $dataProvider; }
/** * @return \yii\db\ActiveQuery */ public function getHero() { return $this->hasOne(DotaHero::className(), ['id' => 'hero_id']); }
/** * Finds the DotaHero model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return DotaHero the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = DotaHero::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * считает кол-во очков у ивента * @param $event DotaEvent */ public static function calculateScores($event) { $params = DotaParams::loadParams(); $hero_ids = []; foreach ($event->dotaEventHeroStat as $hero) { $hero_ids[] = $hero->hero_id; } $hero_roles = DotaHero::getHeroesRolesList($hero_ids); //echo'<pre>';print_r($hero_roles);echo'</pre>';//die; //echo'<pre>';print_r($event->dotaEventHeroStat);echo'</pre>';die; foreach ($event->dotaEventHeroStat as $hero) { $level = $hero->level + $hero->level_corr; $kills = $hero->kills + $hero->kills_corr; $deaths = $hero->deaths + $hero->deaths_corr; $assists = $hero->assists + $hero->assists_corr; $gold_per_min = $hero->gold_per_min + $hero->gold_per_min_corr; $xp_per_min = $hero->xp_per_min + $hero->xp_per_min_corr; $bans = $hero->bans + $hero->bans_corr; $picks = $hero->picks + $hero->picks_corr; $scores = $level * $hero_roles[$hero->hero_id] + $kills * $params['ratio_kills'] + $deaths * $params['ratio_deaths'] + $assists * $params['ratio_assists'] + $gold_per_min * $params['ratio_gold_per_min'] + $xp_per_min * $params['ratio_xp_per_min'] + $bans * $params['scores_per_ban'] + $picks * $params['scores_per_pick']; //$scores = ($kills * $params['ratio_kills']) + ($deaths * $params['ratio_deaths']) + ($assists * $params['ratio_assists']) + ($gold_per_min * $params['ratio_gold_per_min']) + ($xp_per_min * $params['ratio_xp_per_min']); $hero->scores = $scores; $hero->save(); } }
/** * Updates an existing DotaEvent 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); $task = Yii::$app->request->post('task', 'save'); //echo'<pre>';print_r($_POST);echo'</pre>';die; $model->league_ids = $model->selectedEventLeagues; $model->team_ids = $model->selectedEventTeams; //$model->players_list = DotaPlayer::getActivePlayersList(); if (count($model->team_ids) > 0) { $model->players_list = DotaTeam::getTeamsListWithPlayers($model->team_ids); } else { $model->players_list = []; } //echo'<pre>';print_r($model->team_ids);echo'</pre>';die; $model->heroes_list = DotaHero::getActiveHeroesList(); $model->preparePlayersForEdit(); $model->prepareHeroesForEdit(); /* $rr = DotaEventTeam::find() ->joinWith('team') ->joinWith('') ->where(['event_id'=>$id]) echo'<pre>';print_r($model->dotaEventTeams->joinWith('dotaPlayers'));echo'</pre>';die; */ $dataProviderPlayersStat = DotaEventPlayerStat::searchPlayersStatInEvent($model->id); $dataProviderHeroesStat = DotaEventHeroStat::searchHeroesStatInEvent($model->id); //echo'<pre>';print_r($dataProviderHeroesStat->models);echo'</pre>';die; //echo'<pre>';print_r(DotaTeam::getTeamsListWithPlayers($model->team_ids));echo'</pre>';die; //$model->load(Yii::$app->request->post()); //echo'<pre>';print_r($model->team_ids);echo'</pre>';die; if ($model->load(Yii::$app->request->post()) && $model->validate()) { //if ($model->validate()) { $event = DotaEvent::findOne($model->id); //echo'<pre>';print_r($event->dotaEventPlayerStat);echo'</pre>';die; //echo'<pre>';print_r($model->team_ids);echo'</pre>';die; $model->save(); $DotaEventPlayerStat = Yii::$app->request->post('DotaEventPlayerStat', []); $this->checkPlayersStat($model, $DotaEventPlayerStat); $this->checkLeagues($model); //проверяем изменения в лигах $this->checkTeams($model); //проверяем изменения в командах if (!is_null($model->price_pd) && !is_null($model->price_md_p)) { $this->checkPlayers($model); } //проверяем изменения в игроках if (!is_null($model->price_hd) && !is_null($model->price_md_h)) { $this->checkHeroes($model); } //проверяем изменения в героях Yii::$app->session->setFlash('success', Yii::t('app', 'Saved')); if ($task == 'apply') { return $this->redirect(['update', 'id' => $model->id]); } else { return $this->redirect(['index']); } } else { //echo'<pre>';print_r($model);echo'</pre>';//die; return $this->render('update', ['model' => $model, 'dataProviderPlayersStat' => $dataProviderPlayersStat, 'dataProviderHeroesStat' => $dataProviderHeroesStat, 'last_update_info' => LastStatUpdate::LoadDota()]); } }
/** * возвращает информацию по игрокам на которых была сделана ставка * * @return \yii\db\ActiveQuery */ public function getDraftHeroesInfo() { return $this->hasMany(DotaHero::className(), ['id' => 'hero_id'])->viaTable('{{%dota_draft_hero}}', ['draft_id' => 'id']); }
/** * http://cdn.dota2.com/apps/dota2/images/heroes/<name>_<suffix> */ public static function updateHeroesImages() { $models = DotaHero::find()->all(); //echo'<pre>';print_r($models);echo'</pre>';die; foreach ($models as $model) { $url = self::HEROES_IMAGES_URL . $model->name . '_' . self::HEROES_IMAGE_FULL_QUALITY_VERTICAL_PORTRAIT; echo '<pre>'; print_r($url); echo '</pre>'; die; $raw_data = json_decode(DCurlHelper::getData($url), 1); } return true; }