/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @param $guildSlug * @param $occurrenceId * @return \Illuminate\Http\Response */ public function store(Request $request, $guildSlug, $occurrenceId) { $occurrence = EventOccurrence::with(['event', 'event.guild', 'signups', 'signups.character', 'signups.character.user'])->whereHas('event.guild', function ($query) use($guildSlug) { $query->where('slug', $guildSlug); })->findOrFail($occurrenceId); $event = $occurrence->event; $guild = $event->guild; $signups = $occurrence->signups; $character = Character::whereHas('guilds', function ($query) use($guild) { $query->where('guilds.id', $guild->id); })->where(['user_id' => Auth::user()->id])->first(); if ($character == null) { abort(401, 'No characters in that guild'); } foreach ($signups as $signup) { if ($signup->character_id == $character->id) { return $this->update($request, $guildSlug, $occurrenceId, $signup->id); } } $signup = new Signup(); $signup->character_id = $character->id; $signup->event_occurrence_id = $occurrence->id; $signup->status = $request->get('status'); $signup->save(); return redirect()->route('guilds.events.show', [$guildSlug, $occurrenceId]); }
/** * Display the specified resource. * * @param $guildSlug * @param $occurrenceId * @return \Illuminate\Http\Response */ public function show($guildSlug, $occurrenceId) { $guild = Guild::where('slug', $guildSlug)->firstOrFail(); $occurrence = EventOccurrence::with(['event', 'event.guild'])->whereHas('event.guild', function ($query) use($guild) { $query->where('id', $guild->id); })->findOrFail($occurrenceId); $event = $occurrence->event; $guild = $event->guild; $signups = Signup::where(['event_occurrence_id' => $occurrence->id])->orderBy('created_at')->get(); $comments = Comment::where(['event_occurrence_id' => $occurrence->id])->orderBy('created_at')->get(); $character = Character::whereHas('guilds', function ($query) use($guild) { $query->where('guilds.id', $guild->id); })->where(['user_id' => Auth::user()->id])->firstOrFail(); $ownSignup = null; $isSigned = false; foreach ($signups as $signup) { if ($signup->character_id == $character->id) { $ownSignup = $signup; $isSigned = true; } } if ($ownSignup == null) { $ownSignup = new Signup(); } $statistic = new \stdClass(); foreach (['YES', 'MAYBE', 'NO'] as $status) { $name = strtolower($status); $statistic->{$name} = $signups->filter(function ($signup) use($status) { return $signup->status == $status; })->count(); } return view('guilds.events.show', compact('occurrence', 'event', 'guild', 'signups', 'comments', 'ownSignup', 'isSigned', 'statistic')); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @param $guildSlug * @param $occurrenceId * @return \Illuminate\Http\Response */ public function store(Request $request, $guildSlug, $occurrenceId) { $occurrence = EventOccurrence::with(['event', 'event.guild'])->whereHas('event.guild', function ($query) use($guildSlug) { $query->where('slug', $guildSlug); })->findOrFail($occurrenceId); $event = $occurrence->event; $guild = $event->guild; $character = Character::whereHas('guilds', function ($query) use($guild) { $query->where('guilds.id', $guild->id); })->where(['user_id' => Auth::user()->id])->first(); if ($character == null) { abort(401, 'No characters in that guild'); } $comment = new Comment($request->all()); $comment->event_occurrence_id = $occurrence->id; $comment->character_id = $character->id; $comment->save(); return redirect()->route('guilds.events.show', [$guildSlug, $occurrenceId]); }