response() ->setStatusCode(200); } /** * Store a newly created resource in storage. * * @param EventRequest $request * @return \Illuminate\Http\JsonResponse */ public function store(EventRequest $request) { $validated = $request->validated(); $event = $request->user()->events()->create($validated); $event->save(); return (new EventResource($event)) ->response() ->setStatusCode(201); } /** * Display the specified resource. * * @param \App\Models\Event $event * @return \Illuminate\Http\JsonResponse */ public function show(Event $event) { return (new EventResource($event)) ->response() ->setStatusCode(200); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Event $event * @return \Illuminate\Http\JsonResponse */ public function update(EventRequest $request, Event $event) { $this->authorize('update', $event); $event->update($request->all()); return (new EventResource($event)) ->response() ->setStatusCode(200); } /** * Remove the specified resource from storage. * * @param \App\Models\Event $event * @return \Illuminate\Http\Response */ public function destroy(Event $event) { $this->authorize('delete', $event); $event->delete(); return response([], 204); } public function inviteUser(Event $event, User $user) { $this->authorize('update', $event); $event->guests()->attach($user); return (new EventResource($event)) ->response() ->setStatusCode(200); } public function removeInviteUser(Event $event, User $user) { $this->authorize('delete', $event); $event->guests()->detach($user); return (new EventResource($event)) ->response() ->setStatusCode(204); } public function addGuestToStaffEvent(Event $event, User $user) { $this->authorize('delete', $event); $event->guests()->updateExistingPivot($user, ['is_staff' => true], false); return (new EventResource($event)) ->response() ->setStatusCode(200); } public function deleteGuestToStaffEvent(Event $event, User $user) { $this->authorize('delete', $event); $event->guests()->updateExistingPivot($user, ['is_staff' => false], false); return (new EventResource($event)) ->response() ->setStatusCode(200); } public function userConfirmParticipation(Event $event) { $this->authorize('participation', $event); $event->guests()->updateExistingPivot(auth()->user(), ['validated_at' => now()->toDateTimeString()], false); return (new EventResource($event)) ->response() ->setStatusCode(200); } public function userDeleteInvitation(Event $event) { $this->authorize('participation', $event); $event->guests()->detach(auth()->user()); return response([], 204); } public function addGuestWithEmail(Event $event) { $data = request()->validate([ 'email' => 'required|email', ]); $event->emailedGuests()->save(new EventGuestsNonUsers(['email' => $data['email']])); return (new EventResource($event)) ->response() ->setStatusCode(201); } public function guestCanReadEvent(Event $event) { $guest = request()->guest; if (!$guest->read_at) { $guest->update(['read_at' => now()->toDateTimeString()]); } return (new EventResource($event)) ->response() ->setStatusCode(200); } public function guestCanConfirmEvent(Event $event) { $guest = request()->guest; $guest->update(['validated_at' => now()->toDateTimeString()]); return (new EventResource($event)) ->response() ->setStatusCode(200); } }