private function getForecast($user, $tournament) { for ($i = 1; $i <= 3; $i++) { if (Top3TeamsForecast::find()->findModel($user, $tournament, $i)->exists()) { $this->_models[$i] = Top3TeamsForecast::find()->findModel($user, $tournament, $i)->one(); } else { $this->_models[$i] = new Top3TeamsForecast(); $this->_models[$i]->id_user = $user; $this->_models[$i]->id_tournament = $tournament; $this->_models[$i]->forecasted_position = $i; } } return $this->_models; }
public function actionUser($user, $tournament) { $userModel = Users::findOne($user); $forecastStatus = Forecasts::getUserForecastStatus($tournament, $user); $forecast = new ArrayDataProvider(['allModels' => $forecastStatus, 'pagination' => false]); $winnersForecast = Top3TeamsForecast::find()->where(['id_tournament' => $tournament])->andWhere(['id_user' => $user])->with('team.idTeam')->orderBy(['forecasted_position' => SORT_ASC])->asArray()->all(); $isFinished = Tournaments::findOne($tournament)->is_active == Tournaments::FINISHED; $winnersForecastDataProvider = new ArrayDataProvider(['allModels' => $winnersForecast, 'pagination' => false]); $data = ['forecast' => $forecast, 'user' => $userModel, 'winnersForecast' => $winnersForecastDataProvider, 'isFinished' => $isFinished]; if ($isFinished) { $userTournamentModel = UsersTournaments::find()->where(['id_user' => $user])->andWhere(['id_tournament' => $tournament])->with('winnersForecast')->one(); $data['winnersForecastDetails'] = implode('</br>', Top3TeamsForecast::getClarifications($user, $tournament)); $data['totalAdditionalPoints'] = $userTournamentModel->calculateAdditionalPoints(); } return $this->renderAjax('user', $data); }