BCard - Documentation technique

AdminClientController extends AbstractController
in package

Expose la fiche client consolidée du back-office.

Regroupe sur une seule page tout ce que le staff doit savoir d'un client : son abonnement courant (ou à défaut le plus récent), ses cartes virtuelles, ses cartes physiques, ses commandes d'abonnement, ses commandes « retail » et son journal d'audit filtrable et paginé. La distinction entre commandes d'abonnement, commandes de carte physique et commandes retail repose sur des sous-requêtes EXISTS/NOT EXISTS sur Payment.subscription et PhysicalCard.

Préfixe de route : /admin/clients (préfixe de nom admin_clients_). Authentification complète requise (IS_AUTHENTICATED_FULLY), et l'action exige ROLE_ADMIN, ROLE_OPERATOR ou ROLE_SUPPORT.

Attributes
#[IsGranted]
'IS_AUTHENTICATED_FULLY'
#[Route]
'/admin/clients'
$name: 'admin_clients_'

Table of Contents

Properties

$physicalCardRepository  : PhysicalCardRepository

Methods

__construct()  : mixed
show()  : Response
Affiche la fiche détaillée d'un client.
getLatestSubscription()  : Subscription|null
Retourne l'abonnement le plus récemment créé d'un client.

Properties

Methods

show()

Affiche la fiche détaillée d'un client.

public show(User $user, Request $request, BusinessCardAizeRepository $businessCardAizeRepository, OrderRepository $orderRepository, AuditLogRepository $auditLogRepository, PaginatorInterface $paginator) : Response

Refuse l'accès si l'utilisateur ne détient ni ROLE_ADMIN, ni ROLE_OPERATOR, ni ROLE_SUPPORT. Sélectionne l'abonnement actif du client ou, à défaut, le plus récent via AdminClientController::getLatestSubscription(). Charge ensuite quatre jeux de données : les cartes virtuelles (BusinessCardAize, tri id décroissant), les cartes physiques avec leur commande jointe (tri createdAt décroissant), les commandes d'abonnement (celles ayant un paiement rattaché à une souscription) et les commandes retail (celles qui n'ont ni paiement d'abonnement ni carte physique associée). Le journal d'audit du client est paginé séparément (10 par page, paramètre auditPage) et filtrable par recherche libre auditQ et par type d'action auditAction. Deux tables de correspondance sont passées à la vue pour traduire les codes d'action en libellés français et en classes CSS de badge.

Route : /admin/clients/{id} (GET), nom admin_clients_show. Réservée à ROLE_ADMIN, ROLE_OPERATOR ou ROLE_SUPPORT (contrôle en dur dans la méthode).

Parameters
$user : User

Client consulté, résolu depuis {id}.

$request : Request

Requête HTTP source des filtres d'audit et de la pagination.

$businessCardAizeRepository : BusinessCardAizeRepository

Dépôt des cartes virtuelles du client.

$orderRepository : OrderRepository

Dépôt des commandes, utilisé pour séparer commandes d'abonnement et retail.

$auditLogRepository : AuditLogRepository

Dépôt fournissant la requête de journal d'audit filtrée par utilisateur.

$paginator : PaginatorInterface

Paginateur KnpPaginator appliqué au journal d'audit.

Tags
throws
AccessDeniedException

Si aucun des trois rôles autorisés n'est détenu.

Attributes
#[Route]
'/{id}'
$name: 'show'
$methods: ['GET']
Return values
Response

Page HTML admin/client/show.html.twig.

getLatestSubscription()

Retourne l'abonnement le plus récemment créé d'un client.

private getLatestSubscription(User $user) : Subscription|null

Parcourt en mémoire la collection User::getSubscriptions() en ignorant les éléments qui ne sont pas des instances de Subscription, et conserve celui dont createdAt est le plus grand. Utilisée en repli lorsque le client n'a aucun abonnement actif.

Parameters
$user : User

Client dont on cherche le dernier abonnement.

Return values
Subscription|null

Abonnement le plus récent, ou null si le client n'en a aucun.


        
On this page

Search results