mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-17 12:42:15 +01:00
Added trial and blocking to billing contract, fixed bug in running time tracker command
This commit is contained in:
committed by
Constantin Graf
parent
7c593f8f87
commit
5b7df869ad
@@ -6,10 +6,42 @@ namespace App\Service;
|
||||
|
||||
use App\Models\Organization;
|
||||
|
||||
/**
|
||||
* This class is a contract for the billing system
|
||||
* The billing system is responsible for managing the subscriptions of organizations
|
||||
* The concrete implementation of this contract for the cloud version of solidtime is implemented in an extension
|
||||
*/
|
||||
class BillingContract
|
||||
{
|
||||
/**
|
||||
* Check if the organization has a Professional subscription
|
||||
* A Professional subscription is a paid subscription that allows the organization to:
|
||||
* - Have more than 1 non-placeholder member
|
||||
* - Access features that are not available to free organizations
|
||||
*/
|
||||
public function hasSubscription(Organization $organization): bool
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the organization has a trial subscription
|
||||
* A trial subscription gives the organization the same benefits as a Professional subscription, but for a limited time
|
||||
*/
|
||||
public function hasTrial(Organization $organization): bool
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the organization is blocked
|
||||
* A blocked organization is an organization that has more than 1 non-placeholder member but no subscription/trial
|
||||
* This can happen if:
|
||||
* - The organization's trial has expired and during the trial the organization added non-placeholder members
|
||||
* - The organization's subscription has expired and the organization has more than 1 non-placeholder member
|
||||
*/
|
||||
public function isBlocked(Organization $organization): bool
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||
namespace App\Service;
|
||||
|
||||
use App\Enums\Role;
|
||||
use App\Events\AfterCreateOrganization;
|
||||
use App\Models\Member;
|
||||
use App\Models\Organization;
|
||||
use App\Models\ProjectMember;
|
||||
@@ -71,6 +72,8 @@ class UserService
|
||||
// Set the organization as the user's current organization
|
||||
$user->currentOrganization()->associate($organization);
|
||||
$user->save();
|
||||
|
||||
AfterCreateOrganization::dispatch($organization);
|
||||
}
|
||||
|
||||
public function makeSureUserHasCurrentOrganization(User $user): void
|
||||
|
||||
Reference in New Issue
Block a user