public function NumberOfGames() { if (PlayerGame::get()) { return PlayerGame::get()->filter("ParentID", $this->ID)->Count(); } else { return "none"; } }
/** * Attempts to save a game * * @return Game|null */ protected function addPlayerGame($data, $form) { $fields = $form->Fields(); $event = $this->getCurrentEvent(); $currentID = $event->ID; $prefNum = $event->PreferencesPerSession; $regID = $data['RegistrationID']; $reg = Registration::get()->byID($regID); if (!$reg) { return false; } // @todo - handle a proper 'change game' case if ($reg->PlayerGames()->Count() > 0) { foreach ($reg->PlayerGames() as $playerGame) { $reg->PlayerGames()->removeByID($playerGame->ID); $playerGame->delete(); } } $favouriteID = $data["FavouriteID"]; for ($session = 1; $session <= $event->NumberOfSessions; $session++) { $notPlay = $data["NotPlaying_" . $session]; $games = Game::get()->filter(array('Session' => $session, 'ParentID' => $currentID, 'Status' => true)); // Alter prefnumber so it stops when it encounters "not Playing" if ($notPlay != 0 && $notPlay < $prefNum) { $prefNum = $notPlay; } // if first choice is to not play, don't create any games if ($notPlay === 1) { continue; } foreach ($games as $game) { $gamePref = $data["GameID_" . $game->ID]; // only store games with a preference higher than our threshold if ($gamePref > $prefNum || !isset($gamePref)) { continue; } $playerGame = PlayerGame::create(); $form->saveInto($playerGame); $playerGame->GameID = $game->ID; $playerGame->ParentID = $regID; $playerGame->Preference = $gamePref; if ($favouriteID == $game->ID) { $playerGame->Favourite = true; } try { $playerGame->write(); } catch (ValidationException $e) { $form->sessionMessage($e->getResult()->message(), 'bad'); return; } } } return $playerGame; }