154 lines
3.6 KiB
PHP
154 lines
3.6 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);
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|