DefaultProCardService
in package
Applique la règle métier de la carte physique offerte à la première commande d'un abonné Pro.
Le modèle de carte offert est configuré globalement dans l'entité Settings
(defaultProCard). Le service détermine si l'utilisateur est encore éligible — abonnement
premium actif et aucune carte physique déjà commandée — et, le cas échéant, restreint la
sélection du configurateur à cette seule carte. Aucune méthode n'écrit en base.
Table of Contents
Properties
- $entityManager : EntityManagerInterface
- $physicalCardRepository : PhysicalCardRepository
- $settingsRepository : SettingsRepository
Methods
- __construct() : mixed
- canSelectCard() : bool
- Vérifie si une carte spécifique peut être sélectionnée par l'utilisateur
- getCardForFirstOrder() : Card|null
- Force la sélection de la carte par défaut pour la première commande Pro
- getDefaultProCard() : Card|null
- Récupère la carte par défaut configurée pour les utilisateurs Pro
- getFirstOrderMessage() : string
- Obtient le message à afficher pour la première commande Pro
- isFirstPhysicalCardOrder() : bool
- Vérifie si c'est la première commande de carte physique pour un utilisateur Pro
- shouldUseDefaultCard() : bool
- Vérifie si l'utilisateur doit utiliser la carte par défaut (première commande Pro)
Properties
$entityManager
private
EntityManagerInterface
$entityManager
$physicalCardRepository
private
PhysicalCardRepository
$physicalCardRepository
$settingsRepository
private
SettingsRepository
$settingsRepository
Methods
__construct()
public
__construct(SettingsRepository $settingsRepository, PhysicalCardRepository $physicalCardRepository, EntityManagerInterface $entityManager) : mixed
Parameters
- $settingsRepository : SettingsRepository
-
Lecture du paramétrage global portant la carte Pro par défaut.
- $physicalCardRepository : PhysicalCardRepository
-
Détection des cartes physiques déjà possédées par l'utilisateur.
- $entityManager : EntityManagerInterface
-
Dépendance injectée mais non utilisée par les méthodes actuelles.
canSelectCard()
Vérifie si une carte spécifique peut être sélectionnée par l'utilisateur
public
canSelectCard(User $user, Card $card, SubscriptionService $subscriptionService) : bool
En situation de première commande Pro, seule la carte par défaut est autorisée : la
comparaison porte sur les identifiants. Sinon, toute carte non masquée du catalogue
(isHide() à faux) est sélectionnable. Lecture seule.
Parameters
- $user : User
-
Utilisateur passant commande.
- $card : Card
-
Carte que l'utilisateur souhaite sélectionner.
- $subscriptionService : SubscriptionService
-
Service d'abonnement (non typé dans la signature).
Return values
bool —true si la sélection de cette carte est autorisée.
getCardForFirstOrder()
Force la sélection de la carte par défaut pour la première commande Pro
public
getCardForFirstOrder(User $user, SubscriptionService $subscriptionService) : Card|null
Retourne la carte offerte uniquement lorsque DefaultProCardService::shouldUseDefaultCard() est satisfait ; dans le cas contraire, l'appelant doit laisser l'utilisateur choisir librement. Lecture seule.
Parameters
- $user : User
-
Utilisateur passant commande.
- $subscriptionService : SubscriptionService
-
Service d'abonnement (non typé dans la signature).
Return values
Card|null —Carte à imposer, ou null si l'utilisateur n'est pas dans le cas de la
première commande Pro.
getDefaultProCard()
Récupère la carte par défaut configurée pour les utilisateurs Pro
public
getDefaultProCard() : Card|null
Charge la première (et unique attendue) ligne de configuration Settings et en extrait la carte par défaut. Lecture seule.
Return values
Card|null —Carte offerte configurée, ou null si aucune configuration n'existe ou si
aucune carte par défaut n'y est renseignée.
getFirstOrderMessage()
Obtient le message à afficher pour la première commande Pro
public
getFirstOrderMessage() : string
Retourne un libellé constant, destiné à l'affichage dans le configurateur de commande. Aucune donnée dynamique n'est interpolée.
Return values
string —Message d'information sur la carte offerte.
isFirstPhysicalCardOrder()
Vérifie si c'est la première commande de carte physique pour un utilisateur Pro
public
isFirstPhysicalCardOrder(User $user) : bool
Considère la commande comme étant la première dès lors que l'utilisateur ne possède aucune carte physique enregistrée. Lecture seule.
Parameters
- $user : User
-
Utilisateur évalué.
Return values
bool —true si aucune carte physique n'est rattachée à l'utilisateur.
shouldUseDefaultCard()
Vérifie si l'utilisateur doit utiliser la carte par défaut (première commande Pro)
public
shouldUseDefaultCard(User $user, SubscriptionService $subscriptionService) : bool
Les trois conditions doivent être réunies : aucune carte physique déjà commandée, accès aux fonctionnalités premium confirmé par le service d'abonnement, et existence effective d'une carte par défaut configurée. Lecture seule.
Parameters
- $user : User
-
Utilisateur évalué.
- $subscriptionService : SubscriptionService
-
Service d'abonnement (non typé dans la signature) exposant
hasAccessToPremiumFeatures().
Return values
bool —true si la carte offerte doit être imposée à cet utilisateur.