PaymentController
extends AbstractController
in package
Expose la consultation des paiements et le téléchargement de leurs factures.
Le listing est partagé entre le personnel du back-office et les clients : ROLE_ADMIN et ROLE_OPERATOR voient tous les paiements, tandis que les autres utilisateurs authentifiés sont restreints à leurs propres paiements. Le listing peut être segmenté en transactions « Entreprise » (commandes contenant au moins une ligne rattachée à un employé, ou abonnements au plan « Entreprise ») et paiements « Particulier ».
Préfixe de route : /admin. Authentification complète requise (IS_AUTHENTICATED_FULLY).
Attributes
- #[IsGranted]
- 'IS_AUTHENTICATED_FULLY'
- #[Route]
- '/admin'
Table of Contents
Properties
Methods
- __construct() : mixed
- downloadInvoice() : Response
- Generates and downloads an invoice PDF for a given payment.
- index() : Response
- Affiche la liste paginée des paiements, filtrable par type et par source.
Properties
$mailerService
private
MailerService
$mailerService
Methods
__construct()
public
__construct(MailerService $mailerService) : mixed
Parameters
- $mailerService : MailerService
-
Service d'envoi d'emails, utilisé ici uniquement pour récupérer l'adresse d'expédition affichée sur la facture.
downloadInvoice()
Generates and downloads an invoice PDF for a given payment.
public
downloadInvoice(Payment $payment, DomPdfService $pdfGenerator) : Response
Parameters
- $payment : Payment
-
The payment entity containing payment details.
- $pdfGenerator : DomPdfService
-
The service used to generate PDF files.
Attributes
- #[Route]
- '/invoice/payment/{id}'
- $name: 'download_invoice'
Return values
Response —The response containing the generated PDF file.
The method prepares the data required for the invoice template, including payment details, company configuration, and logo image. It then renders the HTML content for the invoice using a Twig template and generates a PDF file with the rendered content.
Génère et télécharge la facture PDF d'un paiement.
Contrôle d'accès : si l'utilisateur n'est ni ROLE_ADMIN ni ROLE_OPERATOR, il doit être le
propriétaire du paiement, sinon une exception d'accès refusé est levée. Le logo BCard
(public/assets/new_design/image/bcard.png) est lu depuis le disque et encodé en base64,
de même que la première image de la carte associée au paiement lorsqu'elle existe dans
public/card/ (sinon cardImage vaut null). Le montant est formaté sans décimale avec
séparateur d'espace, la date au format d/m/Y, et les coordonnées de l'émetteur sont
codées en dur (Bcard, Conakry) hormis l'email fourni par MailerService::getFromEmail().
Le fichier produit est nommé facture_<idPaiement>_<ddmmyyyy>.pdf.
Route : /admin/invoice/payment/{id} (toutes méthodes), nom download_invoice.
index()
Affiche la liste paginée des paiements, filtrable par type et par source.
public
index(PaymentRepository $paymentRepository, PaginatorInterface $paginator, Request $request) : Response
Construit une requête sur les paiements joints à la commande, à l'abonnement et au plan,
triée par identifiant décroissant. Si l'utilisateur n'est ni ROLE_ADMIN ni ROLE_OPERATOR, la
requête est restreinte à ses propres paiements. Le paramètre type segmente les résultats :
business retient les paiements dont la commande contient au moins un OrderItem rattaché à
un employé ou dont le plan d'abonnement se nomme « Entreprise » — affiné par source valant
orders (commandes uniquement) ou subscriptions (abonnements « Entreprise » uniquement) ;
personal retient les paiements sans commande ou dont aucune ligne n'est rattachée à un
employé ; toute autre valeur affiche l'ensemble. Le titre de page et le fil d'Ariane sont
adaptés à la combinaison retenue. Pagination fixe de 10 éléments.
Route : /admin/payment (GET), nom app_payments.
Parameters
- $paymentRepository : PaymentRepository
-
Dépôt des paiements, fournit le query builder de base.
- $paginator : PaginatorInterface
-
Service de pagination KnpPaginator.
- $request : Request
-
Requête HTTP courante (paramètres
type,source,page).
Attributes
- #[Route]
- '/payment'
- $name: 'app_payments'
- $methods: ['GET']
Return values
Response —Rendu du template admin/payment/index.html.twig avec la pagination, le
titre de page, le libellé de fil d'Ariane et les filtres actifs.