coolify/bootstrap/helpers/subscriptions.php

83 lines
1.9 KiB
PHP
Raw Normal View History

2023-07-13 22:03:27 +02:00
<?php
use Illuminate\Support\Carbon;
2023-08-14 14:00:10 +02:00
function getSubscriptionLink($type)
2023-07-13 22:03:27 +02:00
{
2023-08-23 16:40:59 +02:00
$checkout_id = config("subscription.lemon_squeezy_checkout_id_$type");
2023-07-27 16:22:13 +02:00
if (!$checkout_id) {
return null;
}
2023-07-13 22:03:27 +02:00
$user_id = auth()->user()->id;
2023-08-22 17:44:49 +02:00
$team_id = currentTeam()->id ?? null;
2023-07-13 22:03:27 +02:00
$email = auth()->user()->email ?? null;
$name = auth()->user()->name ?? null;
2023-07-14 13:58:05 +02:00
$url = "https://store.coollabs.io/checkout/buy/$checkout_id?";
2023-07-13 22:03:27 +02:00
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;
}
2023-07-14 11:27:08 +02:00
function getPaymentLink()
{
2023-08-22 17:44:49 +02:00
return currentTeam()->subscription->lemon_update_payment_menthod_url;
2023-07-13 22:03:27 +02:00
}
2023-07-14 11:27:08 +02:00
function getRenewDate()
{
2023-08-22 17:44:49 +02:00
return Carbon::parse(currentTeam()->subscription->lemon_renews_at)->format('Y-M-d H:i:s');
2023-07-13 22:03:27 +02:00
}
2023-07-14 11:27:08 +02:00
function getEndDate()
{
2023-08-22 17:44:49 +02:00
return Carbon::parse(currentTeam()->subscription->lemon_renews_at)->format('Y-M-d H:i:s');
2023-07-14 11:27:08 +02:00
}
2023-08-14 15:22:29 +02:00
function is_subscription_active()
2023-07-14 11:27:08 +02:00
{
2023-08-22 17:44:49 +02:00
$team = currentTeam();
2023-08-14 16:56:13 +02:00
2023-08-14 15:22:29 +02:00
if (!$team) {
return false;
}
2023-08-22 17:44:49 +02:00
if (isInstanceAdmin()) {
2023-08-14 16:56:13 +02:00
return true;
}
2023-08-14 15:22:29 +02:00
$subscription = $team?->subscription;
2023-08-14 16:56:13 +02:00
2023-08-14 15:22:29 +02:00
if (!$subscription) {
return false;
}
$is_active = $subscription->lemon_status === 'active';
2023-08-14 16:56:13 +02:00
return $is_active;
2023-08-14 15:22:29 +02:00
}
function is_subscription_in_grace_period()
{
2023-08-22 17:44:49 +02:00
$team = currentTeam();
2023-08-14 15:22:29 +02:00
if (!$team) {
return false;
}
2023-08-22 17:44:49 +02:00
if (isInstanceAdmin()) {
2023-08-14 16:56:13 +02:00
return true;
}
2023-08-14 15:22:29 +02:00
$subscription = $team?->subscription;
if (!$subscription) {
return false;
}
$is_still_grace_period = $subscription->lemon_ends_at &&
Carbon::parse($subscription->lemon_ends_at) > Carbon::now();
2023-08-14 16:56:13 +02:00
return $is_still_grace_period;
2023-07-14 11:27:08 +02:00
}