From 6fd10d0150939fceb2494e1a504ee7b44c8ecc2e Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 17:26:56 -0400 Subject: [PATCH 01/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/Concerns/MayBeApproved.php diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php new file mode 100644 index 0000000..83b5c36 --- /dev/null +++ b/src/Concerns/MayBeApproved.php @@ -0,0 +1,15 @@ +bypassApproval = false; + return $this; + } +} From 13f82c3e7c656b61f5a9b983e1e8e5846e217758 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 17:37:27 -0400 Subject: [PATCH 02/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 83b5c36..32988d9 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -4,8 +4,16 @@ trait MayBeApproved { - use MustBeApproved; - protected bool $bypassApproval = true; + + use MustBeApproved { + MustBeApproved::__construct as private __parentConstruct; + } + + public function __construct() + { + $this->__parentConstruct(); + $this->bypassApproval = true; + } public function withApproval(): static { From 2524368d816fed7fdcc06301e9f08f75396b06e7 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 17:38:40 -0400 Subject: [PATCH 03/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 32988d9..e8d83c9 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -5,13 +5,10 @@ trait MayBeApproved { - use MustBeApproved { - MustBeApproved::__construct as private __parentConstruct; - } + use MustBeApproved; public function __construct() { - $this->__parentConstruct(); $this->bypassApproval = true; } From ac676c913ce7b5fd51717f6b7ee018d038afaba7 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 17:49:30 -0400 Subject: [PATCH 04/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 5 ----- src/Concerns/MustBeApproved.php | 11 +++++++++++ src/Models/Approval.php | 6 ++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index e8d83c9..4af522d 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -12,9 +12,4 @@ public function __construct() $this->bypassApproval = true; } - public function withApproval(): static - { - $this->bypassApproval = false; - return $this; - } } diff --git a/src/Concerns/MustBeApproved.php b/src/Concerns/MustBeApproved.php index 4a1db5f..f0f1b6b 100644 --- a/src/Concerns/MustBeApproved.php +++ b/src/Concerns/MustBeApproved.php @@ -101,4 +101,15 @@ public function withoutApproval(): static return $this; } + + /** + * Approval is explicitly required for this update + */ + public function withApproval(): static + { + $this->bypassApproval = false; + + return $this; + } + } diff --git a/src/Models/Approval.php b/src/Models/Approval.php index 4fddfea..e244b33 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -27,4 +27,10 @@ public function approvalable(): MorphTo { return $this->morphTo(); } + + public function commit() + { + $model = new $this->approvalable_type; + $model->withoutApproval()->updateOrCreate($this->new_data); + } } From ec4d8fce2019aa9c0a8f604b06e0614f1a058008 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 18:10:19 -0400 Subject: [PATCH 05/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 4af522d..5b0374f 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -6,10 +6,14 @@ trait MayBeApproved { use MustBeApproved; + protected bool $requireApproval = false; - public function __construct() + /** + * Check is the approval can be bypassed. + */ + public function isApprovalBypassed(): bool { - $this->bypassApproval = true; + if ($this->requireApproval) return false; + return true; } - } From 2250309941f74b7ccccb61bbc2742e9d3690340b Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 19:10:37 -0400 Subject: [PATCH 06/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 20 +++++++++++++++++--- src/Concerns/MustBeApproved.php | 10 ---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 5b0374f..186c190 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -6,14 +6,28 @@ trait MayBeApproved { use MustBeApproved; - protected bool $requireApproval = false; + protected bool $requiresApproval = false; /** * Check is the approval can be bypassed. */ public function isApprovalBypassed(): bool { - if ($this->requireApproval) return false; - return true; + return (!$this->requiresApproval); + } + + public function requireApproval() + { + $this->requiresApproval = true; + } + + /** + * Approval is explicitly required for this update + */ + public function withApproval(): static + { + $this->bypassApproval = false; + $this->requiresApproval = true; + return $this; } } diff --git a/src/Concerns/MustBeApproved.php b/src/Concerns/MustBeApproved.php index f0f1b6b..45da251 100644 --- a/src/Concerns/MustBeApproved.php +++ b/src/Concerns/MustBeApproved.php @@ -102,14 +102,4 @@ public function withoutApproval(): static return $this; } - /** - * Approval is explicitly required for this update - */ - public function withApproval(): static - { - $this->bypassApproval = false; - - return $this; - } - } From d6f3f7930368c072af7c850315287e8c9ddd3eb7 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 19:16:39 -0400 Subject: [PATCH 07/25] Automatic Commit - HOTFIX --- src/Models/Approval.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Approval.php b/src/Models/Approval.php index e244b33..f3b1253 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -31,6 +31,6 @@ public function approvalable(): MorphTo public function commit() { $model = new $this->approvalable_type; - $model->withoutApproval()->updateOrCreate($this->new_data); + $model->withoutApproval()->updateOrCreate($this->new_data->toArray()); } } From 339d406613489cafa2fb5ac0b0861a89a2a78ba2 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Mon, 29 Aug 2022 19:19:26 -0400 Subject: [PATCH 08/25] Automatic Commit - HOTFIX --- src/Models/Approval.php | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/Models/Approval.php b/src/Models/Approval.php index f3b1253..581312d 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -10,27 +10,31 @@ class Approval extends Model { - protected $guarded = []; + protected $guarded = []; - protected $casts = [ - 'new_data' => AsArrayObject::class, - 'original_data' => AsArrayObject::class, - 'state' => ApprovalStatus::class, - ]; + protected $casts = [ + 'new_data' => AsArrayObject::class, + 'original_data' => AsArrayObject::class, + 'state' => ApprovalStatus::class, + ]; - public static function booted() - { - static::addGlobalScope(new ApprovalStateScope()); - } + public static function booted() + { + static::addGlobalScope(new ApprovalStateScope()); + } - public function approvalable(): MorphTo - { - return $this->morphTo(); - } + public function approvalable(): MorphTo + { + return $this->morphTo(); + } - public function commit() - { - $model = new $this->approvalable_type; - $model->withoutApproval()->updateOrCreate($this->new_data->toArray()); + public function commit() + { + $model = new $this->approvalable_type; + if ($this->approvalable_id) { + $model->withoutApproval()->update($this->new_data->toArray()); + } else { + $model->withoutApproval()->create($this->new_data->toArray()); } + } } From 9652a7b57e60f423b2590aa9aa69bf0e910c9be0 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 22:52:36 -0400 Subject: [PATCH 09/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 6 ------ src/Models/Approval.php | 5 ++--- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 186c190..b017f3a 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -8,9 +8,6 @@ trait MayBeApproved use MustBeApproved; protected bool $requiresApproval = false; - /** - * Check is the approval can be bypassed. - */ public function isApprovalBypassed(): bool { return (!$this->requiresApproval); @@ -21,9 +18,6 @@ public function requireApproval() $this->requiresApproval = true; } - /** - * Approval is explicitly required for this update - */ public function withApproval(): static { $this->bypassApproval = false; diff --git a/src/Models/Approval.php b/src/Models/Approval.php index 581312d..aca9d23 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -30,11 +30,10 @@ public function approvalable(): MorphTo public function commit() { - $model = new $this->approvalable_type; if ($this->approvalable_id) { - $model->withoutApproval()->update($this->new_data->toArray()); + $this->approvalable_type::find($this->approvalable_id)->withoutApproval()->update($this->new_data->toArray()); } else { - $model->withoutApproval()->create($this->new_data->toArray()); + $this->approvalable_type::withoutApproval()->create($this->new_data->toArray()); } } } From 1d0081cb741bf289011b6a9f9fb1a244c7c5a681 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:15:14 -0400 Subject: [PATCH 10/25] Automatic Commit - HOTFIX --- src/Models/Approval.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Models/Approval.php b/src/Models/Approval.php index aca9d23..f0d34b6 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -31,9 +31,10 @@ public function approvalable(): MorphTo public function commit() { if ($this->approvalable_id) { - $this->approvalable_type::find($this->approvalable_id)->withoutApproval()->update($this->new_data->toArray()); + return $this->approvalable_type::find($this->approvalable_id)->withoutApproval()->update($this->new_data->toArray()); } else { - $this->approvalable_type::withoutApproval()->create($this->new_data->toArray()); + print "I'm going to create a new $this->approvable_type"; + return $this->approvalable_type::withoutApproval()->create($this->new_data->toArray()); } } } From ce0d4d87803b28f628d8be9dab2e6872e7638c78 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:19:38 -0400 Subject: [PATCH 11/25] Automatic Commit - HOTFIX --- src/Models/Approval.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Models/Approval.php b/src/Models/Approval.php index f0d34b6..0530f09 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -34,7 +34,10 @@ public function commit() return $this->approvalable_type::find($this->approvalable_id)->withoutApproval()->update($this->new_data->toArray()); } else { print "I'm going to create a new $this->approvable_type"; - return $this->approvalable_type::withoutApproval()->create($this->new_data->toArray()); + $model = new $this->approvalable_type; + $model->fill($this->new_data->toArray()); + $model->save(); + return $model; } } } From 60d126743030999bc47b70634b225096c3f33034 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:31:30 -0400 Subject: [PATCH 12/25] Automatic Commit - HOTFIX --- src/Models/Approval.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Models/Approval.php b/src/Models/Approval.php index 0530f09..0ccdec5 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -28,15 +28,23 @@ public function approvalable(): MorphTo return $this->morphTo(); } + public function reject() + { + $this->update(['state' => ApprovalStatus::Rejected]); + } + public function commit() { + if ($this->state != ApprovalStatus::Pending) return false; if ($this->approvalable_id) { - return $this->approvalable_type::find($this->approvalable_id)->withoutApproval()->update($this->new_data->toArray()); + $model = $this->approvalable_type::find($this->approvalable_id)->withoutApproval()->update($this->new_data->toArray()); + $this->update(['state' => ApprovalStatus::Approved]); + return $model; } else { - print "I'm going to create a new $this->approvable_type"; $model = new $this->approvalable_type; $model->fill($this->new_data->toArray()); $model->save(); + $this->update(['state' => ApprovalStatus::Approved]); return $model; } } From cd5fc1f611bde1e75b46bf76d28b4925a3227758 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:39:57 -0400 Subject: [PATCH 13/25] Automatic Commit - HOTFIX --- src/Concerns/MustBeApproved.php | 2 +- src/Models/Approval.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Concerns/MustBeApproved.php b/src/Concerns/MustBeApproved.php index 45da251..5908432 100644 --- a/src/Concerns/MustBeApproved.php +++ b/src/Concerns/MustBeApproved.php @@ -72,7 +72,7 @@ protected function getOriginalMatchingChanges(): array } /** - * Check is the approval can be bypassed. + * Check if the approval can be bypassed. */ public function isApprovalBypassed(): bool { diff --git a/src/Models/Approval.php b/src/Models/Approval.php index 0ccdec5..b656863 100644 --- a/src/Models/Approval.php +++ b/src/Models/Approval.php @@ -28,11 +28,17 @@ public function approvalable(): MorphTo return $this->morphTo(); } + /** + * Mark the approval as Rejected. + */ public function reject() { $this->update(['state' => ApprovalStatus::Rejected]); } + /** + * Commit the change to the DB and mark the approval as Approved. + */ public function commit() { if ($this->state != ApprovalStatus::Pending) return false; @@ -48,4 +54,12 @@ public function commit() return $model; } } + + /** + * Purge database of completed approvals older than $days. + */ + public static function purge(int $days = -1) + { + self::where('created_at', '<', now()->subDays($days))->where('state', '!=', ApprovalStatus::Pending)->forceDelete(); + } } From 903bd5f60473f1a14e00f5979a141abbb52715d7 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:45:16 -0400 Subject: [PATCH 14/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index b017f3a..819c09e 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -6,22 +6,22 @@ trait MayBeApproved { use MustBeApproved; - protected bool $requiresApproval = false; + protected static bool $requiresApproval = false; public function isApprovalBypassed(): bool { - return (!$this->requiresApproval); + return (!self::$requiresApproval); } - public function requireApproval() + public function requireApproval($requires = true) { - $this->requiresApproval = true; + self::$requiresApproval = $requires; } public function withApproval(): static { $this->bypassApproval = false; - $this->requiresApproval = true; + self::$requiresApproval = true; return $this; } } From bbfde24893fd353f28b43c7e3e28a9e5074dabf0 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:46:36 -0400 Subject: [PATCH 15/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 819c09e..7471da0 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -8,12 +8,12 @@ trait MayBeApproved use MustBeApproved; protected static bool $requiresApproval = false; - public function isApprovalBypassed(): bool + public static function isApprovalBypassed(): bool { - return (!self::$requiresApproval); + return !self::$requiresApproval; } - public function requireApproval($requires = true) + public static function requireApproval($requires = true) { self::$requiresApproval = $requires; } From 8bc6c46836c0a59bd79cca9937cd4a03a721946b Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:50:47 -0400 Subject: [PATCH 16/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 7471da0..a7606a7 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -8,7 +8,7 @@ trait MayBeApproved use MustBeApproved; protected static bool $requiresApproval = false; - public static function isApprovalBypassed(): bool + public function isApprovalBypassed(): bool { return !self::$requiresApproval; } From fea425e008e75fc3603d30350664f161f61ea046 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Wed, 31 Aug 2022 23:52:57 -0400 Subject: [PATCH 17/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index a7606a7..b957eb8 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -4,24 +4,22 @@ trait MayBeApproved { - use MustBeApproved; protected static bool $requiresApproval = false; + /** + * Check if the approval can be bypassed, based on static $requiresApproval flag; + */ public function isApprovalBypassed(): bool { return !self::$requiresApproval; } + /** + * Sets the $requiresApproval flag (defaults to true) + */ public static function requireApproval($requires = true) { self::$requiresApproval = $requires; } - - public function withApproval(): static - { - $this->bypassApproval = false; - self::$requiresApproval = true; - return $this; - } } From c0cc5a564528effc11fb65e3d0fc07af23264dc8 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 00:56:53 -0400 Subject: [PATCH 18/25] Automatic Commit - HOTFIX --- src/Concerns/MustBeApproved.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Concerns/MustBeApproved.php b/src/Concerns/MustBeApproved.php index 5908432..22a794c 100644 --- a/src/Concerns/MustBeApproved.php +++ b/src/Concerns/MustBeApproved.php @@ -66,7 +66,7 @@ public function approvals(): MorphMany */ protected function getOriginalMatchingChanges(): array { - return collect($this->getOriginal()) + return collect($this->getRawOriginal()) ->only(collect($this->getDirty())->keys()) ->toArray(); } From 0d967114f3a77e4c3ce4658eef50d3d3c3293144 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:06:42 -0400 Subject: [PATCH 19/25] Automatic Commit - HOTFIX --- src/Concerns/MustBeApproved.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Concerns/MustBeApproved.php b/src/Concerns/MustBeApproved.php index 22a794c..5908432 100644 --- a/src/Concerns/MustBeApproved.php +++ b/src/Concerns/MustBeApproved.php @@ -66,7 +66,7 @@ public function approvals(): MorphMany */ protected function getOriginalMatchingChanges(): array { - return collect($this->getRawOriginal()) + return collect($this->getOriginal()) ->only(collect($this->getDirty())->keys()) ->toArray(); } From 4ad3d1ae42d2f981a2aa817d3bcb1aed8f12cf64 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:10:40 -0400 Subject: [PATCH 20/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index b957eb8..549056d 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -22,4 +22,16 @@ public static function requireApproval($requires = true) { self::$requiresApproval = $requires; } + + /** + * Check if the Approval model been created already exists with a 'pending' state + */ + protected static function approvalModelExists($model): bool + { + return Approval::where('state', ApprovalStatus::Pending) + ->where('approvalable_id', $model->id) + ->where('approvalable_type', $model) + ->whereJsonContains('new_data', $model->getDirty()) + ->exists(); + } } From f5494c1a2c46f4f208e35784088e3fb375eb9404 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:12:29 -0400 Subject: [PATCH 21/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 549056d..79a8a63 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -2,6 +2,8 @@ namespace Cjmellor\Approval\Concerns; +use Cjmellor\Approval\Models\Approval; + trait MayBeApproved { use MustBeApproved; From 2d85b55de84cd28526eea0fb51074afd7ef262c9 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:14:01 -0400 Subject: [PATCH 22/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 79a8a63..417c762 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -2,6 +2,7 @@ namespace Cjmellor\Approval\Concerns; +use Cjmellor\Approval\Enums\ApprovalStatus; use Cjmellor\Approval\Models\Approval; trait MayBeApproved From 0017135b449c6e3191246f27981ad12b49ddb8d0 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:18:45 -0400 Subject: [PATCH 23/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 417c762..248f678 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -33,7 +33,7 @@ protected static function approvalModelExists($model): bool { return Approval::where('state', ApprovalStatus::Pending) ->where('approvalable_id', $model->id) - ->where('approvalable_type', $model) + ->where('approvalable_type', get_class($model)) ->whereJsonContains('new_data', $model->getDirty()) ->exists(); } From 65c951a4fbacb0894e0b2ad14a0796722c5a94a1 Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:21:43 -0400 Subject: [PATCH 24/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index 248f678..b11cca1 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -31,6 +31,8 @@ public static function requireApproval($requires = true) */ protected static function approvalModelExists($model): bool { + print "testing " . get_class($model) . " $model->id "; + print_r($model->getDirty()); return Approval::where('state', ApprovalStatus::Pending) ->where('approvalable_id', $model->id) ->where('approvalable_type', get_class($model)) From b336f056a91755fcc5b2d5e20edf61596e15e77e Mon Sep 17 00:00:00 2001 From: Scott Mankowitz Date: Thu, 1 Sep 2022 01:38:36 -0400 Subject: [PATCH 25/25] Automatic Commit - HOTFIX --- src/Concerns/MayBeApproved.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Concerns/MayBeApproved.php b/src/Concerns/MayBeApproved.php index b11cca1..ddcf757 100644 --- a/src/Concerns/MayBeApproved.php +++ b/src/Concerns/MayBeApproved.php @@ -33,6 +33,11 @@ protected static function approvalModelExists($model): bool { print "testing " . get_class($model) . " $model->id "; print_r($model->getDirty()); + return Approval::where([ + ['state', '=', ApprovalStatus::Pending], + ['new_data', '=', json_encode($model->getDirty())], + ['original_data', '=', json_encode($model->getOriginalMatchingChanges())], + ])->exists(); return Approval::where('state', ApprovalStatus::Pending) ->where('approvalable_id', $model->id) ->where('approvalable_type', get_class($model))