From 7c4fedfa93589e5d2ba15360ed2e5eae80393371 Mon Sep 17 00:00:00 2001 From: AVMG20 Date: Sat, 10 Jul 2021 09:41:24 +0200 Subject: [PATCH] added activity log to vouchers, added rate limits to voucher redeem form --- app/Models/Voucher.php | 38 ++++++++++++++----- .../views/admin/activitylogs/index.blade.php | 3 ++ resources/views/home.blade.php | 3 ++ .../models/redeem_voucher_modal.blade.php | 32 +++++++++------- routes/web.php | 9 +---- 5 files changed, 55 insertions(+), 30 deletions(-) diff --git a/app/Models/Voucher.php b/app/Models/Voucher.php index 0315c8d9..bc267c5e 100644 --- a/app/Models/Voucher.php +++ b/app/Models/Voucher.php @@ -2,9 +2,11 @@ namespace App\Models; +use Exception; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use Spatie\Activitylog\Traits\LogsActivity; /** * Class Voucher @@ -12,7 +14,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; */ class Voucher extends Model { - use HasFactory; + use HasFactory, LogsActivity; /** * @var string[] @@ -41,12 +43,21 @@ class Voucher extends Model }); } + /** + * @return BelongsToMany + */ + public function users() + { + return $this->belongsToMany(User::class); + } + /** * @return string */ - public function getStatus(){ + public function getStatus() + { if ($this->users()->count() >= $this->uses) return 'USES_LIMIT_REACHED'; - if (!is_null($this->expires_at)){ + if (!is_null($this->expires_at)) { if ($this->expires_at->isPast()) return 'EXPIRED'; } @@ -56,12 +67,15 @@ class Voucher extends Model /** * @param User $user * @return float + * @throws Exception */ - public function redeem(User $user){ + public function redeem(User $user) + { try { - $user->increment('credits' , $this->credits); + $user->increment('credits', $this->credits); $this->users()->attach($user); - }catch (\Exception $exception) { + $this->logRedeem($user); + } catch (Exception $exception) { throw $exception; } @@ -69,10 +83,16 @@ class Voucher extends Model } /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany + * @param User $user + * @return null */ - public function users() + private function logRedeem(User $user) { - return $this->belongsToMany(User::class); + activity() + ->performedOn($this) + ->causedBy($user) + ->log('redeemed'); + + return null; } } diff --git a/resources/views/admin/activitylogs/index.blade.php b/resources/views/admin/activitylogs/index.blade.php index d617153a..e3cc7946 100644 --- a/resources/views/admin/activitylogs/index.blade.php +++ b/resources/views/admin/activitylogs/index.blade.php @@ -78,6 +78,9 @@ @case('created') @break + @case('redeemed') + + @break @case('deleted') @break diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 44d73ba4..8f47bbf2 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -117,6 +117,9 @@ @case('created') @break + @case('redeemed') + + @break @case('deleted') @break diff --git a/resources/views/models/redeem_voucher_modal.blade.php b/resources/views/models/redeem_voucher_modal.blade.php index 4407cf90..9bd666d0 100644 --- a/resources/views/models/redeem_voucher_modal.blade.php +++ b/resources/views/models/redeem_voucher_modal.blade.php @@ -20,7 +20,8 @@ - + @@ -31,7 +32,9 @@ @@ -40,35 +43,35 @@