You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Plateforme de billetterie de concerts permettant aux utilisateurs de rechercher, consulter et acheter des tickets, aux organisateurs de gérer leurs événements, et aux administrateurs de valider et modérer les contenus.
/ (Accueil)
├── /concerts → Liste des concerts
│ ├── /concerts/create → Créer un concert
│ └── /concerts/:id → Détail d'un concert + achat ticket
│
├── /tickets → Mes tickets
│ ├── Annuler un ticket
│ ├── Rembourser un ticket
│ └── Transférer un ticket
│
├── /admin → Tableau de bord admin
│ └── /admin/concerts → Gestion et validation des concerts
│ ├── /users → Gestion des utilisateurs
│ ├── /artists → Gestion des artistes
│ └── /organizers → Gestion des organisateurs
│
├── /users → Liste des utilisateurs
│ ├── /users/create → Créer un utilisateur
│ ├── /users/:id → Détails d'un utilisateur
│ └── /users/:id/edit → Modifier un utilisateur
│
├── /artists → Liste des artistes
│ ├── /artists/create → Créer un artiste
│ ├── /artists/:id → Détails d'un artiste
│ └── /artists/:id/edit → Modifier un artiste
│
└── /organizers → Liste des organisateurs
├── /organizers/create → Créer un organisateur
├── /organizers/:id → Détails d'un organisateur
└── /organizers/:id/edit → Modifier un organisateur
🗄️ DAO — Requêtes spéciales
JPQL
// Recherche multi-critères dans ConcertDaoSELECTDISTINCTcFROMConcertcLEFTJOINc.artistsaWHERELOWER(a.firstname) LIKE :qORLOWER(c.name) LIKE :q ...
// COUNT optimisé pour les statsSELECTCOUNT(c) FROMConcertcSELECTCOUNT(p) FROMPersonpWHERETYPE(p) = UserSELECTCOUNT(p) FROMPersonpWHERETYPE(p) = ArtistSELECTCOUNT(p) FROMPersonpWHERETYPE(p) = OrganizerSELECTCOUNT(t) FROMTickett
Requêtes nommées (@NamedQuery)
Concert.findByLocation// Concerts par lieuConcert.findValidated// Concerts validésConcert.findByDate// Concerts par dateConcert.findAllOrderByPopularity// Tri par popularitéConcert.findAllOrderByPrice// Tri par prixConcert.findAllOrderByDate// Tri par date
Criteria Query
// Concerts dont le prix est <= maxPriceCriteriaBuildercb = entityManager.getCriteriaBuilder();
cq.select(root).where(cb.lessThanOrEqualTo(root.get("price"), maxPrice));