From 580c544650e453185fd719700fa14ca992f00074 Mon Sep 17 00:00:00 2001 From: Abbas Arif <43321373+buzzclue@users.noreply.github.com> Date: Mon, 15 Jan 2024 03:28:45 +0500 Subject: [PATCH 1/4] Update HasSubscriptions.php -1 for unlimited --- src/Models/Concerns/HasSubscriptions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Concerns/HasSubscriptions.php b/src/Models/Concerns/HasSubscriptions.php index 14b3fe1..5816576 100644 --- a/src/Models/Concerns/HasSubscriptions.php +++ b/src/Models/Concerns/HasSubscriptions.php @@ -226,7 +226,7 @@ public function canConsume($featureName, ?float $consumption = null): bool $remainingCharges = $this->getRemainingCharges($featureName); - return $remainingCharges >= $consumption; + return $remainingCharges === -1 || $remainingCharges >= $consumption; } public function cantConsume($featureName, ?float $consumption = null): bool From 217e91bf2dfb35a6a5515be7fb7e9f2a486a7bc7 Mon Sep 17 00:00:00 2001 From: Abbas Arif <43321373+buzzclue@users.noreply.github.com> Date: Mon, 15 Jan 2024 06:10:32 +0500 Subject: [PATCH 2/4] Update HasSubscriptions.php unlimited usage --- src/Models/Concerns/HasSubscriptions.php | 53 +++++++++++++----------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/Models/Concerns/HasSubscriptions.php b/src/Models/Concerns/HasSubscriptions.php index 5816576..4adef19 100644 --- a/src/Models/Concerns/HasSubscriptions.php +++ b/src/Models/Concerns/HasSubscriptions.php @@ -154,12 +154,12 @@ public function isSubscribedTo(Plan $plan): bool public function missingSubscriptionTo(Plan $plan): bool { - return ! $this->hasSubscriptionTo($plan); + return !$this->hasSubscriptionTo($plan); } public function isNotSubscribedTo(Plan $plan): bool { - return ! $this->isSubscribedTo($plan); + return !$this->isSubscribedTo($plan); } public function switchTo(Plan $plan, $expiration = null, $immediately = true): Subscription @@ -216,7 +216,7 @@ public function canConsume($featureName, ?float $consumption = null): bool return false; } - if (! $feature->consumable) { + if (!$feature->consumable) { return true; } @@ -226,17 +226,17 @@ public function canConsume($featureName, ?float $consumption = null): bool $remainingCharges = $this->getRemainingCharges($featureName); - return $remainingCharges === -1 || $remainingCharges >= $consumption; + return $remainingCharges >= $consumption; } public function cantConsume($featureName, ?float $consumption = null): bool { - return ! $this->canConsume($featureName, $consumption); + return !$this->canConsume($featureName, $consumption); } public function hasFeature($featureName): bool { - return ! $this->missingFeature($featureName); + return !$this->missingFeature($featureName); } public function missingFeature($featureName): bool @@ -293,13 +293,12 @@ protected function consumeNotQuotaFeature(Feature $feature, ?float $consumption : null; $featureConsumption = $this->featureConsumptions() - ->make([ - 'consumption' => $consumption, - 'expired_at' => $consumptionExpiration, - ]) - ->feature() - ->associate($feature); + ->whereFeatureId($feature->id) + ->firstOrNew(); + $featureConsumption->feature()->associate($feature); + $featureConsumption->consumption += $consumption; + $featureConsumption->expired_at = $consumptionExpiration; $featureConsumption->save(); return $featureConsumption; @@ -327,9 +326,12 @@ protected function getSubscriptionChargesForAFeature(Model $feature): float return 0; } - return $subscriptionFeature - ->pivot - ->charges; + $charges = $subscriptionFeature->pivot->charges; + if ($charges == -1) { + return INF; + } + + return $charges; } protected function getTicketChargesForAFeature(Model $feature): float @@ -341,9 +343,12 @@ protected function getTicketChargesForAFeature(Model $feature): float return 0; } - return $ticketFeature - ->tickets - ->sum('charges'); + $charges = $ticketFeature->tickets->sum('charges'); + if ($charges === -1) { + return INF; + } + + return $charges; } public function getFeature(string $featureName): ?Feature @@ -355,7 +360,7 @@ public function getFeature(string $featureName): ?Feature public function getFeaturesAttribute(): Collection { - if (! is_null($this->loadedFeatures)) { + if (!is_null($this->loadedFeatures)) { return $this->loadedFeatures; } @@ -367,7 +372,7 @@ public function getFeaturesAttribute(): Collection protected function loadSubscriptionFeatures(): Collection { - if (! is_null($this->loadedSubscriptionFeatures)) { + if (!is_null($this->loadedSubscriptionFeatures)) { return $this->loadedSubscriptionFeatures; } @@ -378,17 +383,17 @@ protected function loadSubscriptionFeatures(): Collection protected function loadTicketFeatures(): Collection { - if (! config('soulbscription.feature_tickets')) { + if (!config('soulbscription.feature_tickets')) { return $this->loadedTicketFeatures = Collection::empty(); } - if (! is_null($this->loadedTicketFeatures)) { + if (!is_null($this->loadedTicketFeatures)) { return $this->loadedTicketFeatures; } return $this->loadedTicketFeatures = Feature::with([ - 'tickets' => fn (HasMany $query) => $query->withoutExpired()->whereMorphedTo('subscriber', $this), - ]) + 'tickets' => fn (HasMany $query) => $query->withoutExpired()->whereMorphedTo('subscriber', $this), + ]) ->whereHas( 'tickets', fn (Builder $query) => $query->withoutExpired()->whereMorphedTo('subscriber', $this), From c3085abe13f3e1ae89edfebd0822cd5af1897b1e Mon Sep 17 00:00:00 2001 From: Abbas Arif <43321373+buzzclue@users.noreply.github.com> Date: Tue, 13 Feb 2024 00:33:13 +0500 Subject: [PATCH 3/4] restore code style --- src/Models/Concerns/HasSubscriptions.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Models/Concerns/HasSubscriptions.php b/src/Models/Concerns/HasSubscriptions.php index 4adef19..0193ae8 100644 --- a/src/Models/Concerns/HasSubscriptions.php +++ b/src/Models/Concerns/HasSubscriptions.php @@ -154,12 +154,12 @@ public function isSubscribedTo(Plan $plan): bool public function missingSubscriptionTo(Plan $plan): bool { - return !$this->hasSubscriptionTo($plan); + return ! $this->hasSubscriptionTo($plan); } public function isNotSubscribedTo(Plan $plan): bool { - return !$this->isSubscribedTo($plan); + return ! $this->isSubscribedTo($plan); } public function switchTo(Plan $plan, $expiration = null, $immediately = true): Subscription @@ -216,7 +216,7 @@ public function canConsume($featureName, ?float $consumption = null): bool return false; } - if (!$feature->consumable) { + if (! $feature->consumable) { return true; } @@ -231,12 +231,12 @@ public function canConsume($featureName, ?float $consumption = null): bool public function cantConsume($featureName, ?float $consumption = null): bool { - return !$this->canConsume($featureName, $consumption); + return ! $this->canConsume($featureName, $consumption); } public function hasFeature($featureName): bool { - return !$this->missingFeature($featureName); + return ! $this->missingFeature($featureName); } public function missingFeature($featureName): bool @@ -372,7 +372,7 @@ public function getFeaturesAttribute(): Collection protected function loadSubscriptionFeatures(): Collection { - if (!is_null($this->loadedSubscriptionFeatures)) { + if (! is_null($this->loadedSubscriptionFeatures)) { return $this->loadedSubscriptionFeatures; } @@ -383,17 +383,17 @@ protected function loadSubscriptionFeatures(): Collection protected function loadTicketFeatures(): Collection { - if (!config('soulbscription.feature_tickets')) { + if (! config('soulbscription.feature_tickets')) { return $this->loadedTicketFeatures = Collection::empty(); } - if (!is_null($this->loadedTicketFeatures)) { + if (! is_null($this->loadedTicketFeatures)) { return $this->loadedTicketFeatures; } return $this->loadedTicketFeatures = Feature::with([ - 'tickets' => fn (HasMany $query) => $query->withoutExpired()->whereMorphedTo('subscriber', $this), - ]) + 'tickets' => fn (HasMany $query) => $query->withoutExpired()->whereMorphedTo('subscriber', $this), + ]) ->whereHas( 'tickets', fn (Builder $query) => $query->withoutExpired()->whereMorphedTo('subscriber', $this), From 6066fe1853abcab46868f164d33f6dcf5a19015a Mon Sep 17 00:00:00 2001 From: Abbas Arif <43321373+buzzclue@users.noreply.github.com> Date: Tue, 13 Feb 2024 00:34:05 +0500 Subject: [PATCH 4/4] restoring code style --- src/Models/Concerns/HasSubscriptions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Concerns/HasSubscriptions.php b/src/Models/Concerns/HasSubscriptions.php index 0193ae8..de7cd9e 100644 --- a/src/Models/Concerns/HasSubscriptions.php +++ b/src/Models/Concerns/HasSubscriptions.php @@ -360,7 +360,7 @@ public function getFeature(string $featureName): ?Feature public function getFeaturesAttribute(): Collection { - if (!is_null($this->loadedFeatures)) { + if (! is_null($this->loadedFeatures)) { return $this->loadedFeatures; }