/** * @license http://opensource.org/licenses/lgpl-3.0.html * @author Matthew McNaney <mcnaney at gmail dot com> */ function tailgate_install(&$content) { $db = Database::newDB(); $db->begin(); try { $game = new \tailgate\Resource\Game(); $t1 = $game->createTable($db); $lot = new \tailgate\Resource\Lot(); $t2 = $lot->createTable($db); $lottery = new \tailgate\Resource\Lottery(); $t3 = $lottery->createTable($db); $spot = new \tailgate\Resource\Spot(); $t4 = $spot->createTable($db); $student = new \tailgate\Resource\Student(); $t5 = $student->createTable($db); $visitor = new \tailgate\Resource\Visitor(); $t6 = $visitor->createTable($db); } catch (\Exception $e) { $db->buildTable('tg_game')->drop(true); $db->buildTable('tg_lot')->drop(true); $db->buildTable('tg_lottery')->drop(true); $db->buildTable('tg_spot')->drop(true); $db->buildTable('tg_student')->drop(true); $db->buildTable('tg_visitor')->drop(true); $db->rollback(); throw $e; } $db->commit(); $content[] = 'Tables created'; return true; }
public function apply($student_id, $game_id) { $lotteryCheck = $this->getByStudentId($student_id); if (!empty($lotteryCheck)) { throw new \Exception('Already applied to this lottery'); } $now = time(); $game = new \tailgate\Resource\Game(); $game->setId($game_id); $gameFactory = new GameFactory(); if (!$gameFactory->loadByID($game)) { throw new \Exception('Game does not exist.'); } if ($game->getSignupStart() > $now) { throw new \Exception('Signup period has not started.'); } if ($game->getSignupEnd() < $now) { throw new \Exception('Signup period is over.'); } if ($game->getCompleted()) { throw new \Exception('This game lottery is complete. No more applications are allowed.'); } $lottery = new Resource(); $lottery->setGameId($game_id); $lottery->setStudentId($student_id); self::saveResource($lottery); }