user()->id; $team_id = currentTeam()->id ?? null; $email = auth()->user()->email ?? null; $name = auth()->user()->name ?? null; $url = "https://store.coollabs.io/checkout/buy/$checkout_id?"; if ($user_id) { $url .= "&checkout[custom][user_id]={$user_id}"; } if (isset($team_id)) { $url .= "&checkout[custom][team_id]={$team_id}"; } if ($email) { $url .= "&checkout[email]={$email}"; } if ($name) { $url .= "&checkout[name]={$name}"; } return $url; } function getPaymentLink() { return currentTeam()->subscription->lemon_update_payment_menthod_url; } function getRenewDate() { return Carbon::parse(currentTeam()->subscription->lemon_renews_at)->format('Y-M-d H:i:s'); } function getEndDate() { return Carbon::parse(currentTeam()->subscription->lemon_renews_at)->format('Y-M-d H:i:s'); } function isSubscriptionActive() { if (! isCloud()) { return false; } $team = currentTeam(); if (! $team) { return false; } $subscription = $team?->subscription; if (is_null($subscription)) { return false; } if (isLemon()) { return $subscription->lemon_status === 'active'; } // if (isPaddle()) { // return $subscription->paddle_status === 'active'; // } if (isStripe()) { return $subscription->stripe_invoice_paid === true; } return false; } function isSubscriptionOnGracePeriod() { $team = currentTeam(); if (! $team) { return false; } $subscription = $team?->subscription; if (! $subscription) { return false; } if (isLemon()) { $is_still_grace_period = $subscription->lemon_ends_at && Carbon::parse($subscription->lemon_ends_at) > Carbon::now(); return $is_still_grace_period; } if (isStripe()) { return $subscription->stripe_cancel_at_period_end; } return false; } function subscriptionProvider() { return config('subscription.provider'); } function isLemon() { return config('subscription.provider') === 'lemon'; } function isStripe() { return config('subscription.provider') === 'stripe'; } function isPaddle() { return config('subscription.provider') === 'paddle'; } function getStripeCustomerPortalSession(Team $team) { Stripe::setApiKey(config('subscription.stripe_api_key')); $return_url = route('subscription.show'); $stripe_customer_id = data_get($team, 'subscription.stripe_customer_id'); if (! $stripe_customer_id) { return null; } $session = \Stripe\BillingPortal\Session::create([ 'customer' => $stripe_customer_id, 'return_url' => $return_url, ]); return $session; } function allowedPathsForUnsubscribedAccounts() { return [ 'subscription/new', 'login', 'logout', 'waitlist', 'force-password-reset', 'livewire/update', ]; } function allowedPathsForBoardingAccounts() { return [ ...allowedPathsForUnsubscribedAccounts(), 'onboarding', 'livewire/update', ]; } function allowedPathsForInvalidAccounts() { return [ 'logout', 'verify', 'force-password-reset', 'livewire/update', ]; }