feat: revenue cat
This commit is contained in:
+17
-13
@@ -25,13 +25,12 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Laravel\Cashier\Billable;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
|
||||
class User extends Authenticatable implements FilamentUser, HasAvatar, HasLocalePreference, MustVerifyEmail
|
||||
{
|
||||
/** @use HasFactory<\Database\Factories\UserFactory> */
|
||||
use Billable, HasApiTokens, HasFactory, HasUlids, Notifiable, SoftDeletes;
|
||||
use HasApiTokens, HasFactory, HasUlids, Notifiable, SoftDeletes;
|
||||
|
||||
protected $attributes = [
|
||||
'social_notifications_enabled' => true,
|
||||
@@ -55,7 +54,10 @@ class User extends Authenticatable implements FilamentUser, HasAvatar, HasLocale
|
||||
'bio',
|
||||
'account_verified_at',
|
||||
'certification_purchased_at',
|
||||
'trial_ends_at',
|
||||
'subscription_product_id',
|
||||
'subscription_store',
|
||||
'subscription_expires_at',
|
||||
'subscription_is_trial',
|
||||
'daily_calorie_goal',
|
||||
'daily_protein_goal',
|
||||
'daily_carbs_goal',
|
||||
@@ -109,7 +111,8 @@ class User extends Authenticatable implements FilamentUser, HasAvatar, HasLocale
|
||||
'social_notifications_enabled' => 'boolean',
|
||||
'engagement_reminders_enabled' => 'boolean',
|
||||
'suspended_at' => 'datetime',
|
||||
'trial_ends_at' => 'datetime',
|
||||
'subscription_expires_at' => 'datetime',
|
||||
'subscription_is_trial' => 'boolean',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -133,11 +136,6 @@ class User extends Authenticatable implements FilamentUser, HasAvatar, HasLocale
|
||||
return $this->hasMany(AiUsage::class);
|
||||
}
|
||||
|
||||
public function paymentTransactions(): HasMany
|
||||
{
|
||||
return $this->hasMany(PaymentTransaction::class);
|
||||
}
|
||||
|
||||
public function identityVerificationRequest(): HasOne
|
||||
{
|
||||
return $this->hasOne(IdentityVerificationRequest::class);
|
||||
@@ -229,16 +227,22 @@ class User extends Authenticatable implements FilamentUser, HasAvatar, HasLocale
|
||||
|
||||
public function canAnalyzeMeals(): bool
|
||||
{
|
||||
return $this->subscribed('default') || $this->onGenericTrial();
|
||||
return $this->hasActiveSubscription();
|
||||
}
|
||||
|
||||
public function analysisAccessLevel(): string
|
||||
{
|
||||
if ($this->subscribed('default')) {
|
||||
return 'subscribed';
|
||||
if (! $this->hasActiveSubscription()) {
|
||||
return 'free';
|
||||
}
|
||||
|
||||
return $this->onGenericTrial() ? 'trial' : 'free';
|
||||
return $this->subscription_is_trial ? 'trial' : 'subscribed';
|
||||
}
|
||||
|
||||
public function hasActiveSubscription(): bool
|
||||
{
|
||||
return $this->subscription_product_id !== null
|
||||
&& $this->subscription_expires_at?->isFuture() === true;
|
||||
}
|
||||
|
||||
public function hasPurchasedCertification(): bool
|
||||
|
||||
Reference in New Issue
Block a user