示例#1
0
 /**
  * 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());
 }
示例#3
0
 /**
  * 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'));
 }