Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 /**
  * @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()]);
     }
 }
Beispiel #6
0
 /**
  * возвращает информацию по игрокам на которых была сделана ставка
  *
  * @return \yii\db\ActiveQuery
  */
 public function getDraftHeroesInfo()
 {
     return $this->hasMany(DotaHero::className(), ['id' => 'hero_id'])->viaTable('{{%dota_draft_hero}}', ['draft_id' => 'id']);
 }
Beispiel #7
0
 /**
  * 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;
 }