Files
portal/app/Http/Controllers/EventController.php
2020-08-15 12:20:24 +02:00

134 lines
3.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\EventRequest;
use App\Models\Event;
use App\Http\Resources\Event as EventResource;
use App\User;
use Illuminate\Http\Request;
class EventController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* 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);
}
}