BCard - Documentation technique

CardApiController extends AbstractController
in package

Contrôleur d'API exposant le catalogue public des modèles de cartes NFC.

Il fournit en lecture seule les cartes du catalogue non masquées (isHide = false), avec leurs options de couleur, options d'impression, polices, images et spécifications, telles que mises en forme par CardSerializerService. Aucun contrôle d'accès n'est appliqué au niveau de la classe : ces points d'entrée sont destinés à alimenter le tunnel de commande côté client.

Préfixe de route : /api/cards. Aucun rôle requis au niveau de la classe.

Attributes
#[Route]
'/api/cards'
$name: 'api_cards_'
#[Tag]
$name: 'Cards'
$description: 'Gestion des cartes NFC'

Table of Contents

Properties

$cardSerializer  : CardSerializerService
$entityManager  : EntityManagerInterface
$serializer  : SerializerInterface
$validator  : ValidatorInterface

Methods

__construct()  : mixed
getTypes()  : JsonResponse
Retourne la liste dédoublonnée des types de produits présents au catalogue.
list()  : JsonResponse
Retourne le catalogue des cartes visibles.
show()  : JsonResponse
Retourne le détail d'une carte du catalogue.

Properties

Methods

__construct()

public __construct(EntityManagerInterface $entityManager, SerializerInterface $serializer, ValidatorInterface $validator, CardSerializerService $cardSerializer) : mixed
Parameters
$entityManager : EntityManagerInterface

Gestionnaire d'entités Doctrine (injecté, non utilisé par les actions actuelles).

$serializer : SerializerInterface

Sérialiseur Symfony (injecté, non utilisé par les actions actuelles).

$validator : ValidatorInterface

Validateur Symfony (injecté, non utilisé par les actions actuelles).

$cardSerializer : CardSerializerService

Service de mise en forme des cartes en tableaux JSON.

getTypes()

Retourne la liste dédoublonnée des types de produits présents au catalogue.

public getTypes(CardRepository $cardRepository) : JsonResponse

Parcourt les cartes non masquées et agrège les valeurs distinctes et non vides de typeProduct (dédoublonnage réalisé en PHP via in_array(), sans requête SQL dédiée ni tri).

Attention : la route /{id} étant déclarée avant celle-ci, ce point d'entrée peut être court-circuité par CardApiController::show() lors du routage.

Route : /api/cards/types (GET), nom api_cards_types.

Réponses : 200 systématiquement, avec un tableau (éventuellement vide) de chaînes.

Parameters
$cardRepository : CardRepository

Dépôt utilisé pour charger les cartes non masquées.

Attributes
#[Get]
$path: '/api/cards/types'
$description: 'Récupère la liste des types de produits uniques'
$summary: 'Liste les types de produits disponibles'
$tags: ['Cards']
$responses: [new OA\Response(response: 200, description: 'Liste des types de produits', content: new OA\JsonContent(type: 'array', items: new OA\Items(type: 'string')))]
#[Route]
'/types'
$name: 'types'
$methods: ['GET']
Return values
JsonResponse

Tableau JSON de chaînes correspondant aux types de produits.

list()

Retourne le catalogue des cartes visibles.

public list(CardRepository $cardRepository) : JsonResponse

Charge toutes les cartes dont isHide vaut false puis les sérialise via CardSerializerService::serializeCards(). Aucun filtre, aucune pagination et aucun tri explicite ne sont appliqués : la réponse est un tableau JSON brut.

Route : /api/cards (GET), nom api_cards_list.

Réponses : 200 systématiquement, avec la liste (éventuellement vide) des cartes.

Parameters
$cardRepository : CardRepository

Dépôt utilisé pour charger les cartes non masquées.

