126 lines
3.5 KiB
PHP
126 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Event;
|
|
use App\Models\EventAccessCodes;
|
|
use Illuminate\Contracts\View\Factory;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
/*
|
|
Attendize.com - Event Management & Ticketing
|
|
*/
|
|
|
|
class EventAccessCodesController extends MyBaseController
|
|
{
|
|
|
|
/**
|
|
* @param $event_id
|
|
* @return mixed
|
|
*/
|
|
public function show($event_id)
|
|
{
|
|
$event = Auth::user()->is_admin ?
|
|
Event::findOrFail($event_id) :
|
|
Event::scope()->findOrFail($event_id);
|
|
return view('ManageEvent.AccessCodes', [
|
|
'event' => $event,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @param $event_id
|
|
* @return Factory|View
|
|
*/
|
|
public function showCreate($event_id)
|
|
{
|
|
$event = Auth::user()->is_admin ?
|
|
Event::find($event_id) :
|
|
Event::scope()->find($event_id);
|
|
|
|
return view('ManageEvent.Modals.CreateAccessCode', [
|
|
'event' => $event,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Creates a ticket
|
|
*
|
|
* @param Request $request
|
|
* @param $event_id
|
|
* @return JsonResponse
|
|
*/
|
|
public function postCreate(Request $request, $event_id)
|
|
{
|
|
$eventAccessCode = new EventAccessCodes();
|
|
|
|
if (!$eventAccessCode->validate($request->all())) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'messages' => $eventAccessCode->errors(),
|
|
]);
|
|
}
|
|
|
|
// Checks for no duplicates
|
|
$newAccessCode = strtoupper(strip_tags($request->get('code')));
|
|
if (EventAccessCodes::findFromCode($newAccessCode, $event_id)->count() > 0) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'messages' => [
|
|
'code' => [ trans('AccessCodes.unique_error') ],
|
|
],
|
|
]);
|
|
}
|
|
|
|
// Saves the new access code if validation and dupe check passed
|
|
$eventAccessCode->event_id = $event_id;
|
|
$eventAccessCode->code = $newAccessCode;
|
|
$eventAccessCode->save();
|
|
|
|
session()->flash('message', trans('AccessCodes.success_message'));
|
|
|
|
return response()->json([
|
|
'status' => 'success',
|
|
'id' => $eventAccessCode->id,
|
|
'message' => trans("Controllers.refreshing"),
|
|
'redirectUrl' => route('showEventAccessCodes', [ 'event_id' => $event_id ]),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @param integer $event_id
|
|
* @param integer $access_code_id
|
|
* @return JsonResponse
|
|
* @throws \Exception
|
|
*/
|
|
public function postDelete($event_id, $access_code_id)
|
|
{
|
|
/** @var Event $event */
|
|
$event = Auth::user()->is_admin ?
|
|
Event::findOrFail($event_id) :
|
|
Event::scope()->findOrFail($event_id);
|
|
|
|
if ($event->hasAccessCode($access_code_id)) {
|
|
/** @var EventAccessCodes $accessCode */
|
|
$accessCode = EventAccessCodes::find($access_code_id);
|
|
if ($accessCode->usage_count > 0) {
|
|
return response()->json([
|
|
'status' => 'error',
|
|
'message' => trans('AccessCodes.cannot_delete_used_code'),
|
|
]);
|
|
}
|
|
$accessCode->delete();
|
|
}
|
|
|
|
session()->flash('message', trans('AccessCodes.delete_message'));
|
|
|
|
return response()->json([
|
|
'status' => 'success',
|
|
'message' => trans("Controllers.refreshing"),
|
|
'redirectUrl' => route('showEventAccessCodes', [ 'event_id' => $event_id ]),
|
|
]);
|
|
}
|
|
}
|