/**
  * Updates an existing tournaments model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     Yii::$app->user->returnUrl = Yii::$app->request->url;
     $model = $this->findModel($id);
     //getting standings with participants
     $participants = new ArrayDataProvider(['allModels' => Result::getStandings($id), 'pagination' => false]);
     //all teams(potential participants) for the current tournament
     $teams = Teams::getTeamCandidates($model->country0, TeamTournaments::getTournamentParticipantsID($id));
     $forecasters = new ArrayDataProvider(['allModels' => $model->getForecastersListNew()]);
     //getting the next tour number
     $nextTour = Tournaments::getNextTour($id);
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->goBack();
     } else {
         return $this->render('update', compact('nextTour', 'model', 'teams', 'participants', 'forecasters'));
     }
 }
Пример #2
0
 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;
 }