/** * Store a newly created resource in storage. * * @param Gladiator\Http\Requests\UserRequest $request * @return \Illuminate\Http\Response */ public function store(UserRequest $request) { $account = $this->registrar->findUserAccount($request->all()); if ($account instanceof User) { $user = $account; } else { $credentials = $request->all(); $credentials['id'] = $account->id; unset($credentials['term']); $user = $this->registrar->createUser((object) $credentials); } Log::debug('Gladiator\\Http\\Controllers\\Api\\UsersController -- Storing user', ['user' => $user]); $contest = Contest::with(['waitingRoom', 'competitions'])->where('campaign_id', '=', $request['campaign_id'])->where('campaign_run_id', '=', $request['campaign_run_id'])->firstOrFail(); $roomAssignment = $user->waitingRooms()->find($contest->waitingRoom->id); if ($roomAssignment) { // @TODO: maybe add more detail to response to indicate user already in a room? return $this->item($user); } $contest->waitingRoom->users()->attach($user->id); $contest = $this->manager->appendCampaign($contest); // Fire off welcome Email $params = ['type' => 'welcome', 'key' => 0, 'contest_id' => $contest->id]; $this->manager->sendEmail($user, $contest, $params); // @TODO: maybe add more detail to response to indicate which room user was added to? return $this->item($user); }
/** * Get a collection of contests * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function index(Request $request) { $campaignRunId = $request->query('campaign_run_id'); // @TODO: below is temporary fix until Phoenix GET request updates run_nid param to run_id. // We want to aim to not have any proprietary Drupal id names :P if (!$campaignRunId) { $campaignRunId = $request->query('run_nid'); } if (isset($campaignRunId)) { $contest = Contest::with('waitingRoom')->where('campaign_run_id', $campaignRunId)->firstOrFail(); return $this->item($contest); } return $this->collection(Contest::all()); }
/** * Collect Contest information with Waiting Room and Competitions. * * @param string|\Gladiator\Models\Contest $data * @return \Gladiator\Models\Contest */ public function collectContestInfo($data) { if ($data instanceof Contest) { $contest = $data->with('waitingRoom.users', 'competitions.users')->firstOrFail(); } else { $contest = Contest::with('waitingRoom.users', 'competitions.users')->findOrFail($data); } return $contest; }
/** * Edit the specified resources. * * @param string $contestId * @return \Illuminate\Http\Response */ public function edit($contestId) { $contest = Contest::with('messages')->find($contestId); return view('contests.messages.edit', compact('contest')); }