/** * 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; }
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; }