Attributes
#[Get]
$path: '/api/cards'
$description: 'Récupère la liste de toutes les cartes NFC disponibles (non cachées)'
$summary: 'Liste toutes les cartes disponibles'
$tags: ['Cards']
$responses: [new OA\Response(response: 200, description: 'Liste des cartes récupérée avec succès', content: new OA\JsonContent(type: 'array', items: new OA\Items(properties: [new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'name', type: 'string', example: 'Carte NFC Premium'), new OA\Property(property: 'price', type: 'string', example: '29.99'), new OA\Property(property: 'typeProduct', type: 'string', example: 'NFC'), new OA\Property(property: 'description', type: 'string', example: 'Carte de visite NFC premium'), new OA\Property(property: 'colorOptions', type: 'array', items: new OA\Items(properties: [new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'label', type: 'string', example: 'Noir'), new OA\Property(property: 'hexValue', type: 'string', example: '#000000'), new OA\Property(property: 'price', type: 'string', example: '0.00')])), new OA\Property(property: 'printOptions', type: 'array', items: new OA\Items(properties: [new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'label', type: 'string', example: 'Standard'), new OA\Property(property: 'price', type: 'string', example: '0.00'), new OA\Property(property: 'isDefault', type: 'boolean', example: true)])), new OA\Property(property: 'polices', type: 'array', items: new OA\Items(type: 'string')), new OA\Property(property: 'images', type: 'array', items: new OA\Items(type: 'string')), new OA\Property(property: 'specifications', type: 'array', items: new OA\Items(type: 'string'))])))]
#[Route]
''
$name: 'list'
$methods: ['GET']
Return values
JsonResponse

Tableau JSON d'objets carte (id, name, price, typeProduct, description, colorOptions, printOptions, polices, images, specifications).

show()

Retourne le détail d'une carte du catalogue.

public show(int $id, CardRepository $cardRepository) : JsonResponse

Recherche la carte par sa clé primaire. Une carte introuvable et une carte masquée (isHide = true) sont traitées de façon identique : toutes deux renvoient une 404, afin de ne pas divulguer l'existence des cartes retirées du catalogue.

Attention : cette route est déclarée avant /types et son paramètre {id} n'est contraint par aucune exigence, elle capte donc aussi les segments non numériques.

Route : /api/cards/{id} (GET), nom api_cards_show.

Réponses : 200 carte trouvée et visible, 404 carte inexistante ou masquée (corps {"error": "Carte non trouvée"}).

Parameters
$id : int

Identifiant de la carte, issu du chemin.

$cardRepository : CardRepository

Dépôt utilisé pour retrouver la carte.

Attributes
#[Get]
$path: '/api/cards/{id}'
$description: 'Récupère les détails d\'une carte spécifique'
$summary: 'Récupère une carte par son ID'
$tags: ['Cards']
$parameters: [new OA\Parameter(name: 'id', description: 'ID de la carte', in: 'path', required: true, schema: new OA\Schema(type: 'integer'))]
$responses: [new OA\Response(response: 200, description: 'Détails de la carte', content: new OA\JsonContent(properties: [new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'name', type: 'string', example: 'Carte NFC Premium'), new OA\Property(property: 'price', type: 'string', example: '29.99'), new OA\Property(property: 'typeProduct', type: 'string', example: 'NFC'), new OA\Property(property: 'description', type: 'string', example: 'Carte de visite NFC premium'), new OA\Property(property: 'colorOptions', type: 'array', items: new OA\Items(properties: [new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'label', type: 'string', example: 'Noir'), new OA\Property(property: 'hexValue', type: 'string', example: '#000000'), new OA\Property(property: 'price', type: 'string', example: '0.00')])), new OA\Property(property: 'printOptions', type: 'array', items: new OA\Items(properties: [new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'label', type: 'string', example: 'Standard'), new OA\Property(property: 'price', type: 'string', example: '0.00'), new OA\Property(property: 'isDefault', type: 'boolean', example: true)])), new OA\Property(property: 'polices', type: 'array', items: new OA\Items(type: 'string')), new OA\Property(property: 'images', type: 'array', items: new OA\Items(type: 'string')), new OA\Property(property: 'specifications', type: 'array', items: new OA\Items(type: 'string'))])), new OA\Response(response: 404, description: 'Carte non trouvée')]
#[Route]
'/{id}'
$name: 'show'
$methods: ['GET']
Return values
JsonResponse

Objet JSON décrivant la carte, ou message d'erreur.


        
On this page

Search results