Add Keycloak authentication for ETL users.
Configure ETL routes and login/logout functionality.
Integrate ETL with Keycloak SSO.
Update vite.config.js to include etl.js.
Create EtlController with home, login, and logout routes.
Implement EtlAuthenticator for email/password login.
Configure security.yaml for ETL firewall and providers.
Add etl.js and etl.scss for ETL frontend.
Add Keycloak client configuration for ETL.
Update PrestaireController to use absolute URL for login.
✨ feat(contrats): Améliore la gestion des contrats et des paiements.
- Rend le champ details non obligatoire dans add.twig
- Ajoute une valeur par défaut pour isSigned et type dans les entités.
- Corrige l'ajout des lignes et options au contrat.
- Ajoute la création automatique du client Stripe.
```
✨ feat(env): Met à jour les URLs ngrok pour l'environnement.
✨ feat(Prestaire): Ajoute contrainte d'unicité email et relations Contrats/OrderSession.
✨ feat(OrderSession): Ajoute une relation ManyToOne vers Prestaire.
✨ feat(Contrats): Ajoute une relation ManyToOne vers Prestaire.
🐛 fix(SignatureController): Corrige la création de contrat à partir du devis signé.
✨ feat(FlowController): Ajoute un sélecteur de prestataire à la session.
✨ feat(devis/list.twig): Ajoute une légende des actions dans la liste des devis.
✨ feat(ContratsController): Ajoute le prestataire au contrat lors de la génération.
✨ feat(SearchController): Ajoute la recherche de prestataires.
🐛 fix(SignatureClient): Corrige le stockage de l'ID de signature du devis.
✨ feat(base.twig): Ajoute un lien vers la liste des prestataires dans le menu.
✨ feat(PrestataireRepository): Ajoute une méthode de recherche par nom et email.
```
✨ feat(reservation/flow): Améliore le flux de réservation et ajoute des options.
Cette commit améliore le flux de réservation, ajoute une estimation des
frais de livraison et gère les options de produit et les paiements.
```
✨ feat(Product.php): Ajoute la liaison ManyToMany avec l'entité Options
✨ feat(Devis.php): Ajoute la propriété isNotAddCaution pour masquer la caution
♻️ refactor(.env): Met à jour les URLs de SIGN, STRIPE et CONTRAT
✨ feat(workflow.twig): Adapte le workflow et supprime l'étape de caution
✨ feat(NewDevisType.php): Ajoute un champ pour gérer
✨ feat(Product): Ajoute la publication des produits et les périodes bloquées
Ajoute la possibilité de publier ou masquer un produit.
Permet de bloquer des périodes pour un produit.
Corrige des bugs liés à la suppression des produits du panier.
Mise à jour de l'affichage du calendrier pour les blocages.
```
✨ feat(revervation): [Ajoute la création de session de réservation et le flow]
🐛 fix(PurgeCommandTest): [Utilise addCommand au lieu de add pour les commandes]
📝 chore(deps): [Mise à jour des dépendances Composer et corrections]
🐛 fix(KeycloakAuthenticator): [Corrige le type nullable de l'exception start]
✨ feat(Customer): [Ajoute les sessions de commandes aux entités Customer]
♻️ refactor(AppLogger): [Refactorise l'AppLogger pour obtenir l'UserAgent]
✨ feat(FlowReserve): [Ajoute une action de validation du panier]
```
✨ feat(Product.php): Ajoute les entités ProductPhotos et ProductVideo.
✨ feat(Product): Ajoute les collections photos et vidéos au produit.
🆕 feat(ProductPhotosType): Crée le formulaire d'upload des photos.
🆕 feat(ProductVideoType): Crée le formulaire d'upload des vidéos.
🎨 refactor(add.twig): Ajoute les formulaires et affichage des photos/vidéos.
🎨 refactor(produit.twig): Affiche les photos et vidéos sur la page produit.
♻️ refactor(vich_uploader.yaml): Ajoute les mappings pour photos et vidéos.
🐛 fix(ProductController): Gère l'ajout/suppression des photos et vidéos.
```
✨ feat(Formules): Ajoute champ 'pos' pour ordonner les formules.
🐛 fix(CrmEditor): Améliore la gestion du copier-coller et retire le toast d'erreur.
```
✨ feat(Prestaire.php): Implémente UserInterface et PasswordAuthenticatedUserInterface.
✨ feat(security): Ajoute firewall et authentificateur pour ETL.
✨ feat(EtlController.php): Ajoute contrôleur et routes pour ETL.
✨ feat(RedirecListener.php): Ajoute redirection pour etl.ludikevent.fr.
✏️ chore(caddy): Ajoute etl.ludikevent.fr à la configuration Caddy.
```
✨ feat(contrats): Ajoute détails option, actions paiements et style liste
Ajoute un champ détails pour les options de contrat, permet la validation
manuelle des paiements (accompte, caution, solde) et améliore le style
de la liste des contrats.
```
✨ feat(DevisController): Améliore la gestion et l'édition des devis
Corrige des bugs et améliore la création/édition des devis, incluant options et lignes, et la gestion des signatures.
```
✨ feat(Formules.php): Ajoute les propriétés de prix et la fonction slug.
✨ feat(ReserverController.php): Affiche les formules sur la page d'accueil.
♻️ refactor(Dashboard/FormulesController.php): Gère le statut et les prix.
✨ feat(templates/dashboard): Affiche les tarifs des formules.
```
✨ feat(Formules.php): Ajoute les champs description et isPublish à l'entité Formules.
✨ feat(add.twig): Ajoute le champ description au formulaire d'ajout de formules.
✨ feat(FormulesType.php): Ajoute le champ description au formulaire FormulesType.
✨ feat(Dashboard/FormulesController.php): Gère l'ajout, la suppression et la vue des formules.
✨ feat(view.twig): Crée la vue pour modifier les détails d'une formule.
✨ feat(formules.twig): Affiche la liste des formules avec actions et statut.
```
✨ feat(Product): Ajoute la relation avec l'entité FormulesProductInclus.
✨ feat(FormulesController): Crée le contrôleur pour gérer les formules.
✨ feat(templates): Ajoute le template pour afficher les formules dans le dashboard.
✨ feat(base.twig): Ajoute un lien vers la gestion des formules dans le menu.
⚙️ chore(vich_uploader): Configure vich uploader pour les images des formules.
```
✨ feat(SitePerformance): Ajoute la collecte des métriques web vitales.
🐛 fix(caddy): Corrige la redirection du script Trustpilot.
📦 chore: Ajoute web-vitals comme dépendance et adapte package.json.
```
✨ feat(UtmEvent): Ajoute le tracking Umami des utilisateurs connectés.
Ajoute l'identification des utilisateurs Umami et enregistre la session.
Implémente une bannière de consentement pour les cookies et gère l'état.
```
✨ feat(devis): Améliore la sélection des produits et options avec modales de recherche
Supprime la relation Product->DevisLine, ajoute des composants de recherche modale pour produits/options dans les devis.
```
✨ feat(contrat): Améliore l'affichage des contrats et ajoute suivi des paiements.
Cette commit améliore l'affichage des contrats dans le dashboard,
ajoute le suivi des paiements et corrige des bugs mineurs.
```
✨ feat(Product.php): Ajoute ProductDoc pour gérer les documents.
✨ feat(Contrats.php): Gère les fichiers du contrat via VichUploader.
✨ feat(templates): Crée template mail signature contrat.
✨ feat(SignatureController): Ajoute la signature du contrat.
✨ feat(ContratsController): Crée contrat depuis devis et liste contrats.
✨ feat(Client): Crée soumission contrat Docuseal.
✨ feat(DevisPdfService): Corrige l'assurance RC Pro.
✨ feat(.env): Ajoute CONTRAT_BASEURL.
✨ feat(ProductDocType): Crée formulaire pour les documents produit.
✨ feat(contrats/list.twig): Liste et actions pour les contrats.
✨ feat(UtmEvent.js): Track click document produit.
✨ feat(ContratEvent.php): Crée event pour envoi contrat.
✨ feat(admin.js): Initialise la recherche dynamique des contrats.
✨ feat(ContratPdfService): Génère le PDF du contrat DocuSeal.
✨ feat(products/add.twig): Ajoute gestion des documents produits.
✨ feat(ContratController): Crée controlleur contrat.
✨ feat(ContratSubscriber.php): Envoi du contrat par email.
✨ feat(reservation/produit.twig): Affiche les documents produit.
✨ feat(ProductController.php): Refactorisation et ajout des documents.
```
✨ feat(Devis): Ajoute options, dates début/fin et améliore affichage PDF
Ajoute les champs date de début et fin au devis. Permet l'ajout d'options au devis. Améliore l'affichage du PDF.
```
✨ feat(Devis.php): Ajoute liaison Options <-> Devis et méthode get/set.
✨ feat(options/add.twig): Ajoute template création/édition des options.
♻️ refactor(.env): Met à jour les URLs ngrok pour la synchro Stripe.
🐛 fix(StripeCommand.php): Corrige et améliore la synchro Stripe.
✨ feat(products.twig): Ajoute gestion et affichage des options.
✨ feat(Client.php): Ajoute gestion des options (CRUD) pour Stripe.
✨ feat(vich_uploader.yaml): Ajoute configuration pour upload images options.
✨ feat(ProductController.php): Gère les options (CRUD) dans le contrôleur.
✨ feat(OptionsType.php): Ajoute formulaire pour la gestion des options.
```
✨ feat(dashboard/contrats): Ajoute le formulaire de création de contrat
Ajoute le formulaire de création de contrat avec gestion des adresses, des détails techniques et des prestations.
```
➕ feat(contrats): Ajoute le formulaire de création de contrats.
📝 feat(Contrats): Crée le type de formulaire ContratsType.
✨ feat(Customer): Ajoute la relation one-to-many avec Contrats.
➕ feat(contrats): Ajoute la vue de création de contrats.
✨ feat(Product.php): Ajoute la relation avec ProductReserve.
✨ feat(DevisSubscriber.php): Crée un subscriber pour l'envoi de devis.
✨ feat(Devis.php): Ajoute la relation avec ProductReserve.
✨ feat: Crée le template de mail pour la notification de signature.
✨ feat(DevisSend.php): Crée l'événement DevisSend.
✨ feat(Customer.php): Ajoute la relation avec ProductReserve.
🐛 fix(SignatureController.php): Corrige la gestion de la signature complétée.
✨ feat(DevisController.php): Ajoute la relance de signature et pagination.
✨ feat: Crée le template de mail pour l'envoi du devis à signer.
✨ feat: Crée le template de mail pour la confirmation de signature.
✨ feat(Client.php): Gère la création et le suivi de la signature DocuSeal.
✨ feat(DevisPdfService.php): Intègre les champs Docuseal.
✨ feat(list.twig): Affiche la liste des devis avec actions et statuts.
✨ feat: Crée la page de succès de signature.
✨ feat(StripeExtension.php): Ajoute le filtre totalQuoto pour calculer le total HT.
```