Produite par scripts/codegen-html-doc.php — ne pas éditer à la main.
Dernière génération : .
Auto-doc — Services
Services applicatifs : logique métier, orchestration, intégrations externes. Les contrôleurs restent fins et délèguent ici.
87 classes documentées dans src/Service.
Sommaire
AccountStatementPdfService
class App\Service\AccountStatementPdfService
40.3 — génération du relevé de compte PDF (adhérent ou prestataire).
Méthodes publiques (4)
public function __construct(Twig\Environment $twig, App\Service\CotisationAttestationService $attestationService, Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface $params)public function generateHtml(App\Model\AccountStatement $statement): stringpublic function generatePdf(App\Model\AccountStatement $statement): stringpublic function getFilename(App\Model\AccountStatement $statement): string
Voir la source sur GitLab → src/Service/AccountStatementPdfService.php
AccountStatementService
class App\Service\AccountStatementService
40.3 — construit le relevé de compte d'une période (adhérent ou prestataire).
Méthodes publiques (2)
public function __construct(App\Repository\OperationAdherentRepository $operationAdherentRepository, App\Repository\OperationPrestataireRepository $operationPrestataireRepository)public function buildStatement(App\Flux\AccountInterface $account, DateTimeImmutable $from, DateTimeImmutable $to): App\Model\AccountStatement
Voir la source sur GitLab → src/Service/AccountStatementService.php
AnonymizationService
class App\Service\Gdpr\AnonymizationService
Service for anonymizing user data (GDPR compliance).
Méthodes publiques (6)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Service\Audit\AuditService $auditService, Psr\Log\LoggerInterface $logger, string $emailPrefix = 'anonymized', string $emailDomain = 'deleted.local', string $nameReplacement = 'ANONYMISÉ', string $pseudonymSalt = '')public function anonymizeUser(App\Entity\User $user, ?string $reason = NULL): boolAnonymize a user and their associated profile.
public function anonymizeAdherent(App\Entity\Adherent $adherent): voidAnonymize an adherent profile.
public function anonymizePrestataire(App\Entity\Prestataire $prestataire): voidAnonymize a prestataire profile.
public function generatePseudonym(string $identifier): stringGenerate a pseudonym from an identifier.
public function maskEmail(string $email): stringMask an email address for logging.
Voir la source sur GitLab → src/Service/Gdpr/AnonymizationService.php
AnonymizationService
final class App\Service\Staging\AnonymizationService
A0 L2 — Anonymisation déterministe pour dumps staging.
Méthodes publiques (7)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, string $salt, Psr\Log\LoggerInterface $logger = \Psr\Log\NullLogger::__set_state(array( )))public function anonymizeUser(App\Entity\User $user): voidAnonymise un User en place (déterministe, idempotent).
public function anonymizeSepaMandate(App\Entity\SepaMandate $mandate): voidAnonymise un SepaMandate en place.
public function anonymizeIbanChangeRequest(App\Entity\IbanChangeRequest $request): voidAnonymise un IbanChangeRequest en place.
public function anonymizePrestataire(App\Entity\Prestataire $prestataire): voidAnonymise un Prestataire (champs PII : responsable, raison, description, comments,
public function anonymizeIban(string $original, ?string $seed = NULL): stringProduit un IBAN FR76 valide à partir d'un seed. La structure
public function verify(): arrayVérifie qu'aucun champ PII n'a échappé à l'anonymisation. Pour chaque
Voir la source sur GitLab → src/Service/Staging/AnonymizationService.php
AuditService
class App\Service\Audit\AuditService
Service for creating and managing audit logs.
Méthodes publiques (20)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, Symfony\Component\HttpFoundation\RequestStack $requestStack, Symfony\Bundle\SecurityBundle\Security $security, Psr\Log\LoggerInterface $logger, App\Repository\AuditLogRepository $auditLogRepository)public function log(string $action, ?string $entityClass = NULL, ?string $entityId = NULL, ?array $context = NULL, ?string $justification = NULL): ?App\Entity\AuditLogLog an action to the audit log.
public function logExport(string $exportType, string $entityClass, int $count, ?string $format = 'csv', ?string $justification = NULL): ?App\Entity\AuditLogLog an export action.
public function logGdprSelfExport(App\Entity\User $user): ?App\Entity\AuditLogLog a GDPR self-export request.
public function logAnonymization(string $entityClass, string $entityId, ?string $reason = NULL): ?App\Entity\AuditLogLog an anonymization action.
public function logDataPurge(string $entityClass, int $count, ?string $reason = NULL): ?App\Entity\AuditLogLog a data purge action.
public function logSsaView(string $entityId, ?array $additionalContext = NULL): ?App\Entity\AuditLogLog a SSA view action.
public function logSsaExport(int $count, ?string $justification = NULL): ?App\Entity\AuditLogLog a SSA export action.
public function logSepaView(string $mandateId): ?App\Entity\AuditLogLog a SEPA mandate view action.
public function logSepaExport(int $count, ?string $justification = NULL): ?App\Entity\AuditLogLog a SEPA export action.
public function logImpersonation(App\Entity\User $impersonatedUser): ?App\Entity\AuditLogLog an impersonation action.
public function logRoleChange(App\Entity\User $user, array $oldRoles, array $newRoles): ?App\Entity\AuditLogLog a role change action.
public function logLogin(App\Entity\User $user): ?App\Entity\AuditLogLog a login attempt.
public function logLoginFailed(?string $username = NULL): ?App\Entity\AuditLogLog a failed login attempt.
public function logGdprRequest(string $requestType, App\Entity\User $user): ?App\Entity\AuditLogLog a GDPR request (access, delete, rectify).
public function getLogsForEntity(string $entityClass, string $entityId, int $limit = 100): arrayGet audit logs for a specific entity.
public function getLogsForUser(App\Entity\User $user, int $limit = 100): arrayGet audit logs for a specific user.
public function getExportLogs(int $limit = 100): arrayGet export-related audit logs.
public function getGdprLogs(int $limit = 100): arrayGet GDPR-related audit logs.
public function hasSuspiciousLoginAttempts(string $ipAddress, int $threshold = 5, int $minutes = 15): boolCheck if there are suspicious login attempts from an IP.
Voir la source sur GitLab → src/Service/Audit/AuditService.php
BaseNotificationService
abstract class App\Service\Email\BaseNotificationService
Base class for notification services that send emails with automatic logging.
Aucune méthode publique propre à la classe.
Voir la source sur GitLab → src/Service/Email/BaseNotificationService.php
BofficeApiClient
class App\Service\BofficeApiClient
HTTP client for the Boffice API (ticket management system).
Méthodes publiques (12)
public function __construct(Symfony\Contracts\HttpClient\HttpClientInterface $httpClient, Symfony\Component\HttpFoundation\RequestStack $requestStack, Psr\Log\LoggerInterface $logger, Psr\Cache\CacheItemPoolInterface $cache, Symfony\Bundle\SecurityBundle\Security $security, string $bofficeApiUrl)public function isConfigured(): boolCheck if the Boffice API is configured (URL present).
public function getApiUrl(): stringGet the Boffice API base URL (for setup page).
public function register(array $payload): arrayRegister a new installation on the Boffice API (no auth required).
public function get(string $endpoint, array $query = array ( )): arrayGET request to the Boffice API.
public function post(string $endpoint, array $data = array ( )): arrayPOST request to the Boffice API.
public function patch(string $endpoint, array $data = array ( )): arrayPATCH request to the Boffice API.
public function put(string $endpoint, array $data = array ( )): arrayPUT request to the Boffice API.
public function delete(string $endpoint): arrayDELETE request to the Boffice API.
public function upload(string $endpoint, string $filePath, string $fileName, string $fieldName = 'file'): arrayUpload a file to the Boffice API.
public function download(string $endpoint): arrayDownload a file from the Boffice API and return its binary content.
public function proxy(string $method, string $path, string $body = '', array $query = array ( )): arrayForward a raw request (used by the generic proxy).
Voir la source sur GitLab → src/Service/BofficeApiClient.php
BrandingUploadService
class App\Service\BrandingUploadService
Service for handling branding assets uploads (logo, favicon, OG image).
Méthodes publiques (10)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\GlobalParameterRepository $globalParameterRepository, string $projectDir)public function getUploadDir(?string $type = NULL): stringGet the absolute path to the upload directory for a specific type.
public function getPublicPath(string $filename, ?string $type = NULL): stringGet the public path (relative to web root) for a specific type.
public function ensureUploadDirExists(?string $type = NULL): boolEnsure upload directory exists with correct permissions.
public function validateUpload(Symfony\Component\HttpFoundation\File\UploadedFile $file, string $type): arrayValidate an uploaded file for a specific type.
public function upload(Symfony\Component\HttpFoundation\File\UploadedFile $file, string $type): arrayUpload and save a branding image.
public function getCurrentValue(string $type): ?stringGet current value for a type.
public function getTypesConfig(): arrayGet configuration for all types.
public function isGdAvailable(): boolCheck if GD extension is available (for favicon generation).
public function cleanupOldFiles(string $type, string $currentPath): intDelete old branding files to cleanup.
Voir la source sur GitLab → src/Service/BrandingUploadService.php
CalculatedSsaFactory
final class App\Service\Ssa\CalculatedSsaFactory
Implémente : App\Service\Ssa\CalculatedSsaFactoryInterface
Factory for CalculatedSsa — centralises injection of FluxFinderInterface.
Méthodes publiques (2)
public function __construct(App\Service\Ssa\FluxFinderInterface $fluxFinder, App\Utils\CustomEntityManager $em, Psr\Log\LoggerInterface $logger = \Psr\Log\NullLogger::__set_state(array( )))public function create(App\Entity\SolidoumeParameter $param, ?DateTime $simulatedDate = NULL, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): App\Model\CalculatedSsa
Voir la source sur GitLab → src/Service/Ssa/CalculatedSsaFactory.php
CalculatedSsaFactoryInterface
abstract interface App\Service\Ssa\CalculatedSsaFactoryInterface
Contract for creating CalculatedSsa instances.
Méthodes publiques (1)
abstract public function create(App\Entity\SolidoumeParameter $param, ?DateTime $simulatedDate = NULL, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): App\Model\CalculatedSsa
Voir la source sur GitLab → src/Service/Ssa/CalculatedSsaFactoryInterface.php
CalculatedStrategy
class App\Service\Ssa\Strategy\CalculatedStrategy
Implémente : App\Service\Ssa\Strategy\RedistributionStrategyInterface
Méthodes publiques (3)
public function getMode(): stringpublic function computeBasePerParticipant(App\Entity\SolidoumeParameter $param, App\Model\CalculatedSsa $calculatedSsa): ?floatpublic function computeItemAmount(App\Entity\SolidoumeParameter $param, App\Entity\SolidoumeItem $item, App\Model\CalculatedSsa $calculatedSsa, ?float $basePerParticipant): float
Voir la source sur GitLab → src/Service/Ssa/Strategy/CalculatedStrategy.php
CalculationStrategyFactory
class App\Service\Ssa\Strategy\CalculationStrategyFactory
Méthodes publiques (2)
public function __construct(App\Service\Ssa\Strategy\CalculatedStrategy $calculated, App\Service\Ssa\Strategy\FixedStrategy $fixed, App\Service\Ssa\Strategy\TiersStrategy $tiers)public function create(App\Entity\SolidoumeParameter $param): App\Service\Ssa\Strategy\RedistributionStrategyInterface
Voir la source sur GitLab → src/Service/Ssa/Strategy/CalculationStrategyFactory.php
ChainHasher
final class App\Service\Finance\Crypto\ChainHasher
Calcule le hash chaîné d'un événement financier (Flux / Operation).
Méthodes publiques (2)
public function chain(string $previousHash, string $canonicalPayload): stringHash chaîné : combine hash précédent + payload canonique courant.
public function canonicalPayload(array $fields): stringConstruit une charge utile canonique (déterministe, ordre des clés stable).
Voir la source sur GitLab → src/Service/Finance/Crypto/ChainHasher.php
ChainSigner
final class App\Service\Finance\Crypto\ChainSigner
Signe/vérifie des messages avec Ed25519 via libsodium.
Méthodes publiques (5)
public function __construct(string $secretKey, string $publicKey)public function sign(string $message): stringSigne un message arbitraire (typiquement un hash chaîné hex).
public function verify(string $signature, string $message): boolVérifie une signature contre la clé publique courante.
public function verifyOrThrow(string $signature, string $message): voidComme {@see verify} mais lève en cas d'échec — utile pour stopper un batch
static public function generateKeyPair(): arrayGénère une nouvelle paire (utilitaire dev / bootstrap / test).
Voir la source sur GitLab → src/Service/Finance/Crypto/ChainSigner.php
ChainVerifier
final class App\Service\Finance\Crypto\ChainVerifier
Vérifie l'intégrité d'une séquence de maillons hash+signature.
Méthodes publiques (3)
public function __construct(App\Service\Finance\Crypto\ChainHasher $hasher, App\Service\Finance\Crypto\ChainSigner $signer)public function verify(iterable $links, bool $requireSignature = false): arrayVérifie une séquence ordonnée de maillons. Retourne la liste des ids cassés
public function verifyOrThrow(iterable $links, bool $requireSignature = false): voidComme {@see verify} mais lève à la première rupture.
Voir la source sur GitLab → src/Service/Finance/Crypto/ChainVerifier.php
CivilYearService
class App\Service\CivilYearService
Service for subscription year date calculations.
Méthodes publiques (13)
public function __construct(App\Repository\GlobalParameterRepository $globalParameterRepository)public function isCivilYearEnabled(): boolCheck if civil year mode is enabled.
public function getSubscriptionDates(?DateTime $referenceDate = NULL): arrayGet subscription dates based on the configured mode (civil year or rolling year).
public function getNextYearSubscriptionDates(?DateTime $currentEndDate = NULL): arrayGet next year subscription dates based on the configured mode.
public function getCurrentCivilYear(): stringGet the current civil year as a string.
public function getCivilYearStartDate(?int $year = NULL): DateTimeGet the start date of the civil year (January 1st).
public function getCivilYearEndDate(?int $year = NULL): DateTimeGet the end date of the civil year (December 31st).
public function getCivilYearDates(?int $year = NULL): arrayGet civil year dates (start, end, year) for a given year.
public function getNextCivilYearDates(): arrayGet next civil year dates.
public function getCivilYearFromDate(DateTime $date): stringGet the civil year from a given date.
public function isDateInCivilYear(DateTime $date, int $year): boolCheck if a date is within a specific civil year.
public function getCivilYearDatesFromStartDate(DateTime $startDate): arrayGet civil year dates from a start date.
public function getCivilYearDatesAfterDate(DateTime $date): arrayGet the next civil year dates after a given date.
Voir la source sur GitLab → src/Service/CivilYearService.php
ConsentService
class App\Service\Gdpr\ConsentService
Service for managing user GDPR consents.
Méthodes publiques (11)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\UserConsentRepository $consentRepository, App\Repository\GlobalParameterRepository $globalParameterRepository, App\Service\Audit\AuditService $auditService, Psr\Log\LoggerInterface $logger, App\Service\HouseholdSizeDisplayService $householdSizeDisplayService)public function grantConsent(App\Entity\User $user, string $type, ?string $ipAddress = NULL, ?string $version = NULL): App\Entity\UserConsentGrant a consent for a user.
public function revokeConsent(App\Entity\User $user, string $type): voidRevoke a consent for a user.
public function hasConsent(App\Entity\User $user, string $type): boolCheck if a user has an active consent of a specific type.
public function getActiveConsents(App\Entity\User $user): arrayGet all active consents for a user.
public function getConsentHistory(App\Entity\User $user): arrayGet consent history for a user.
public function getRequiredConsentTypes(): arrayGet the list of required consent types based on application configuration.
public function getMissingConsents(App\Entity\User $user): arrayGet missing required consents for a user.
public function hasAllRequiredConsents(App\Entity\User $user): boolCheck if a user has all required consents.
public function grantMultipleConsents(App\Entity\User $user, array $types, ?string $ipAddress = NULL): voidGrant multiple consents at once (used by consent form).
public function getCurrentPolicyVersion(): stringGet the current privacy policy version from GlobalParameter or default.
Voir la source sur GitLab → src/Service/Gdpr/ConsentService.php
CotisationAttestationService
class App\Service\CotisationAttestationService
Service to generate cotisation attestation documents (PDF).
Méthodes publiques (5)
public function __construct(Twig\Environment $twig, App\Repository\GlobalParameterRepository $globalParameterRepository, Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface $params)public function generateHtml(App\Entity\CotisationAdherent $cotisation): stringGenerate HTML content for cotisation attestation.
public function generatePdf(App\Entity\CotisationAdherent $cotisation): stringGenerate PDF for cotisation attestation.
public function getFilename(App\Entity\CotisationAdherent $cotisation): stringGet filename for attestation PDF.
public function getAssociationInfo(): arrayGet association information from GlobalParameter.
Voir la source sur GitLab → src/Service/CotisationAttestationService.php
CotisationNotificationService
class App\Service\CotisationNotificationService
Service to send cotisation attestation emails with PDF attachment.
Méthodes publiques (2)
public function __construct(Symfony\Component\Mailer\MailerInterface $mailer, Twig\Environment $twig, App\Repository\GlobalParameterRepository $globalParameterRepository, App\Service\CotisationAttestationService $attestationService, Symfony\Contracts\Translation\TranslatorInterface $translator, Symfony\Component\Routing\RouterInterface $router, Psr\Log\LoggerInterface $logger)public function sendAttestationEmail(App\Entity\CotisationAdherent $cotisation): boolSend cotisation attestation email with PDF attachment.
Voir la source sur GitLab → src/Service/CotisationNotificationService.php
DoctrineQueryExecutor
class App\Service\Ssa\DoctrineQueryExecutor
Implémente : App\Service\Ssa\QueryExecutorInterface
Doctrine implementation of QueryExecutorInterface.
Méthodes publiques (3)
public function __construct(App\Utils\CustomEntityManager $em)public function executeSingleScalarQuery(string $dql, array $parameters = array ( )){@inheritdoc}
public function executeQuery(string $dql, array $parameters = array ( )){@inheritdoc}
Voir la source sur GitLab → src/Service/Ssa/DoctrineQueryExecutor.php
DonExecutionService
class App\Service\Don\DonExecutionService
Décide si un Don créé/édité depuis l'admin Sonata doit déclencher
Méthodes publiques (3)
public function __construct(App\Utils\OperationUtils $operationUtils)public function executeIfNeeded(App\Entity\Don $don): boolfalse si le don ne nécessite pas de transaction
public function willCreateOperations(string $moyen): boolIndique si un don de ce moyen-là va déclencher des opérations
Voir la source sur GitLab → src/Service/Don/DonExecutionService.php
EmailArchiveService
final class App\Service\Email\EmailArchiveService
Implémente : App\Service\Email\EmailArchiveServiceInterface
Service to archive old email logs (soft-delete).
Méthodes publiques (2)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\EmailLogRepository $repository, Psr\Log\LoggerInterface $logger)public function archiveOldLogs(int $retentionDays = 180, bool $dryRun = false): arrayArchive (soft-delete) email logs older than the given retention period.
Voir la source sur GitLab → src/Service/Email/EmailArchiveService.php
EmailArchiveServiceInterface
abstract interface App\Service\Email\EmailArchiveServiceInterface
Contract for the email log archive service.
Méthodes publiques (1)
abstract public function archiveOldLogs(int $retentionDays = 180, bool $dryRun = false): arrayArchive email logs older than the retention period.
Voir la source sur GitLab → src/Service/Email/EmailArchiveServiceInterface.php
EmailLogService
class App\Service\Email\EmailLogService
Service for logging sent emails to database.
Méthodes publiques (4)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\UserRepository $userRepository, Psr\Log\LoggerInterface $logger)public function logSentEmail(Symfony\Component\Mime\Email $message, bool $success, ?array $failedRecipients = NULL): App\Entity\EmailLogLog a sent email to database.
public function extractContextFromMessage(Symfony\Component\Mime\Email $message): arrayExtract email context from message headers.
public function findUserByEmail(string $email): ?App\Entity\UserFind User entity by email address.
Voir la source sur GitLab → src/Service/Email/EmailLogService.php
EmailTemplateService
class App\Service\Email\EmailTemplateService
Service for managing email templates.
Méthodes publiques (16)
public function __construct(string $projectDir, Psr\Log\LoggerInterface $logger)public function getAllTemplates(): arraypublic function getTemplate(string $templatePath): ?stringGet template content.
public function getTemplateContentBlock(string $templatePath): ?stringGet only the content block from a template.
public function rebuildTemplateFromContentBlock(string $contentBlock, string $templatePath): stringRebuild full template from content block (public method for preview).
public function getDefaultTemplate(string $templatePath): ?stringGet default template content.
public function saveTemplate(string $templatePath, string $content): boolSave customized template.
public function saveTemplateContentBlock(string $templatePath, string $contentBlock): boolSave only the content block of a template.
public function resetTemplate(string $templatePath): boolReset template to default (delete custom version).
public function isCustomized(string $templatePath): boolCheck if template has been customized.
public function getTemplateByIdOrCreate(string $templateId): ?arrayGet template info by ID, creating a new flux template if it does not exist yet.
public function getTemplateById(string $templateId): ?arrayGet template info by ID.
public function buildFluxTemplatePath(string $parenttype, string $type, string $direction): stringBuild the flux template file path from parenttype, type and direction.
public function getFluxTemplateInfo(string $parenttype, string $type, string $direction): arrayGet flux template info – works even if the file does not exist yet (for creation).
public function getBaseFluxContentBlock(string $parenttype, string $type, string $direction): stringGenerate a minimal base content block for a new flux template.
public function getAllFluxTemplates(): arrayGet all flux email templates (default + custom) for the flux builder listing.
Voir la source sur GitLab → src/Service/Email/EmailTemplateService.php
EmailVariableRegistryService
class App\Service\Email\EmailVariableRegistryService
Service for documenting available email template variables.
Méthodes publiques (5)
public function __construct()public function getVariablesForTemplate(string $emailType): arrayGet all variables available for a specific template/email type.
public function getAllEmailTypes(): arrayGet all registered email types with their categories.
public function getGlobalVariables(): arrayGet global variables.
public function getFluxVariables(): arrayGet all flux-specific template variables, grouped by object.
Voir la source sur GitLab → src/Service/Email/EmailVariableRegistryService.php
ExportProfileInterface
abstract interface App\Service\Export\ExportProfileInterface
Interface for export profiles.
Méthodes publiques (8)
abstract public function getName(): stringGet the profile name (e.g., 'standard', 'pseudonymized', 'raw').
abstract public function getLabel(): stringGet the human-readable label for this profile.
abstract public function getFields(string $entityClass): arrayGet the fields that can be exported for a given entity class.
abstract public function getRequiredRole(): stringGet the minimum role required to use this export profile.
abstract public function requiresJustification(): boolWhether a justification is required to use this export profile.
abstract public function requiresAudit(): boolWhether this export should be logged in the audit trail.
abstract public function getDescription(): stringGet the description of this profile.
abstract public function supportsEntity(string $entityClass): boolCheck if this profile supports a given entity class.
Voir la source sur GitLab → src/Service/Export/ExportProfileInterface.php
FaviconGeneratorService
class App\Service\FaviconGeneratorService
Service for generating favicon images in multiple sizes from a source image.
Méthodes publiques (10)
public function __construct(App\Repository\GlobalParameterRepository $globalParameterRepository, string $projectDir, ?Psr\Log\LoggerInterface $logger = NULL)public function isGdAvailable(): boolCheck if GD extension is available.
public function getSourcePath(): ?stringGet the source favicon path from GlobalParameter or default.
public function resolveFullPath(string $path): stringResolve a path to its full filesystem path.
public function getDefaultOutputDir(): stringGet the default output directory for favicons.
public function validateSourceImage(string $sourcePath): arrayValidate a source image.
public function generateFavicons(string $sourcePath, ?string $outputDir = NULL, bool $updateManifest = false): arrayGenerate all favicon sizes from a source image.
public function generateFromUpload(string $uploadedFilePath, bool $updateManifest = true): arrayGenerate favicons from an uploaded file.
public function updateGlobalParameter(string $path): voidUpdate the SEO_FAVICON_512 GlobalParameter.
public function updateManifest(?string $iconDir = NULL): boolUpdate the manifest.json file with new icon paths.
Voir la source sur GitLab → src/Service/FaviconGeneratorService.php
FixedStrategy
class App\Service\Ssa\Strategy\FixedStrategy
Implémente : App\Service\Ssa\Strategy\RedistributionStrategyInterface
Méthodes publiques (3)
public function getMode(): stringpublic function computeBasePerParticipant(App\Entity\SolidoumeParameter $param, App\Model\CalculatedSsa $calculatedSsa): ?floatpublic function computeItemAmount(App\Entity\SolidoumeParameter $param, App\Entity\SolidoumeItem $item, App\Model\CalculatedSsa $calculatedSsa, ?float $basePerParticipant): float
Voir la source sur GitLab → src/Service/Ssa/Strategy/FixedStrategy.php
FluxFinderInterface
abstract interface App\Service\Ssa\FluxFinderInterface
Contract for finding SSA-related Flux objects for a given adherent + SSA fund
Méthodes publiques (4)
abstract public function findPrelevement(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\FluxFind the first adherent→prestataire (prélèvement) flux in the sliding period.
abstract public function findCotisationSsa(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\FluxFind the first cotisation_adherent_ssa flux in the sliding period.
abstract public function findPaiementRetour(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\FluxFind the first prestataire→adherent (paiement retour) flux in the sliding period.
abstract public function findAutoPrelevementInPeriod(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\FluxFind an automatic prélèvement flux in the sliding period whose reference contains
Voir la source sur GitLab → src/Service/Ssa/FluxFinderInterface.php
FluxNotificationService
class App\Service\FluxNotificationService
Service to handle flux notification events.
Méthodes publiques (2)
public function __construct(Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher, App\Service\UserNotificationPreferenceService $userNotificationPreferenceService, App\Repository\UserRepository $userRepository)public function processFluxEvent(App\Event\FluxEvent $event): voidProcess a flux event and dispatch appropriate email events.
Voir la source sur GitLab → src/Service/FluxNotificationService.php
GdprExportService
class App\Service\Gdpr\GdprExportService
Service for exporting user's personal data (GDPR Art. 15 & 20).
Méthodes publiques (3)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\FluxRepository $fluxRepository)public function getUserDataSummary(App\Entity\User $user): arrayGet a summary of user's data for the GDPR dashboard.
public function exportUserData(App\Entity\User $user): arrayExport all user's personal data.
Voir la source sur GitLab → src/Service/Gdpr/GdprExportService.php
GlobalParameterFactory
final class App\Service\Installation\GlobalParameterFactory
Fabrique des entités GlobalParameter pour le processus d'installation.
Méthodes publiques (5)
public function __construct(App\Repository\GlobalParameterRepository $repository)public function create(string $name, string $value, string $description, bool $mandatory = true): App\Entity\GlobalParameterCrée une nouvelle instance de GlobalParameter (non persistée).
public function upsert(string $name, string $value, string $description, bool $mandatory = true): App\Entity\GlobalParameterUpsert idempotent : retourne le GlobalParameter existant (mis à jour) ou
public function persistAll(Doctrine\ORM\EntityManagerInterface $em, iterable $parameters): voidPersiste tous les paramètres fournis. Ne flush pas — l'appelant gère
static public function bool(bool $value): stringConversion de bool PHP vers la représentation string utilisée par
Voir la source sur GitLab → src/Service/Installation/GlobalParameterFactory.php
HelloAssoFormFilter
class App\Service\HelloAssoFormFilter
Service to filter HelloAsso callbacks based on configured forms.
Méthodes publiques (6)
public function __construct(App\Repository\GlobalParameterRepository $globalParameterRepository, Psr\Log\LoggerInterface $logger)public function isFormAllowed(string $formSlug): boolCheck if a form slug is allowed based on configured HelloAsso URLs.
public function getAllowedFormSlugs(): arrayGet all allowed form slugs from GlobalParameter configuration.
public function extractFormSlugFromUrl(string $url): ?stringExtract form slug from a HelloAsso URL.
public function resetCache(): voidReset the cached allowed form slugs.
public function getConfiguredForms(): arrayGet detailed information about configured forms.
Voir la source sur GitLab → src/Service/HelloAssoFormFilter.php
HelloAssoPaymentService
class App\Service\HelloAssoPaymentService
Service unifié pour la gestion des paiements HelloAsso.
Méthodes publiques (7)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Utils\OperationUtils $operationUtils, App\Service\PaymentDataManager $paymentDataManager, Psr\Log\LoggerInterface $logger, Symfony\Bundle\SecurityBundle\Security $security)public function getOrCreateHelloAsso(int $helloassoid, array $data): App\Entity\HelloAssoRécupère ou crée une entité HelloAsso (sans doublon).
public function canProcessPayment(App\Entity\HelloAsso $helloasso, string $itemState, string $statePayment): boolVérifie si un paiement peut être traité selon les conditions unifiées.
public function findAndAssociateUserEntities(App\Entity\HelloAsso $helloasso, array $payer, array $userData): arrayRecherche et associe les entités Adherent ou Prestataire à HelloAsso.
public function processSsaPayment(App\Entity\HelloAsso $helloasso, bool $isTest = false): ?App\Entity\CotisationSsaAdherentTraite un paiement SSA (mixte ou direct).
public function processMixedSsaPayment(App\Entity\HelloAsso $helloasso, App\Entity\Adherent $adherent, App\Entity\PendingPaymentData $pendingPayment, bool $isTest = false): App\Entity\CotisationSsaAdherentTraite un paiement SSA mixte (eMLc + HelloAsso).
public function processDirectSsaPayment(App\Entity\HelloAsso $helloasso, App\Entity\Adherent $adherent, bool $isTest = false): App\Entity\CotisationSsaAdherentTraite un paiement SSA direct (100% HelloAsso).
Voir la source sur GitLab → src/Service/HelloAssoPaymentService.php
HelloAssoRefundService
class App\Service\HelloAssoRefundService
Remboursement d'un paiement HelloAsso à un adhérent.
Méthodes publiques (4)
public function __construct(App\Utils\CustomEntityManager $em, App\Utils\OperationUtils $operationUtils, Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher, Psr\Log\LoggerInterface $logger)public function refund(App\Entity\HelloAsso $helloasso): stringRembourse le paiement HelloAsso. Retourne l'un des RESULT_*.
public function dispatchWebhookAlert(App\Entity\HelloAsso $helloasso): voidAlerte les trésoriers qu'un paiement HelloAsso a été remboursé côté banque (webhook),
public function alreadyRefunded(App\Entity\HelloAsso $helloasso): bool
Voir la source sur GitLab → src/Service/HelloAssoRefundService.php
HelloAssoWebhookAuthenticator
final class App\Service\HelloAssoWebhookAuthenticator
Authenticates inbound HelloAsso webhook callbacks via a shared URL token.
Méthodes publiques (2)
public function __construct(?string $expectedToken, string $environment, Psr\Log\LoggerInterface $logger)public function isAuthorised(string $providedToken): bool
Voir la source sur GitLab → src/Service/HelloAssoWebhookAuthenticator.php
HouseholdSizeDisplayService
class App\Service\HouseholdSizeDisplayService
Service pour gérer l'affichage des informations de composition du foyer (householdSize).
Méthodes publiques (7)
public function __construct(App\Repository\SolidoumeParameterRepository $solidoumeParameterRepository)public function shouldDisplayHouseholdSize(): boolDétermine si les informations de composition du foyer doivent être affichées.
public function isAdherentInputAllowed(): boolDétermine si l'adhérent peut saisir lui-même la taille de son foyer.
public function isDecimalAllowed(): boolDétermine si les valeurs décimales sont autorisées pour le householdSize.
public function shouldAdherentFillHouseholdSize(?App\Entity\Adherent $adherent): boolDétermine si l'adhérent doit remplir les informations de composition du foyer.
public function getInputAttributes(): arrayRetourne les attributs HTML pour le champ de saisie du householdSize.
public function getHouseholdSizeExplanation(): stringRetourne un message explicatif sur le householdSize.
Voir la source sur GitLab → src/Service/HouseholdSizeDisplayService.php
IbanEncryptionService
class App\Service\IbanEncryptionService
Hérite de App\Security\Encryption\FieldEncryptionService
BC shim around {@see FieldEncryptionService} — toujours utilisé par
Méthodes publiques (2)
public function encrypt(string $plaintext, string $context = 'iban'): stringpublic function decrypt(string $envelope, string $context = 'iban'): ?string
Voir la source sur GitLab → src/Service/IbanEncryptionService.php
InstallationBootstrap
final class App\Service\Installation\InstallationBootstrap
Garantit la présence des prérequis indispensables au wizard d'installation
Méthodes publiques (2)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\UsergroupRepository $usergroupRepository)public function ensureRequiredUserGroups(): arrayCrée les UserGroups indispensables s'ils n'existent pas. Flush atomique.
Voir la source sur GitLab → src/Service/Installation/InstallationBootstrap.php
InstallationCompleter
final class App\Service\Installation\InstallationCompleter
Orchestrateur de la finalisation de l'installation Kohinos.
Méthodes publiques (2)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\UsergroupRepository $usergroupRepository, Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $passwordHasher, Psr\Log\LoggerInterface $logger, App\Service\Installation\GlobalParameterFactory $parameterFactory)public function complete(array $data): App\Entity\UserFinalise l'installation à partir des données accumulées dans le wizard.
Voir la source sur GitLab → src/Service/Installation/InstallationCompleter.php
InstallationStepResolver
final class App\Service\Installation\InstallationStepResolver
Centralise la logique de routage entre étapes du wizard d'installation.
Méthodes publiques (6)
public function nextStep(string $current, array $data): stringÉtape suivante en fonction des choix de l'utilisateur.
public function previousStep(string $current, array $data): ?stringÉtape précédente — utilise nextStep en sens inverse via lookup.
public function displayStep(string $current, array $data): intNuméro d'étape à afficher à l'utilisateur (compte uniquement les étapes
public function totalSteps(array $data): intNombre total d'étapes actives.
public function progress(string $current, array $data): intPourcentage de progression (0-100).
public function activeSequence(array $data): arrayConstruit la séquence d'étapes effectivement parcourues pour le profil
Voir la source sur GitLab → src/Service/Installation/InstallationStepResolver.php
InvalidChainException
final class App\Service\Finance\Crypto\Exception\InvalidChainException
Hérite de RuntimeException · Implémente : Stringable, Throwable
Levée quand la vérification d'une chaîne cryptographique détecte une altération :
Aucune méthode publique propre à la classe.
Voir la source sur GitLab → src/Service/Finance/Crypto/Exception/InvalidChainException.php
InvariantsCheckService
final class App\Service\Finance\InvariantsCheckService
Service Symfony qui exécute le catalogue des invariants financiers Kohinos.
Méthodes publiques (3)
public function __construct(Doctrine\DBAL\Connection $connection)public function run(array $skip = array ( ), ?string $minSeverity = NULL): arrayExécute tous les invariants (sauf ceux dans $skip) et retourne un rapport
public function listInvariantNames(): array
Voir la source sur GitLab → src/Service/Finance/InvariantsCheckService.php
MessengerDashboardService
final class App\Service\Messenger\MessengerDashboardService
Data access service for the Messenger admin dashboard.
Méthodes publiques (7)
public function __construct(Doctrine\DBAL\Connection $connection, Symfony\Component\Scheduler\ScheduleProviderInterface $scheduleProvider, Psr\Log\LoggerInterface $logger)public function getQueueStats(): arrayGet message counts by queue.
public function getFailedMessages(int $limit = 50): arrayGet failed messages with parsed details.
public function getPendingMessages(int $limit = 50): arrayGet pending (async) messages with details.
public function getScheduledMessages(): arrayGet scheduled recurring messages info from the KohinosScheduleProvider.
public function removeFailedMessage(int $id): boolRemove a failed message by ID.
public function isTableReady(): boolCheck if the messenger_messages table exists.
Voir la source sur GitLab → src/Service/Messenger/MessengerDashboardService.php
MlcSubscriptionService
final class App\Service\Subscription\MlcSubscriptionService
Implémente : App\Service\Subscription\MlcSubscriptionServiceInterface
Service encapsulating annual MLC subscription processing logic.
Méthodes publiques (2)
public function __construct(App\Utils\CustomEntityManager $em, App\Utils\OperationUtils $operationUtils, Psr\Log\LoggerInterface $logger, App\Repository\GlobalParameterRepository $globalParameterRepository, App\Repository\RecurringMlcSubscriptionRequestRepository $mlcSubscriptionRepository, App\Repository\SiegeRepository $siegeRepository)public function processAnnualSubscriptions(?DateTime $processingDate = NULL, bool $dryRun = false): arrayProcess annual MLC subscriptions if today is the configured debit date.
Voir la source sur GitLab → src/Service/Subscription/MlcSubscriptionService.php
MlcSubscriptionServiceInterface
abstract interface App\Service\Subscription\MlcSubscriptionServiceInterface
Contract for the MLC annual subscription processing service.
Méthodes publiques (1)
abstract public function processAnnualSubscriptions(?DateTime $processingDate = NULL, bool $dryRun = false): arrayProcess annual MLC subscriptions.
Voir la source sur GitLab → src/Service/Subscription/MlcSubscriptionServiceInterface.php
NominatimGeocoder
final class App\Service\NominatimGeocoder
Thin wrapper over the Nominatim OpenStreetMap geocoding API.
Méthodes publiques (2)
public function __construct(Symfony\Contracts\HttpClient\HttpClientInterface $httpClient)public function geocode(string $address): ?array
Voir la source sur GitLab → src/Service/NominatimGeocoder.php
ParityComparator
final class App\Service\Staging\ParityComparator
A0 L5 — compare deux snapshots de parité (baseline vs check) et émet la
Méthodes publiques (1)
public function compare(array $baseline, array $check): arraystatus: 'fail'|'pass',
Voir la source sur GitLab → src/Service/Staging/ParityComparator.php
ParitySnapshotter
final class App\Service\Staging\ParitySnapshotter
A0 L5 — capture les agrégats financiers d'une base Kohinos sous forme de
Méthodes publiques (2)
public function __construct(Doctrine\DBAL\Connection $connection)public function capture(string $stage = 'ad_hoc'): arraycaptured_at: string,
Voir la source sur GitLab → src/Service/Staging/ParitySnapshotter.php
PaymentDataManager
class App\Service\PaymentDataManager
Service de gestion des données de paiement en attente pour les paiements mixtes eMLc + HelloAsso.
Méthodes publiques (11)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\PendingPaymentDataRepository $repository, Psr\Log\LoggerInterface $logger, Symfony\Component\HttpFoundation\RequestStack $requestStack)public function storePendingPayment(array $paymentData, ?Symfony\Component\HttpFoundation\Session\SessionInterface $session = NULL): stringStocke les données d'un paiement en attente.
public function findPendingPaymentByEmailAndAmount(string $email, float $amount): ?App\Entity\PendingPaymentDataRecherche les données de paiement par email et montant HelloAsso.
public function getPendingPaymentByToken(string $paymentToken): ?App\Entity\PendingPaymentDataRécupère les données de paiement par token.
public function markAsProcessing(App\Entity\PendingPaymentData $pendingData): voidMarque un paiement comme en cours de traitement.
public function markAsCompleted(App\Entity\PendingPaymentData $pendingData, ?string $transactionReference = NULL): voidMarque un paiement comme complété avec succès.
public function markAsError(App\Entity\PendingPaymentData $pendingData, string $errorMessage): voidMarque un paiement en erreur.
public function toSessionFormat(App\Entity\PendingPaymentData $pendingData): arrayConversion vers le format session legacy pour compatibilité.
public function cleanup(): arrayNettoie les données expirées et anciennes.
public function getStatistics(): arrayRécupère les statistiques des paiements en attente.
public function hasPendingPayment(string $adherentId, string $ssaId): boolVérifie s'il existe déjà un paiement en attente pour un adhérent/SSA.
Voir la source sur GitLab → src/Service/PaymentDataManager.php
PrestataireStatsService
class App\Service\PrestataireStatsService
40.4 — statistiques d'activité d'un prestataire : paiements reçus par mois
Méthodes publiques (2)
public function __construct(App\Repository\FluxRepository $fluxRepository)public function buildStats(App\Entity\Prestataire $prestataire, ?int $year = NULL): arrayfrom: \DateTimeImmutable,
Voir la source sur GitLab → src/Service/PrestataireStatsService.php
PseudonymizedExportProfile
class App\Service\Export\PseudonymizedExportProfile
Implémente : App\Service\Export\ExportProfileInterface
Pseudonymized export profile.
Méthodes publiques (8)
public function getName(): stringpublic function getLabel(): stringpublic function getDescription(): stringpublic function getFields(string $entityClass): arraypublic function getRequiredRole(): stringpublic function requiresJustification(): boolpublic function requiresAudit(): boolpublic function supportsEntity(string $entityClass): bool
Voir la source sur GitLab → src/Service/Export/PseudonymizedExportProfile.php
QueryExecutorInterface
abstract interface App\Service\Ssa\QueryExecutorInterface
Interface for executing database queries.
Méthodes publiques (2)
abstract public function executeSingleScalarQuery(string $dql, array $parameters = array ( ))Execute a DQL query and return a single scalar result.
abstract public function executeQuery(string $dql, array $parameters = array ( ))Execute a DQL query and return the result.
Voir la source sur GitLab → src/Service/Ssa/QueryExecutorInterface.php
RawExportProfile
class App\Service\Export\RawExportProfile
Implémente : App\Service\Export\ExportProfileInterface
Raw export profile.
Méthodes publiques (8)
public function getName(): stringpublic function getLabel(): stringpublic function getDescription(): stringpublic function getFields(string $entityClass): arraypublic function getRequiredRole(): stringpublic function requiresJustification(): boolpublic function requiresAudit(): boolpublic function supportsEntity(string $entityClass): bool
Voir la source sur GitLab → src/Service/Export/RawExportProfile.php
RecurringPurchaseService
class App\Service\Purchase\RecurringPurchaseService
Service for managing recurring purchase requests (achats mensuels récurrents).
Méthodes publiques (15)
public function __construct(App\Utils\CustomEntityManager $em, App\Repository\RecurringPurchaseRequestRepository $requestRepository, Psr\Log\LoggerInterface $logger, App\Service\Sepa\SepaNotificationService $notificationService, App\Repository\GlobalParameterRepository $globalParameterRepository)public function createPurchaseRequest(App\Entity\Adherent $adherent, App\Entity\SepaMandate $sepaMandate, float $monthlyAmount, ?int $debitDay = NULL): App\Entity\RecurringPurchaseRequestCreate a new recurring purchase request for an adherent.
public function createPurchaseRequestForPrestataire(App\Entity\Prestataire $prestataire, App\Entity\SepaMandate $sepaMandate, float $monthlyAmount, ?int $debitDay = NULL): App\Entity\RecurringPurchaseRequestCreate a new recurring purchase request for a prestataire.
public function validateRequest(App\Entity\RecurringPurchaseRequest $request): boolValidate a purchase request (treasurer action).
public function cancelRequest(App\Entity\RecurringPurchaseRequest $request): boolCancel a purchase request.
public function requestAmountModification(App\Entity\RecurringPurchaseRequest $request, float $newAmount, ?int $newDebitDay = NULL): boolRequest modification of monthly purchase amount and/or debit day.
public function approveModification(App\Entity\RecurringPurchaseRequest $request): boolApprove amount modification (treasurer action).
public function getActiveRequestForAdherent(App\Entity\Adherent $adherent): ?App\Entity\RecurringPurchaseRequestGet active purchase request for an adherent.
public function getActiveRequestForPrestataire(App\Entity\Prestataire $prestataire): ?App\Entity\RecurringPurchaseRequestGet active purchase request for a prestataire.
public function hasActiveRequestForAdherent(App\Entity\Adherent $adherent): boolCheck if adherent has an active purchase request.
public function getPendingRequests(): arrayGet all pending requests awaiting treasurer validation.
public function getRequestsWithModificationPending(): arrayGet all requests with modification pending.
public function getRequestsToProcessForCurrentMonth(): arrayGet all active requests to process for the current month.
public function getRequestsForDebitDay(int $day): arrayGet all active requests for a specific debit day.
public function markRequestAsProcessed(App\Entity\RecurringPurchaseRequest $request, int $yearMonth): voidMark a request as processed for a specific month (to prevent duplicates).
Voir la source sur GitLab → src/Service/Purchase/RecurringPurchaseService.php
RecurringSubscriptionService
class App\Service\Subscription\RecurringSubscriptionService
Service for managing recurring subscription requests (cotisations récurrentes).
Méthodes publiques (16)
public function __construct(App\Utils\CustomEntityManager $em, App\Repository\RecurringMlcSubscriptionRequestRepository $mlcRequestRepository, App\Repository\RecurringSsaSubscriptionRequestRepository $ssaRequestRepository, Psr\Log\LoggerInterface $logger, Symfony\Bundle\SecurityBundle\Security $security, App\Repository\GlobalParameterRepository $globalParameterRepository, App\Service\Sepa\SepaNotificationService $notificationService)public function createSubscriptionRequest(?App\Entity\Adherent $adherent, ?App\Entity\Prestataire $prestataire, float $amount, string $paymentMethod, ?App\Entity\SolidoumeParameter $solidoumeParameter = NULL, ?string $year = NULL, ?App\Entity\SepaMandate $sepaMandate = NULL, ?int $debitDay = NULL): App\Entity\AbstractRecurringRequestCreate a new recurring subscription request.
public function validateRequest(App\Entity\AbstractRecurringRequest $request): boolValidate a subscription request (treasurer action for euro payments).
public function cancelRequest(App\Entity\AbstractRecurringRequest $request): boolCancel a subscription request.
public function requestAmountModification(App\Entity\AbstractRecurringRequest $request, float $newAmount): boolRequest modification of subscription amount.
public function approveModification(App\Entity\AbstractRecurringRequest $request): boolApprove amount modification (treasurer action).
public function getActiveMlcRequestForAdherent(App\Entity\Adherent $adherent): ?App\Entity\RecurringMlcSubscriptionRequestGet active MLC subscription request for an adherent for a specific year.
public function getActiveSsaRequestForAdherent(App\Entity\Adherent $adherent, App\Entity\SolidoumeParameter $ssaParameter): ?App\Entity\RecurringSsaSubscriptionRequestGet active SSA subscription request for an adherent for a specific SSA fund.
public function getActiveMlcRequestForPrestataire(App\Entity\Prestataire $prestataire): ?App\Entity\RecurringMlcSubscriptionRequestGet active MLC subscription request for a prestataire for a specific year.
public function getActiveRequestForAdherent(App\Entity\Adherent $adherent): ?App\Entity\AbstractRecurringRequestGet active subscription request for an adherent for a specific year.
public function getActiveRequestForPrestataire(App\Entity\Prestataire $prestataire): ?App\Entity\AbstractRecurringRequestGet active subscription request for a prestataire for a specific year.
public function hasActiveRequestForAdherent(App\Entity\Adherent $adherent): boolCheck if adherent has an active subscription request for a specific year.
public function hasActiveRequestForPrestataire(App\Entity\Prestataire $prestataire): boolCheck if prestataire has an active subscription request for a specific year.
public function getPendingEuroRequests(): arrayGet all pending euro requests awaiting treasurer validation.
public function getRequestsWithModificationPending(): arrayGet all requests with modification pending.
public function getActiveRequestForYear(?App\Entity\Adherent $adherent, ?App\Entity\Prestataire $prestataire, ?App\Entity\SolidoumeParameter $solidoumeParameter, string $year): ?App\Entity\AbstractRecurringRequestGet active subscription request for an entity (Adherent or Prestataire).
Voir la source sur GitLab → src/Service/Subscription/RecurringSubscriptionService.php
RedistributionStrategyInterface
abstract interface App\Service\Ssa\Strategy\RedistributionStrategyInterface
Méthodes publiques (3)
abstract public function getMode(): stringReturn the mode string handled by this strategy (matches SolidoumeParameter::DISTRIBUTION_MODE_* consts).
abstract public function computeBasePerParticipant(App\Entity\SolidoumeParameter $param, App\Model\CalculatedSsa $calculatedSsa): ?floatCompute base amount per participant for the SSA, if applicable.
abstract public function computeItemAmount(App\Entity\SolidoumeParameter $param, App\Entity\SolidoumeItem $item, App\Model\CalculatedSsa $calculatedSsa, ?float $basePerParticipant): floatCompute the amount to redistribute for a given item.
Voir la source sur GitLab → src/Service/Ssa/Strategy/RedistributionStrategyInterface.php
RegistrationNotificationService
class App\Service\RegistrationNotificationService
Service to handle registration notification events.
Méthodes publiques (5)
public function __construct(Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher, Doctrine\ORM\EntityManagerInterface $em, ?Psr\Log\LoggerInterface $logger = NULL)public function processUserRegistration(App\Event\UserEvent $event): voidProcess a user registration event and dispatch email notification.
public function processAdherentRegistration(App\Event\UserEvent $event): voidProcess an adherent registration event and dispatch email notification.
public function processPrestataireRegistration(App\Event\PrestataireEvent $event): voidProcess a prestataire registration event and dispatch email notification.
public function processCaissierRegistration(App\Event\PrestataireEvent $event): voidProcess a caissier registration event and dispatch email notification.
Voir la source sur GitLab → src/Service/RegistrationNotificationService.php
SchedulerHealthChecker
final class App\Service\Scheduler\SchedulerHealthChecker
Health-check des jobs planifiés Kohinos — A7 L6 code.
Méthodes publiques (2)
public function __construct(array $jobs, string $textfileDir, Psr\Log\LoggerInterface $logger = \Psr\Log\NullLogger::__set_state(array( )))public function check(?DateTimeImmutable $now = NULL): arrayÉvalue tous les jobs et retourne un rapport.
Voir la source sur GitLab → src/Service/Scheduler/SchedulerHealthChecker.php
SepaMandateGenerator
class App\Service\Sepa\SepaMandateGenerator
Service to generate SEPA mandate documents (PDF or HTML).
Méthodes publiques (4)
public function __construct(Twig\Environment $twig, App\Repository\GlobalParameterRepository $globalParameterRepository)public function generateHtml(App\Entity\SepaMandate $mandate): stringGenerate HTML content for SEPA mandate.
public function generatePdf(App\Entity\SepaMandate $mandate): stringGenerate PDF for SEPA mandate.
public function getFilename(App\Entity\SepaMandate $mandate): stringGet filename for mandate PDF.
Voir la source sur GitLab → src/Service/Sepa/SepaMandateGenerator.php
SepaMandateRevocationService
class App\Service\Sepa\SepaMandateRevocationService
Service dedicated to SEPA mandate revocation.
Méthodes publiques (2)
public function __construct(App\Utils\CustomEntityManager $em, App\Repository\RecurringPurchaseRequestRepository $purchaseRepository, App\Repository\RecurringMlcSubscriptionRequestRepository $mlcRepository, App\Repository\RecurringSsaSubscriptionRequestRepository $ssaRepository, App\Service\Sepa\SepaNotificationService $notificationService, Psr\Log\LoggerInterface $logger)public function revokeMandate(App\Entity\SepaMandate $mandate): boolRevoke an active SEPA mandate and cancel all linked recurring requests.
Voir la source sur GitLab → src/Service/Sepa/SepaMandateRevocationService.php
SepaMandateService
class App\Service\Sepa\SepaMandateService
Service for managing SEPA mandates.
Méthodes publiques (14)
public function __construct(App\Utils\CustomEntityManager $em, App\Repository\SepaMandateRepository $mandateRepository, Psr\Log\LoggerInterface $logger, App\Service\Sepa\SepaNotificationService $notificationService)public function createMandateForAdherent(App\Entity\Adherent $adherent, string $iban, ?string $bic, string $accountHolderName): App\Entity\SepaMandateCreate a new SEPA mandate for an adherent.
public function createMandateForPrestataire(App\Entity\Prestataire $prestataire, string $iban, ?string $bic, string $accountHolderName): App\Entity\SepaMandateCreate a new SEPA mandate for a prestataire.
public function validateMandate(App\Entity\SepaMandate $mandate): boolValidate a pending SEPA mandate (treasurer action).
public function cancelMandate(App\Entity\SepaMandate $mandate): boolCancel an active SEPA mandate.
public function getRecurringRequestsForMandate(App\Entity\SepaMandate $mandate): arrayGet all recurring requests (subscriptions and purchases) associated with a mandate.
public function cancelMandateWithRecurringRequests(App\Entity\SepaMandate $mandate): arrayCancel a SEPA mandate and all associated recurring requests.
public function updateIbanForAdherent(App\Entity\Adherent $adherent, string $newIban, ?string $newBic, string $accountHolderName): App\Entity\SepaMandateUpdate IBAN for an adherent (creates new mandate and cancels old one).
public function updateIbanForPrestataire(App\Entity\Prestataire $prestataire, string $newIban, ?string $newBic, string $accountHolderName): App\Entity\SepaMandateUpdate IBAN for a prestataire (creates new mandate and cancels old one).
public function getActiveMandateForAdherent(App\Entity\Adherent $adherent): ?App\Entity\SepaMandateGet active mandate for an adherent.
public function getActiveMandateForPrestataire(App\Entity\Prestataire $prestataire): ?App\Entity\SepaMandateGet active mandate for a prestataire.
public function hasActiveMandateForAdherent(App\Entity\Adherent $adherent): boolCheck if adherent has an active mandate.
public function hasActiveMandateForPrestataire(App\Entity\Prestataire $prestataire): boolCheck if prestataire has an active mandate.
public function generateMandateReference(App\Entity\SepaMandate $mandate): stringGénère une référence unique pour le mandat SEPA (RUM - Référence Unique de Mandat).
Voir la source sur GitLab → src/Service/Sepa/SepaMandateService.php
SepaNotificationService
class App\Service\Sepa\SepaNotificationService
Hérite de App\Service\Email\BaseNotificationService
Service for sending SEPA-related email notifications.
Méthodes publiques (19)
public function __construct(Symfony\Component\Mailer\MailerInterface $mailer, Twig\Environment $templating, Symfony\Contracts\Translation\TranslatorInterface $translator, Psr\Log\LoggerInterface $logger, App\Repository\UserRepository $userRepository, string $fromEmail = 'noreply@kohinos.net')public function notifyMandateCreated(App\Entity\SepaMandate $mandate): boolSend notification when a new SEPA mandate is created.
public function sendMandateRevokedEmail(App\Entity\SepaMandate $mandate): boolSend notification when a SEPA mandate is revoked by the treasurer.
public function notifyMandateValidated(App\Entity\SepaMandate $mandate): boolSend notification when a SEPA mandate is validated by treasurer.
public function sendMandateCancelledEmail(App\Entity\SepaMandate $mandate): boolSend notification when a SEPA mandate is cancelled.
public function notifyIbanUpdated(App\Entity\SepaMandate $newMandate, App\Entity\SepaMandate $oldMandate): boolSend notification when IBAN is updated.
public function notifySubscriptionRequestCreated(App\Entity\AbstractRecurringRequest $request): boolSend notification when a recurring subscription request is created.
public function notifyPurchaseRequestCreated(App\Entity\RecurringPurchaseRequest $request): boolSend notification when a recurring purchase request is created.
public function notifyPurchaseValidated(App\Entity\RecurringPurchaseRequest $request): boolSend notification when a recurring purchase request is VALIDATED by treasurer.
public function sendSepaSubscriptionValidatedEmail(App\Entity\AbstractRecurringRequest $request): boolSend notification when a subscription request is VALIDATED by treasurer.
public function sendSepaSubscriptionRejectedEmail(App\Entity\AbstractRecurringRequest $request): boolSend notification when a subscription request is REJECTED by treasurer.
public function sendSubscriptionModificationApprovedEmail(App\Entity\AbstractRecurringRequest $request, float $oldAmount): boolSend notification when a subscription amount modification is approved.
public function sendSubscriptionModificationRejectedEmail(App\Entity\AbstractRecurringRequest $request, string $reason = ''): boolSend notification when a subscription amount modification is rejected.
public function sendInactiveMandateAlertToTreasurer(array $inactiveMandates): boolSend alert to treasurer when inactive SEPA mandates are detected during SSA processing.
public function sendMandateInactiveAlertToAdherent(App\Entity\Adherent $adherent, App\Entity\SepaMandate $mandate, App\Entity\SolidoumeParameter $ssa): boolSend alert to adherent when their SEPA mandate is inactive and payment was skipped.
public function notifyModificationRequested(App\Entity\AbstractRecurringRequest $request): boolNotify adherent that their modification request has been sent.
public function notifyPurchaseModificationRequested(App\Entity\RecurringPurchaseRequest $request): boolNotify adherent that their purchase modification request has been sent.
public function notifyPurchaseModificationApproved(App\Entity\RecurringPurchaseRequest $request): boolNotify adherent that their purchase modification has been approved.
public function notifyPurchaseModificationRejected(App\Entity\RecurringPurchaseRequest $request, string $reason = ''): boolNotify adherent that their purchase modification has been rejected.
Voir la source sur GitLab → src/Service/Sepa/SepaNotificationService.php
SepaProcessingService
final class App\Service\Sepa\SepaProcessingService
Implémente : App\Service\Sepa\SepaProcessingServiceInterface
Service encapsulating all SEPA monthly processing logic.
Méthodes publiques (6)
public function __construct(App\Utils\CustomEntityManager $em, App\Service\Purchase\RecurringPurchaseService $purchaseService, App\Utils\OperationUtils $operationUtils, Psr\Log\LoggerInterface $logger, App\Repository\GlobalParameterRepository $globalParameterRepository, App\Service\CivilYearService $civilYearService, Symfony\Component\Lock\LockFactory $lockFactory, App\Repository\SolidoumeItemRepository $solidoumeItemRepository, Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher)public function processEMlcSubscriptions(DateTime $processingDate, bool $dryRun = false): arrayProcess e-MLC annual subscriptions (cotisations).
public function processMonthlyPurchases(int $currentDay, int $yearMonth, bool $dryRun = false): arrayProcess monthly recurring purchases.
public function processSsaSepaSubscriptions(int $currentDay, int $yearMonth, bool $dryRun = false): arrayProcess SSA SEPA subscriptions.
public function getAnnualDebitDate(): arrayGet the configured annual debit date from GlobalParameter.
public function processAll(DateTime $processingDate, bool $dryRun = false): arrayRun the full monthly SEPA processing for a given date.
Voir la source sur GitLab → src/Service/Sepa/SepaProcessingService.php
SepaProcessingServiceInterface
abstract interface App\Service\Sepa\SepaProcessingServiceInterface
Contract for the SEPA monthly processing service.
Méthodes publiques (2)
abstract public function processAll(DateTime $processingDate, bool $dryRun = false): arrayRun the complete SEPA monthly processing pipeline.
abstract public function getAnnualDebitDate(): arrayGet the configured annual debit date from GlobalParameter.
Voir la source sur GitLab → src/Service/Sepa/SepaProcessingServiceInterface.php
SitemapGeneratorService
class App\Service\SitemapGeneratorService
Service for generating XML sitemap.
Méthodes publiques (3)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, Symfony\Component\Routing\Generator\UrlGeneratorInterface $urlGenerator)public function generate(): stringGenerate the complete sitemap XML content.
public function getUrlCount(): intGet the count of URLs in the sitemap.
Voir la source sur GitLab → src/Service/SitemapGeneratorService.php
SolidoumeItemFluxFinder
final class App\Service\Ssa\SolidoumeItemFluxFinder
Implémente : App\Service\Ssa\FluxFinderInterface
Concrete implementation of FluxFinderInterface using FluxRepository.
Méthodes publiques (5)
public function __construct(App\Repository\FluxRepository $fluxRepository)public function findPrelevement(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\Fluxpublic function findCotisationSsa(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\Fluxpublic function findPaiementRetour(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\Fluxpublic function findAutoPrelevementInPeriod(App\Entity\Adherent $adherent, App\Entity\Prestataire $manager, App\Entity\SolidoumeParameter $param, DateTime $periodStart, DateTime $periodEnd): ?App\Entity\Flux
Voir la source sur GitLab → src/Service/Ssa/SolidoumeItemFluxFinder.php
SsaCalculationService
class App\Service\Ssa\SsaCalculationService
Méthodes publiques (2)
public function __construct(App\Service\Ssa\CalculatedSsaFactoryInterface $calculatedSsaFactory)public function calculateTotalAmountToPayByManager(array $ssas, ?DateTime $simulatedDate = NULL, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): array
Voir la source sur GitLab → src/Service/Ssa/SsaCalculationService.php
SsaDateService
class App\Service\Ssa\SsaDateService
Méthodes publiques (1)
public function processSimulatedDate(?string $simulateDay, ?string $simulateMonth, ?string $simulateYear, Symfony\Component\Console\Style\SymfonyStyle $io): ?DateTime
Voir la source sur GitLab → src/Service/Ssa/SsaDateService.php
SsaExecutionResult
class App\Service\Ssa\SsaExecutionResult
Méthodes publiques (8)
public function __construct(App\Service\Ssa\SsaWebOutputCapture $outputCapture, array $results, int $exitCode, ?array $report = NULL)public function getOutputCapture(): App\Service\Ssa\SsaWebOutputCapturepublic function getFormattedOutput(): stringpublic function getResults(): arraypublic function getExitCode(): intpublic function isSuccessful(): boolpublic function getMessages(): arraypublic function getReport(): ?array
Voir la source sur GitLab → src/Service/Ssa/SsaExecutionResult.php
SsaFormerParticipantService
final class App\Service\Ssa\SsaFormerParticipantService
Implémente : App\Service\Ssa\SsaFormerParticipantServiceInterface
Service to send reminder emails to former SSA participants.
Méthodes publiques (2)
public function __construct(App\Utils\CustomEntityManager $em, Psr\Log\LoggerInterface $logger, Symfony\Component\Mailer\MailerInterface $mailer, App\Repository\SolidoumeParameterRepository $ssaRepository, App\Repository\SolidoumeItemRepository $itemRepository)public function sendAllAlerts(?DateTime $executionDate = NULL, bool $dryRun = false): arraySend reminder alerts to all former participants across all enabled SSAs.
Voir la source sur GitLab → src/Service/Ssa/SsaFormerParticipantService.php
SsaFormerParticipantServiceInterface
abstract interface App\Service\Ssa\SsaFormerParticipantServiceInterface
Contract for the SSA former participant alert service.
Méthodes publiques (1)
abstract public function sendAllAlerts(?DateTime $executionDate = NULL, bool $dryRun = false): arraySend reminder alerts to all former SSA participants.
Voir la source sur GitLab → src/Service/Ssa/SsaFormerParticipantServiceInterface.php
SsaOrchestrator
class App\Service\Ssa\SsaOrchestrator
Méthodes publiques (3)
public function __construct(App\Utils\CustomEntityManager $em, Psr\Log\LoggerInterface $logger, App\Service\Ssa\SsaReminderService $reminderService, App\Service\Ssa\SsaTakingService $takingService, App\Service\Ssa\SsaRedistributionService $redistributionService, App\Service\Ssa\SsaCalculationService $calculationService, App\Service\Ssa\SsaDateService $dateService, App\Service\Ssa\SsaReportService $reportService)public function execute(array $options = array ( )): App\Service\Ssa\SsaExecutionResultExecute SSA process for a specific SSA or all enabled SSAs.
public function testRedistribution(string $ssaId): App\Service\Ssa\SsaExecutionResultTest redistribution for a specific SSA.
Voir la source sur GitLab → src/Service/Ssa/SsaOrchestrator.php
SsaRedistributionService
class App\Service\Ssa\SsaRedistributionService
Méthodes publiques (3)
public function __construct(App\Utils\CustomEntityManager $em, App\Utils\OperationUtils $operationUtils, Symfony\Component\Mailer\MailerInterface $mailer, Twig\Environment $templating, Psr\Log\LoggerInterface $logger, App\Service\Ssa\Strategy\CalculationStrategyFactory $strategyFactory, App\Service\Ssa\CalculatedSsaFactory $calculatedSsaFactory, Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher)public function ensureAllParticipantAccountsExist(App\Entity\SolidoumeParameter $param, ?DateTime $simulatedDate = NULL, bool $isTest = false, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): intEnsure all participant accounts exist before redistribution.
public function executeRedistribution(App\Entity\SolidoumeParameter $param, ?DateTime $simulatedDate = NULL, bool $isTest = false, bool $testExecute = false, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): array
Voir la source sur GitLab → src/Service/Ssa/SsaRedistributionService.php
SsaReminderService
class App\Service\Ssa\SsaReminderService
Méthodes publiques (3)
public function __construct(App\Utils\CustomEntityManager $em, Symfony\Component\Mailer\MailerInterface $mailer, Twig\Environment $templating, Psr\Log\LoggerInterface $logger)public function executeReminders(App\Entity\SolidoumeParameter $ssa, ?DateTime $simulatedDate = NULL, bool $isTest = false, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): arraypublic function shouldExecuteReminder(App\Entity\SolidoumeParameter $param, App\Entity\SolidoumeItem $item, ?DateTime $simulatedDate = NULL): bool
Voir la source sur GitLab → src/Service/Ssa/SsaReminderService.php
SsaReportService
class App\Service\Ssa\SsaReportService
Méthodes publiques (4)
public function __construct(App\Utils\CustomEntityManager $em, App\Service\Ssa\CalculatedSsaFactory $calculatedSsaFactory)public function generateDetailedReport(array $ssas, array $globalResults, ?DateTime $simulatedDate, Symfony\Component\Console\Style\SymfonyStyle $io): voidpublic function buildReportData(array $ssas, array $globalResults, ?DateTime $simulatedDate): arrayBuild a reusable SSA report data structure for CLI, Admin UI, or JSON export.
public function displayExecutionSummary(array $globalResults, float $memoryUsage, float $executionTime, Symfony\Component\Console\Style\SymfonyStyle $io): void
Voir la source sur GitLab → src/Service/Ssa/SsaReportService.php
SsaSepaSubscriptionService
class App\Service\Ssa\SsaSepaSubscriptionService
Service de gestion des cotisations SSA via prélèvement SEPA.
Méthodes publiques (5)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\SolidoumeItemRepository $solidoumeItemRepository, Psr\Log\LoggerInterface $logger)public function createOrUpdateSolidoumeItemFromValidatedRequest(App\Entity\AbstractRecurringRequest $request): App\Entity\SolidoumeItemCrée ou met à jour le SolidoumeItem lors de la validation d'une demande de cotisation SEPA SSA.
public function disableSolidoumeItem(App\Entity\SolidoumeItem $item): voidDésactive un SolidoumeItem (lors de l'annulation d'une demande par exemple).
public function updateSolidoumeItemAmount(App\Entity\AbstractRecurringRequest $request): ?App\Entity\SolidoumeItemMet à jour le montant du SolidoumeItem lié à une RecurringSsaSubscriptionRequest.
public function updateSolidoumeItemDebitDay(App\Entity\RecurringSsaSubscriptionRequest $request): ?App\Entity\SolidoumeItemMet à jour le jour de prélèvement d'un SolidoumeItem existant suite à l'approbation d'une modification.
Voir la source sur GitLab → src/Service/Ssa/SsaSepaSubscriptionService.php
SsaTakingService
class App\Service\Ssa\SsaTakingService
Méthodes publiques (2)
public function __construct(App\Utils\CustomEntityManager $em, App\Utils\OperationUtils $operationUtils, Symfony\Component\Mailer\MailerInterface $mailer, Twig\Environment $templating, Psr\Log\LoggerInterface $logger, Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher)public function executeTaking(App\Entity\SolidoumeParameter $ssa, ?DateTime $simulatedDate = NULL, bool $isTest = false, ?Symfony\Component\Console\Style\SymfonyStyle $io = NULL): array
Voir la source sur GitLab → src/Service/Ssa/SsaTakingService.php
SsaWebOutputCapture
class App\Service\Ssa\SsaWebOutputCapture
Méthodes publiques (8)
public function __construct()public function getSymfonyStyle(): Symfony\Component\Console\Style\SymfonyStylepublic function addMessage(string $type, string $message): voidpublic function getFormattedOutput(): stringpublic function getMessages(): arraypublic function setExitCode(int $code): voidpublic function getExitCode(): intpublic function clear(): void
Voir la source sur GitLab → src/Service/Ssa/SsaWebOutputCapture.php
StandardExportProfile
class App\Service\Export\StandardExportProfile
Implémente : App\Service\Export\ExportProfileInterface
Standard export profile.
Méthodes publiques (8)
public function getName(): stringpublic function getLabel(): stringpublic function getDescription(): stringpublic function getFields(string $entityClass): arraypublic function getRequiredRole(): stringpublic function requiresJustification(): boolpublic function requiresAudit(): boolpublic function supportsEntity(string $entityClass): bool
Voir la source sur GitLab → src/Service/Export/StandardExportProfile.php
TiersStrategy
class App\Service\Ssa\Strategy\TiersStrategy
Implémente : App\Service\Ssa\Strategy\RedistributionStrategyInterface
Méthodes publiques (3)
public function getMode(): stringpublic function computeBasePerParticipant(App\Entity\SolidoumeParameter $param, App\Model\CalculatedSsa $calculatedSsa): ?floatpublic function computeItemAmount(App\Entity\SolidoumeParameter $param, App\Entity\SolidoumeItem $item, App\Model\CalculatedSsa $calculatedSsa, ?float $basePerParticipant): float
Voir la source sur GitLab → src/Service/Ssa/Strategy/TiersStrategy.php
TreasurerDashboardService
class App\Service\TreasurerDashboardService
Agrégation des KPI du tableau de bord trésorier (#40.1).
Méthodes publiques (2)
public function __construct(App\Repository\SepaMandateRepository $sepaMandateRepository, App\Repository\RecurringPurchaseRequestRepository $purchaseRequestRepository, App\Repository\RecurringMlcSubscriptionRequestRepository $mlcSubscriptionRepository, App\Repository\RecurringSsaSubscriptionRequestRepository $ssaSubscriptionRepository, App\Repository\EmailLogRepository $emailLogRepository, App\Repository\IbanChangeRequestRepository $ibanChangeRequestRepository, App\Repository\FluxRepository $fluxRepository, Symfony\Component\Clock\ClockInterface $clock)public function getDashboardData(): arraysepa: array<string, mixed>,
Voir la source sur GitLab → src/Service/TreasurerDashboardService.php
UserContextSessionInitializer
class App\Service\Security\UserContextSessionInitializer
Centralise la logique de peuplement / nettoyage des clés session qui
Méthodes publiques (5)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, Symfony\Component\HttpFoundation\RequestStack $requestStack)public function clearSessionKeys(): voidSupprime toutes les clés session de contexte utilisateur.
public function initializeForUser(App\Entity\User $user, ?App\Entity\Usergroup $activeGroup): voidInitialise les clés session pour un user fraîchement authentifié.
public function persistContextChoice(App\Entity\User $user, App\Enum\UserContextType $type, object $entity): voidAppelée par IndexController::prestaChoiceAction() etc. lorsqu'un user
public function clearPersistedContext(App\Entity\User $user): voidEfface le contexte persisté (ex : user dont toutes les assocs sont retirées).
Voir la source sur GitLab → src/Service/Security/UserContextSessionInitializer.php
UserNotificationPreferenceService
class App\Service\UserNotificationPreferenceService
Service to handle user notification preferences.
Méthodes publiques (1)
public function shouldReceiveNotification(?App\Entity\User $user, string $notificationType): boolCheck if a user should receive email notifications.
Voir la source sur GitLab → src/Service/UserNotificationPreferenceService.php
WebhookIdempotencyService
final class App\Service\Webhook\WebhookIdempotencyService
A5 L3 — Idempotence des webhooks HelloAsso / PayZen.
Méthodes publiques (3)
public function __construct(Doctrine\ORM\EntityManagerInterface $em, App\Repository\WebhookProcessedRepository $repository, Psr\Log\LoggerInterface $logger)public function findOrCreate(string $source, string $externalId, string $payloadRaw, ?DateTimeImmutable $originTimestamp = NULL): arrayTente d'enregistrer une nouvelle réception. Retourne [entité, isReplay].
public function isOutsideWindow(?DateTimeImmutable $originTimestamp, ?DateTimeImmutable $now = NULL): boolRetourne true si le payload est trop ancien (> 48 h) → 410 Gone.
Voir la source sur GitLab → src/Service/Webhook/WebhookIdempotencyService.php
WebhookRateLimitService
final class App\Service\Webhook\WebhookRateLimitService
A5 L3 — Rate-limit anti-flood des endpoints webhook.
Méthodes publiques (3)
public function __construct(Symfony\Component\RateLimiter\RateLimiterFactory $webhookHelloassoLimiter, Symfony\Component\RateLimiter\RateLimiterFactory $webhookPayzenLimiter, Psr\Log\LoggerInterface $logger)public function consumeHelloAsso(Symfony\Component\HttpFoundation\Request $request): boolpublic function consumePayzen(Symfony\Component\HttpFoundation\Request $request): bool
Voir la source sur GitLab → src/Service/Webhook/WebhookRateLimitService.php