Moved the duplicate checks (#568) to this PR as they are related

This commit is contained in:
Etienne Marais 2019-02-14 17:12:07 +02:00
parent 0cabc92200
commit 33d96905f6
No known key found for this signature in database
GPG Key ID: 5CE3285D17AE9F29
3 changed files with 33 additions and 4 deletions

View File

@ -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->event_id = $event_id;
$eventAccessCode->code = strtoupper(strip_tags($request->get('code'))); $eventAccessCode->code = $newAccessCode;
$eventAccessCode->save(); $eventAccessCode->save();
session()->flash('message', trans('AccessCodes.success_message')); session()->flash('message', trans('AccessCodes.success_message'));

View File

@ -2,6 +2,9 @@
namespace App\Models; 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; use Illuminate\Database\Eloquent\SoftDeletes;
class EventAccessCodes extends MyBaseModel class EventAccessCodes extends MyBaseModel
@ -20,6 +23,19 @@ class EventAccessCodes extends MyBaseModel
->increment('usage_count'); ->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. * The validation rules.
* *
@ -35,15 +51,15 @@ class EventAccessCodes extends MyBaseModel
/** /**
* The Event associated with the event access code. * The Event associated with the event access code.
* *
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo * @return BelongsTo
*/ */
public function event() 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() function tickets()
{ {

View File

@ -15,4 +15,5 @@ return [
'no_tickets_matched' => 'No Tickets matched to your access code', 'no_tickets_matched' => 'No Tickets matched to your access code',
'select_access_code' => 'Select Access Codes', 'select_access_code' => 'Select Access Codes',
'access_codes_usage_count' => 'Usage Count', 'access_codes_usage_count' => 'Usage Count',
'unique_error' => 'Code already used for this event',
]; ];