diff --git a/app/Http/Controllers/EventAccessCodesController.php b/app/Http/Controllers/EventAccessCodesController.php index 60e32568..bb817e00 100644 --- a/app/Http/Controllers/EventAccessCodesController.php +++ b/app/Http/Controllers/EventAccessCodesController.php @@ -57,8 +57,20 @@ class EventAccessCodesController extends MyBaseController ]); } + // 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 = strtoupper(strip_tags($request->get('code'))); + $eventAccessCode->code = $newAccessCode; $eventAccessCode->save(); session()->flash('message', trans('AccessCodes.success_message')); diff --git a/app/Models/EventAccessCodes.php b/app/Models/EventAccessCodes.php index 3412405a..34ada208 100644 --- a/app/Models/EventAccessCodes.php +++ b/app/Models/EventAccessCodes.php @@ -2,6 +2,9 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; class EventAccessCodes extends MyBaseModel @@ -20,6 +23,19 @@ class EventAccessCodes extends MyBaseModel ->increment('usage_count'); } + /** + * @param $code + * @param $event_id + * @return Collection + */ + public static function findFromCode($code, $event_id) + { + return (new static()) + ->where('code', $code) + ->where('event_id', $event_id) + ->get(); + } + /** * The validation rules. * @@ -35,15 +51,15 @@ class EventAccessCodes extends MyBaseModel /** * The Event associated with the event access code. * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @return BelongsTo */ public function event() { - return $this->belongsTo(\App\Models\Event::class, 'event_id', 'id'); + return $this->belongsTo(Event::class, 'event_id', 'id'); } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + * @return BelongsToMany */ function tickets() { diff --git a/resources/lang/en/AccessCodes.php b/resources/lang/en/AccessCodes.php index 49c0786c..63c8a742 100644 --- a/resources/lang/en/AccessCodes.php +++ b/resources/lang/en/AccessCodes.php @@ -15,4 +15,5 @@ return [ 'no_tickets_matched' => 'No Tickets matched to your access code', 'select_access_code' => 'Select Access Codes', 'access_codes_usage_count' => 'Usage Count', + 'unique_error' => 'Code already used for this event', ]; \ No newline at end of file