/**
  * Displays and/or update Score models for a competition.
  * @return mixed
  */
 public function actionCompetition($id)
 {
     $competition = $this->findCompetition($id);
     if (isset($_POST['ScorecardForCompetition'])) {
         $models = ScorecardForCompetition::find()->andWhere(['id' => array_keys($_POST['ScorecardForCompetition'])])->indexBy('id')->all();
         if (!ScorecardForCompetition::loadMultiple($models, Yii::$app->request->post()) || !ScorecardForCompetition::validateMultiple($models)) {
             $errors = [];
             foreach ($models as $model) {
                 $errors += $model->errors;
             }
             if (count($errors) > 0) {
                 Yii::$app->session->setFlash('danger', Yii::t('igolf', 'Error(s): {0}', [VarDumper::dumpAsString($errors, 4, true)]));
             }
         } else {
             foreach ($models as $model) {
                 $model->save();
             }
             Yii::$app->session->setFlash('success', Yii::t('igolf', 'Scores updated.'));
         }
     } else {
         //@todo do not loop on getScorecards twice...
         $scorecards = [];
         foreach ($competition->getRegistrations()->andWhere(['registration.status' => array_merge([Registration::STATUS_CONFIRMED], Registration::getPostCompetitionStatuses())])->each() as $registration) {
             $scorecards[] = $registration->getScorecard();
             // this will create a scorecard if none exists
         }
     }
     return $this->render('competition', ['competition' => $competition, 'dataProvider' => new ActiveDataProvider(['query' => $competition->getScorecards()])]);
 }