diff --git a/src/Models/Concerns/HasSubscriptions.php b/src/Models/Concerns/HasSubscriptions.php index cd7e68a..df76240 100644 --- a/src/Models/Concerns/HasSubscriptions.php +++ b/src/Models/Concerns/HasSubscriptions.php @@ -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