Services métier
Les 26 classes de src/Service portent la logique métier de BCard. Elles sont toutes enregistrées
automatiquement comme services Symfony (App\ en autowiring/autoconfiguration, voir
config/services.yaml) et injectées dans les contrôleurs, les abonnés d'événements et les autres
services qui en ont besoin. Ce document les regroupe par domaine fonctionnel ; le détail de chaque
méthode se trouve dans la référence générée à partir des docblocks (voir la dernière section).
| Service |
Rôle |
BusinessCardGenerationService |
Crée ou met à jour les cartes de visite des employés d'une commande d'entreprise payée, gère la publication/dépublication d'une carte et ses mises à jour partielles. Voir cartes-et-qrcodes.md. |
QRCodeService |
Génère, régénère, sert au téléchargement et supprime les QR codes des cartes (bibliothèque endroid/qr-code). Voir cartes-et-qrcodes.md. |
DefaultProCardService |
Détermine si un abonné Pro est éligible à la carte physique offerte à sa première commande et, le cas échéant, impose ce modèle au configurateur. Ne modifie rien en base. |
LogoManagementService |
Contrôle l'accès premium au logo et aux couleurs personnalisés d'une carte, valide et stocke le fichier de logo via UploaderService, et calcule les couleurs à afficher. |
UploaderService |
Déplace les fichiers téléversés (CV, photos, brochures) vers leur répertoire de destination sous un nom slugifié et unique, et purge les fichiers associés à une carte lors de sa suppression. |
DomPdfService |
Enveloppe dompdf/dompdf pour convertir du HTML en PDF ; utilisé exclusivement pour les factures de paiement (admin/PaymentController, admin/ProPaymentController), pas pour un export de carte. |
CardSerializerService |
Convertit les entités Card du catalogue de cartes NFC en tableaux pour l'API, en ne retenant que les options de couleur et d'impression actives. |
BusinessCardSerializerService |
Convertit les entités BusinessCardAize en tableaux pour l'API, avec un bloc employee optionnel selon le niveau de détail demandé. |
BCardContactSyncService |
Reporte les informations d'une carte de visite sur un contact existant du carnet d'adresses partageant la même adresse e-mail, déclenché après la création d'une carte. |
AIAnalysisService |
Envoie la photo d'une carte de visite papier à une API d'IA externe (OCR) et normalise la réponse structurée en données prêtes pour la création d'un contact. |
Comptes et organisations
| Service |
Rôle |
CompanyRegistrationService |
Pilote le tunnel d'inscription entreprise en plusieurs étapes, en accumulant les données en session jusqu'à la finalisation transactionnelle (création de l'entreprise, de l'abonnement et du paiement, mot de passe temporaire). |
EmployeeUserCreationService |
Provisionne un compte ROLE_EMPLOYEE pour un employé d'entreprise, avec mot de passe temporaire et code d'activation à six chiffres envoyé par e-mail, puis valide ce code à l'activation. |
EmailVerificationService |
Génère, envoie et vérifie le code de vérification d'adresse e-mail à six chiffres utilisé à l'inscription (expiration à 15 minutes, renvoi limité à un intervalle de deux minutes). |
AccountDeletionService |
Orchestre la suppression « RGPD » d'un compte par anonymisation : trace d'audit, anonymisation de l'utilisateur, suppression de ses cartes et contacts, anonymisation de ses commandes, puis notification par e-mail. Refuse les comptes aux rôles administratifs protégés. |
RecaptchaService |
Porte les clés publique et secrète de Google reCAPTCHA configurées pour l'application, sans appeler lui-même l'API de vérification. |
Paiements et abonnements
| Service |
Rôle |
StripeService |
Encapsule les appels à l'API Stripe : sessions Checkout hébergées (web) et PaymentIntent (mobile). N'écrit aucune entité locale. |
PaymentService |
Construit en mémoire les entités Payment (sans les persister) et calcule le montant d'un abonnement entreprise à partir du plan, du cycle de facturation et du nombre d'employés. |
SubscriptionService |
Gère le cycle de vie des abonnements : création de l'abonnement gratuit par défaut, activation après paiement, vérification des quotas de cartes et de l'accès aux fonctionnalités premium, abonnements d'entreprise. |
PlanService |
Résout le plan applicable à un utilisateur (abonnement actif, à défaut le plan « Free »), vérifie l'accès à une fonctionnalité, calcule le quota de cartes restantes, les tarifs et remises annuelles. |
PredefinedFeaturesService |
Référentiel en dur (self::FEATURES) des fonctionnalités proposées dans les offres commerciales, avec leur libellé, leur description et leur icône Bootstrap Icons. |
Les moyens de paiement credit_card (traité en aval par StripeService), orange_money et
cash_on_delivery ne sont pas équivalents en pratique : partout où orange_money est accepté
en entrée de formulaire, le chemin échoue systématiquement — par une exception levée
immédiatement (PaymentController), un flash d'indisponibilité suivi d'une redirection
(SubscriptionController, CompanyPaymentController, admin/CompanyPaymentController,
CompanyRegistrationController, ce dernier avec le message « Orange Money bientôt disponible »),
ou une réponse JSON explicite (api/SubscriptionApiController). Voir
paiements.md pour le détail des flux.
Messagerie
| Service |
Rôle |
MailerService |
Point d'entrée unique pour les e-mails transactionnels : primitives génériques (sendEmail(), sendEmailToMultiple()) et méthodes prêtes à l'emploi (réinitialisation de mot de passe, confirmation d'abonnement, cycle de vie des commandes de carte physique, notification du designer). |
BusinessCardEmailService |
Notifie un employé par e-mail que sa carte de visite digitale est prête, avec le lien public de la carte et, s'il existe, le lien de téléchargement du QR code. |
Exploitation
| Service |
Rôle |
AuditLogger |
Écrit les entrées du journal d'audit (AuditLog) sur les actions sensibles portant sur les comptes et les cartes de visite, en résolvant automatiquement l'acteur depuis le contexte de sécurité si non fourni. |
SettingsService |
Donne un accès en lecture seule à l'enregistrement unique de configuration globale du site (Settings). |
SeoService |
Construit les métadonnées SEO et Open Graph d'une page (titre, description, image, URL canonique) pour la durée d'une requête. |
RefreshTokenService |
Gère le cycle de vie des jetons de rafraîchissement JWT de l'API : émission (un seul jeton actif par utilisateur), validation, révocation et purge des jetons expirés. |
Consulter la référence détaillée
Chaque service est documenté classe par classe, méthode par méthode, dans la
référence du code produite par phpDocumentor à
partir des docblocks de src/.