/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Tournaments::find()->with('country0');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => new Sort(['attributes' => ['startsOn', 'country', 'is_active', 'tournament_name'], 'defaultOrder' => ['startsOn' => SORT_DESC]])]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id_tournament' => $this->id_tournament, 'country' => $this->country, 'num_tours' => $this->num_tours]);
     $query->andFilterWhere(['like', 'tournament_name', $this->tournament_name])->andFilterWhere(['like', 'is_active', $this->is_active]);
     return $dataProvider;
 }
Example #2
0
 public static function getAllRecentGamesWithForecast($user)
 {
     $tournaments = Tournaments::find()->joinWith('usersTournaments', false)->where(['or', ['is_active' => Tournaments::GOING], ['is_active' => Tournaments::NOT_STARTED]])->andWhere(['sf_users_tournaments.id_user' => $user])->all();
     $return = [];
     foreach ($tournaments as $k => $tournament) {
         $return[$k]['tournament'] = $tournament->tournament_name;
         $return[$k]['id_tournament'] = $tournament->id_tournament;
         $return[$k]['games'] = self::getRecentGamesGroupedByTourWithForecast($tournament->id_tournament, $user);
     }
     return $return;
 }
 private static function unionQueryPrep($array)
 {
     $query = [];
     foreach ($array as $one) {
         $query[] = Tournaments::find()->where(['{{%tournaments}}.id_tournament' => $one])->joinWith(['usersTournaments' => function ($query) {
             $query->with('idUser')->orderBy(['points' => SORT_DESC])->limit(1);
         }])->with('country0')->one();
     }
     return $query;
 }
 public function actionAutoreminder()
 {
     $tournaments = Tournaments::find()->where(['not', ['is_active' => Tournaments::FINISHED]])->all();
     foreach ($tournaments as &$tournament) {
         if ($tournament->is_active == Tournaments::NOT_STARTED && $tournament->startsOn - time() < 60 * 60 * 24 * 5) {
             $tournament->is_active = Tournaments::GOING;
             $tournament->save(false);
         }
         $nextTour = Tournaments::getNextTour($tournament->id_tournament);
         if ($nextTour != NULL) {
             $firstGameStarts = ArrayHelper::getValue(Result::find()->select(['min(dtime) as dtime'])->where(['id_tournament' => $tournament->id_tournament, 'tour' => $nextTour])->all()[0], 'dtime');
             if ($firstGameStarts > time() + 60 * 60 * 24 * 4 && $firstGameStarts < time() + 60 * 60 * 24 * 5 || $firstGameStarts > time() + 60 * 60 * 24 * 2 && $firstGameStarts < time() + 60 * 60 * 24 * 3) {
                 $sendReminders = Reminders::sendAutoReminder($nextTour, $tournament->id_tournament);
                 Yii::info("Task Autoreminder for {$tournament->tournament_name} {$nextTour} tour has been executed", 'console');
             }
         }
     }
     return 0;
 }