SubscriptionService
in package
Gère le cycle de vie des abonnements (`Subscription`) : création de l'abonnement gratuit par défaut, activation après paiement, vérification des quotas de cartes, accès aux fonctionnalités premium, et abonnements d'entreprise.
Effets de bord : createFreeSubscriptionForUser() et activateSubscription() persistent et/ou
flushent l'EntityManager ; createCompanySubscription() construit une Subscription sans la
persister, laissant cette responsabilité à l'appelant. hasAccessToPremiumFeatures() et
canUserCreateMoreCards() retiennent les plans nommés Pro et Entreprise comme donnant
accès aux fonctionnalités premium ; un cardsIncluded nul ou à 0 est traité comme illimité.
Table of Contents
Properties
- $entityManager : EntityManagerInterface
- $logger : LoggerInterface
- $planRepository : PlanRepository
Methods
- __construct() : mixed
- activateSubscription() : void
- Active un abonnement après paiement réussi
- canCompanyCreateMoreCards() : bool
- Check if company can create more cards based on subscription
- canCreateCard() : bool
- Vérifie si un utilisateur peut créer une nouvelle carte
- canUpgrade() : bool
- Vérifie si un utilisateur peut upgrader son abonnement
- canUserCreateMoreCards() : bool
- Vérifie si un utilisateur peut créer plus de cartes selon son plan
- createCompanySubscription() : Subscription
- Create a company subscription
- createFreeSubscriptionForUser() : Subscription|null
- Crée un abonnement gratuit pour un nouvel utilisateur
- getActiveCompanySubscription() : Subscription|null
- Get active company subscription
- getRemainingCardsForUser() : int
- Récupère le nombre de cartes restantes pour un utilisateur
- getUserCardCount() : int
- Récupère le nombre de cartes actuelles de l'utilisateur
- getUserPlan() : Plan|null
- Récupère le plan actuel de l'utilisateur
- hasAccessToPremiumFeatures() : bool
- Vérifie si un utilisateur a accès aux fonctionnalités premium
- upgradeCompanySubscription() : Subscription|null
- Upgrade company subscription
- calculateEndDate() : DateTimeImmutable
- Calcule la date de fin d'un abonnement selon le cycle de facturation
- calculateNextBillingDate() : DateTimeImmutable
- Calcule la prochaine date de facturation
- countCompanyCards() : int
- Count existing cards for a company
- getFreePlan() : Plan|null
- Récupère le plan gratuit
Properties
$entityManager
private
EntityManagerInterface
$entityManager
$logger
private
LoggerInterface
$logger
$planRepository
private
PlanRepository
$planRepository
Methods
__construct()
public
__construct(EntityManagerInterface $entityManager, PlanRepository $planRepository, LoggerInterface $logger) : mixed
Parameters
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités Doctrine.
- $planRepository : PlanRepository
-
Accès aux offres d'abonnement.
- $logger : LoggerInterface
-
Journalisation des anomalies de souscription.
activateSubscription()
Active un abonnement après paiement réussi
public
activateSubscription(Subscription $subscription) : void
Parameters
- $subscription : Subscription
Tags
canCompanyCreateMoreCards()
Check if company can create more cards based on subscription
public
canCompanyCreateMoreCards(Company $company) : bool
Parameters
- $company : Company
Return values
boolcanCreateCard()
Vérifie si un utilisateur peut créer une nouvelle carte
public
canCreateCard(User $user) : bool
Parameters
- $user : User
Return values
boolcanUpgrade()
Vérifie si un utilisateur peut upgrader son abonnement
public
canUpgrade(User $user) : bool
Parameters
- $user : User
Return values
boolcanUserCreateMoreCards()
Vérifie si un utilisateur peut créer plus de cartes selon son plan
public
canUserCreateMoreCards(User $user) : bool
Parameters
- $user : User
Return values
boolcreateCompanySubscription()
Create a company subscription
public
createCompanySubscription(User $user, Company $company, int $planId, string $billingCycle, string $amount) : Subscription
Parameters
Return values
SubscriptioncreateFreeSubscriptionForUser()
Crée un abonnement gratuit pour un nouvel utilisateur
public
createFreeSubscriptionForUser(User $user) : Subscription|null
Parameters
- $user : User
Return values
Subscription|nullgetActiveCompanySubscription()
Get active company subscription
public
getActiveCompanySubscription(Company $company) : Subscription|null
Parameters
- $company : Company
Return values
Subscription|nullgetRemainingCardsForUser()
Récupère le nombre de cartes restantes pour un utilisateur
public
getRemainingCardsForUser(User $user) : int
Parameters
- $user : User
Return values
intgetUserCardCount()
Récupère le nombre de cartes actuelles de l'utilisateur
public
getUserCardCount(User $user) : int
Parameters
- $user : User
Return values
intgetUserPlan()
Récupère le plan actuel de l'utilisateur
public
getUserPlan(User $user) : Plan|null
Parameters
- $user : User
Return values
Plan|nullhasAccessToPremiumFeatures()
Vérifie si un utilisateur a accès aux fonctionnalités premium
public
hasAccessToPremiumFeatures(User $user) : bool
Parameters
- $user : User
Return values
boolupgradeCompanySubscription()
Upgrade company subscription
public
upgradeCompanySubscription(Company $company, int $newPlanId) : Subscription|null
Parameters
- $company : Company
- $newPlanId : int
Return values
Subscription|nullcalculateEndDate()
Calcule la date de fin d'un abonnement selon le cycle de facturation
private
calculateEndDate(string $billingCycle) : DateTimeImmutable
Parameters
- $billingCycle : string
Return values
DateTimeImmutablecalculateNextBillingDate()
Calcule la prochaine date de facturation
private
calculateNextBillingDate(string $billingCycle) : DateTimeImmutable
Parameters
- $billingCycle : string
Return values
DateTimeImmutablecountCompanyCards()
Count existing cards for a company
private
countCompanyCards(Company $company) : int
Parameters
- $company : Company
Return values
intgetFreePlan()
Récupère le plan gratuit
private
getFreePlan() : Plan|null