namespace App\Http\Controllers;
+use App\Events\ApplicationAdded;
+use App\Models\Application;
+use App\Models\Protocol;
use App\Models\Tournament;
+use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\Request;
class TournamentController extends Controller
{
+ public function apply(Request $request, Tournament $tournament) {
+ $this->authorize('apply', $tournament);
+ $application = new Application();
+ $application->tournament_id = $tournament->id;
+ $application->user_id = $request->user()->id;
+ $application->save();
+ ApplicationAdded::dispatch($application);
+ Protocol::applicationReceived($tournament, $application, $request->user());
+ return $tournament->toJson();
+ }
+
public function single(Request $request, $id) {
$tournament = Tournament::with(
+ 'applications',
+ 'applications.user',
'rounds',
'rounds.results',
'participants',
'participants.user',
)->findOrFail($id);
$this->authorize('view', $tournament);
+ foreach ($tournament->rounds as $round) {
+ try {
+ $this->authorize('seeResults', $round);
+ } catch (AuthorizationException) {
+ $round->hideResults();
+ }
+ }
return $tournament->toJson();
}